""" 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_user_list_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.

"""