On utilisera la classe GestAjoutUsers.java On implémentera les méthodes de test dans GestAjoutUsersTest.java

La méthode genUid est au service de la méthode addUser et aurait pu être privée. C’est pour des raisons pédagogiques que nous l’avons rendue publique, afin de permettre de nous concentrer directement sur cette responsabilité. Concevoir au minimum un test unitaire par ligne de spécification (définies ci-dessous). Ne passer au développement du test suivant seulement si tous les tests présents passent avec succès.

  1. L’uid obtenu est tout en minuscule
  2. L’uid obtenu est composé au minimum de 5 caractères et maximum de 9 (première lettre du prénom suivi de premières lettres du nom – si possible)
  3. L’uid ne contient pas de caractères indésirables ({}/~…) ni accent ou apostrophe, guillemet (conseil : faire une proposition dans une logique inverse)
  4. L’ajout de plus d’un utilisateur avec même nom et même première lettre de prénom génère
  5. des logins différents (on passera la méthode addUser du statut de procédure à celui de
  6. fonction : elle retournera la valeur de référence à l’objet User créé – donc la valeur de
  7. retour sera User et non void). La méthode à tester est addUser.
  8. La méthode genPassword respecte bien le nombre de caractères attendu
  9. La méthode genPassword donne des valeurs différentes à chaque appel (dans les limites des algorithmes déterministes utilisés et du nombre de caractères souhaités…)

Exemple de données de test :

Prénom Nom
Paul Dupont
Pierre Dupont
Patrick Dupont
Patricia Dupont
Paul Dupont
Pauline Dupont
Pascal Dupont
Pierre-Alain Dupont
P'nam Dupont
Paul Dupont
Patrick-Jean-Max Dupont
Ly Ba
Alan N'Guyen
Abû Ja`far Muhammad Mūsā Khwārezmī
Phil Zimmerman
Richard Stallman
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import sun.rmi.runtime.Log;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class GestAjoutUsers {


    private String fileName;
    private Map<String, User> lesUsers;


    public GestAjoutUsers(String fileName) throws IOException {
        this.fileName = fileName;
        this.lesUsers = new HashMap<String, User>();

    }



    public User addUser(String firstname, String name) {
        String login = genUid(firstname, name);
        String pw = genPassword(8);
        User user = new User(firstname, name, login, pw);
        lesUsers.put(login, user);

        return user;
    }


    public String toString() {
        StringBuffer res = new StringBuffer();
        res.append("<?xml version='1.0' ?>\n");
        res.append("<users>\n");

        Iterator<User> users = lesUsers.values().iterator();

        while (users.hasNext()) {
            res.append(users.next());
            res.append("\n");
        }

        res.append("</users>");
        return res.toString();
    }


    public String genUid(String firstname, String name) {
        String uid = firstname + name;
        return uid;
    }

    public String genPassword(int givenLen) {
        return "123";
    }

}
public class User {

	private String prenom;
	private String nom;
	private String login;
	private String pw;

	public User() {
		super();
	}
 
	public User(String prenom, String nom, String login, String pw) {
		this.prenom=prenom;
		this.nom=nom;
		this.login=login;
		this.pw=pw;
	}
	
	public String toString(){
		StringBuffer res = new StringBuffer();
		res.append("<user>");
		res.append("<prenom>");
		res.append(this.prenom);
		res.append("</prenom>");
		res.append("<nom>");
		res.append(this.nom);
		res.append("</nom>");
		res.append("<uid>");
		res.append(this.login);
		res.append("</uid>");
		res.append("<pw>");
		res.append(this.pw);
		res.append("</pw>");
		res.append("</user>");
		return res.toString();		
	}

	public String getLogin() {
		return this.login;
	}
}