""" Créer un utilisateur, recupérer ses infos, changer son mdp, le supprimer """

import random
# La variable context est définie par le script de lancement
# l'affecte ainsi pour évietr les warnins pylint:
context = context  # pylint: disable=undefined-variable
REQUEST = REQUEST  # pylint: disable=undefined-variable
import scotests.sco_fake_gen as sco_fake_gen  # pylint: disable=import-error
import ZScoUsers
import ZScoDoc
import ZScolar

nomdept = raw_input("Quel est le nom de votre département test? ATTENTION A NE PAS VOUS TROMPER : ")

# --- Création d'un utilisateur

arg = {"passwd": "scodocpass", "user_name" : "unutil", "nom" : "unnom", "prenom":"unprenom", 
      "email": "unemail@mail.fr", "roles" :"Ens"+nomdept+",RespPe"+nomdept}
#user1 = context.Users.create_user(args=arg, REQUEST=REQUEST)
user_info1 = context.Users.user_info(user_name="unutil")

assert user_info1["email"] == arg["email"]
assert user_info1["user_name"] == arg["user_name"]
assert user_info1["nom"] == "unnom"
assert user_info1["prenom"] == "unprenom"
assert user_info1["roles"] == arg["roles"]


# --- Récupération de la liste des Users

liste_xml = context.Users.get_userlist_xml(REQUEST=REQUEST)
print(liste_xml)

liste_user = context.Users.get_userlist()
len_liu1 = len(liste_user)

assert user_info1 in liste_user #le nouvel utilisateur est bien dans la liste !

# --- Récupérer user_name à partir de nomplogin

user_name1 = context.Users.get_user_name_from_nomplogin(nomplogin=user_info1["nomplogin"])
assert user_name1 == "unutil"

# --- Changement du mot de passe de l'utilisateur

context.Users.do_change_password(user_name="unutil", password="scodocpass2")
#vérification du mdp changé directement sur scodoc web car je ne trouve pas comment récupérer le mdp en python
#Vérification : ok!

# --- Supression d'un utilisateur

#context.Users.delete_user_form(REQUEST=REQUEST, user_name="unutil")

# --- Test de la récupération de l'URL

url = context.Users.UsersURL()
assert url == "ScoDoc/"+nomdept+"/Scolarite/Users"

""" 
Commentaire :

La supression d'un utilisateur ne fonctionne pas car nécessite l'envoie d'un formulaire.

"""