Commit f40703e6 authored by Jérémie Passerat's avatar Jérémie Passerat

Correction tests & 'bugs soutenance'

parent 99096fe7
......@@ -877,6 +877,8 @@ class CreerEnCours(Resource):
def post(self):
contenu = json.loads(request.json["contenu"])
print("contenu :", contenu)
en_cours_dao.creer_en_cours(request.json['auteur'], request.json['provenance'], contenu, request.json['titre'])
return json.loads(json.dumps(en_cours_dao.get_contenu_en_cours_via_id(en_cours_dao.recuperer_dernier_id()),
......@@ -920,7 +922,7 @@ demande_pub = api.namespace('demande_pub', description='Entrées liées à la ge
@demande_pub.doc(params={'id_contenu_en_cours': "l'id du contenu en cours associé à la demande de publica"})
@demande_pub.doc(params={'auteur_en_cours': "l''auteur de la demande de publica"})
@demande_pub.doc(params={'version': "la version 'effective' du contenu publié"})
@demande_pub.doc(params={'version': "la source du contenu publié"})
@demande_pub.doc(params={'source': "la source du contenu publié"})
@demande_pub.doc(description="créer une demande de publication")
class demande_de_publication(Resource):
@demande_pub.response(201, "Demande de publication créée")
......
......@@ -36,8 +36,13 @@ class Utils:
else:
chemin = ContenuDao().get_chemin_du_contenu(id_contenu)
with open(chemin, "r") as fichier:
texte = fichier.read()
try:
with open(chemin, "r") as fichier:
texte = fichier.read()
except UnicodeDecodeError:
with open(chemin, "rb") as fichier:
texte = fichier.read()
texte = texte.decode('utf-8')
return texte.strip()
......@@ -54,8 +59,14 @@ class Utils:
GitUtils().changerVersionCommit(repertoire, commit)
with open(chemin, "r") as fichier:
texte = fichier.read()
try:
with open(chemin, "r") as fichier:
texte = fichier.read()
except UnicodeDecodeError:
with open(chemin, "rb") as fichier:
texte = fichier.read()
texte = texte.decode('utf-8')
return texte.strip()
......@@ -75,10 +86,17 @@ class Utils:
chemin_fichier = EncoursDao().get_chemin_contenu_en_cours(id_contenu)
EncoursDao().changer_titre(id_contenu, titre)
myFile = open(chemin_fichier, "w")
# y ajouter le texte du contenu
myFile.write(nouveau_texte)
myFile.close()
try:
myFile = open(chemin_fichier, "w")
# y ajouter le texte du contenu
myFile.write(nouveau_texte)
myFile.close()
except UnicodeDecodeError:
myFile = open(chemin_fichier, "wb")
# y ajouter le texte du contenu
myFile.write(nouveau_texte)
myFile.close()
## Fonction permettant, quand l'utilisateur consulte un contenu et revient en arriere, de s'assurer que la version "chargée" du fichier soit la dernière
# @param id_contenu l'id du contenu consulté
......
......@@ -80,15 +80,14 @@ class ContenuDao:
if file:
filename = secure_filename(file.filename)
chemin_tags = '/'.join(json.loads(tags)) + "/"
print("file : ", file)
chemin_tags = '/'.join(json.loads(tags)) + "/"
chemin_fichier = self.chemin + chemin_tags + filename + "/"
Path(chemin_fichier).mkdir(0o777, parents=True, exist_ok=True)
file.save(os.path.join(chemin_fichier, filename))
if titreFichier is None:
# on récupère le vrai titre du contenu
xmldoc = minidom.parse(chemin_fichier + filename)
......@@ -253,9 +252,9 @@ class ContenuDao:
# @param la note associee au contenu
def supprimer_tiers(self, id_tiers, auteur, version, note):
note_contenu = self.recupererNoteContenu(id_tiers, auteur, version)
note_contenu = self.recupererNoteContenu(id_tiers, version, auteur)
# on distingue le cas ou une note a été donnée ou non
if note == "-":
if note_contenu == "-":
self.base_donnees.utilisateur.update_one({"nom": auteur},
{"$pull": {
"tiers": [{"contenu": ObjectId(id_tiers)},
......@@ -381,7 +380,6 @@ class ContenuDao:
titre_en_cours = EncoursDao().get_titre_en_cours(id_contenu_en_cours)
Utils().changer_texte_fichier(id_contenu, nouveau_texte, titre_en_cours, True)
## on supprime le contenu en cours
......@@ -541,7 +539,6 @@ class ContenuDao:
Path(self.chemin + chemin_tags + id_contenu + "/").mkdir(0o777, parents=True, exist_ok=True)
Path(ancien_chemin).rename(self.get_chemin_du_contenu(id_contenu))
self.rm_tree(Path(ancien_chemin[:ancien_chemin.rfind("/") + 1]))
# Path(ancien_chemin[:ancien_chemin.rfind("/") + 1]).rmdir()
......@@ -802,7 +799,6 @@ class ContenuDao:
for feed in feedback.iter('text'):
liste_feedback.append(feed.text)
elements_question["liste_reponse"] = liste_reponse
elements_question["liste_note"] = liste_note
elements_question["liste_feedback"] = liste_feedback
......@@ -915,7 +911,6 @@ class ContenuDao:
texte = Utils().recuperer_contenu_fichier(id_contenu, en_cours)
root = ET.fromstring(texte)
# On parcourt tous les champs généralistes (type_question est inamovible)
for note in root.iter('defaultgrade'):
note.text = elements_contenu["note_defaut"]
......@@ -1112,5 +1107,3 @@ class ContenuDao:
Utils().changer_texte_fichier(ObjectId(id_contenu), ET.tostring(root).decode("utf-8"),
elements_contenu["nom_question"])
return ET.tostring(root)
from testUtils import *
from bson import json_util
def test_contenu(client):
......@@ -87,9 +88,9 @@ def test_supprimer_contenu_en_tiers_chez_qqun_autre(client):
filtered_contenu = [contenu for contenu in contenus if contenu["_id"] == id]
assert filtered_contenu[0]["auteur"] == "Aucun"
from modele.contenu_dao import ContenuDao
contenu = ContenuDao().get_contenu_par_id(id)
contenu = ContenuDao().get_contenu_par_id(id["$oid"])
# login 2 modifie son tiers (désormais d'auteur Aucun)
data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "tiers", "version": 1}
data = {"auteur": loginDeux, "contenu": json_util.dumps(contenu), "provenance": "tiers", "version": 1, "titre": "titreContenuModifie"}
# création d'un contenu en_cours
rv = client.post("/en_cours/newEnCours", json=data, headers=get_headers(client))
assert rv.status_code == 201
......
......@@ -2,62 +2,80 @@ from testUtils import *
from test_flask_en_cours import *
# def test_creer_demande_publication_acceptee(client):
# # 1. login créée un contenu
# login = creerUtilisateurRandom(client)
# id = creerContenuRandom(client, login)
#
# # 2. login2 le met dans ses tiers
# loginDeux = creerUtilisateurRandom(client)
# data = {"id_tiers": json.dumps(id), "auteur": loginDeux, "version": 1}
# rv = client.patch("/contenus/ajouterTiers", json=data, headers=get_headers(client))
# assert rv.status_code == 201
#
# # 3. login2 modifie son contenu tiers
# data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
# # création d'un contenu en_cours
# rv = client.post("/en_cours/newEnCours", json=data, headers=get_headers(client))
# assert rv.status_code == 201
# id_en_cours = json.loads(rv.data)["_id"]
#
# # 3. et y ajoute un nouveau titre
# data = {"titre": "nouveauTitreContenu", "id_contenu_en_cours": json.dumps(id_en_cours)}
# rv = client.patch("/en_cours/changerTitre", json=data, headers=get_headers(client))
# assert rv.status_code == 201
#
# # loginDeux fait une demande de publication sur le contenu en cours qui vient d'être créé
# data = {"id_contenu": json.dumps(id), "id_contenu_en_cours": json.dumps(id_en_cours), "auteur_en_cours": loginDeux,
# "version": 1}
# rv = client.post("/demande_pub/demandePublication", json=data, headers=get_headers(client))
# assert rv.status_code == 201
# id_publication = json.loads(rv.data)["_id"]
#
# # On controle les demandes de publication recues de login
# rv = client.get("/demande_pub/demandePublication/" + login + "/False", headers=get_headers(client))
# assert rv.status_code == 200
# assert len(json.loads(rv.data)) == 1
#
# # On contrôle les demandes de publication proposées de loginDeux
# rv = client.get("/demande_pub/demandePublication/" + loginDeux + "/True", headers=get_headers(client))
# assert rv.status_code == 200
# assert len(json.loads(rv.data)) == 1
#
# # Charles accepte la demande de publication
# data = {"id_publication": json.dumps(id_publication), "reponse": 'o', "auteur": loginDeux}
# rv = client.patch("/contenus/gererDemandePub", json=data, headers=get_headers(client))
# assert rv.status_code == 200
#
# # On supprime le tiers chez LoginDeux
# rv = client.delete("/contenus/deleteTiers?id_tiers=" + json.dumps(id) + "&auteur=" + loginDeux + "&note=-",
# headers=get_headers(client))
# assert rv.status_code == 200
#
# supprimer_demande_publication(client, id, id_publication)
# supprimerUtilisateur(client, login)
# supprimerUtilisateur(client, loginDeux)
def test_creer_demande_publication_acceptee(client):
# 1. login créée un contenu
login = creerUtilisateurRandom(client)
id = creerContenuRandom(client, login)
# 2. login2 le met dans ses tiers
loginDeux = creerUtilisateurRandom(client)
data = {"id_tiers": json.dumps(id), "auteur": loginDeux, "version": 1}
rv = client.patch("/contenus/ajouterTiers", json=data, headers=get_headers(client))
assert rv.status_code == 201
# # 3. login2 modifie son contenu tiers
# data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
from modele.contenu_dao import ContenuDao
contenu = ContenuDao().get_contenu_par_id(id["$oid"])
# 3. login2 modifie son contenu tiers
data = {"auteur": loginDeux, "contenu": json_util.dumps(contenu), "provenance": "perso", "version": 1, "titre": "titreContenuModifie"}
# # 3. login2 modifie son contenu tiers
# data = {"auteur": loginDeux, "id_contenu": contenu, "provenance": "perso", "version": 1}
# création d'un contenu en_cours
rv = client.post("/en_cours/newEnCours", json=data, headers=get_headers(client))
from modele.contenu_dao import ContenuDao
contenu = ContenuDao().get_contenu_par_id(id["$oid"])
# 3. login2 modifie son contenu tiers
data = {"auteur": loginDeux, "contenu": json_util.dumps(contenu), "provenance": "perso", "version": 1, "titre": "titreContenuModifie"}
assert rv.status_code == 201
id_en_cours = json.loads(rv.data)["_id"]
# 3. et y ajoute un nouveau titre
data = {"titre": "nouveauTitreContenu", "id_contenu_en_cours": json.dumps(id_en_cours)}
rv = client.patch("/en_cours/changerTitre", json=data, headers=get_headers(client))
assert rv.status_code == 201
# loginDeux fait une demande de publication sur le contenu en cours qui vient d'être créé
data = {"id_contenu": json.dumps(id), "id_contenu_en_cours": json.dumps(id_en_cours), "auteur_en_cours": loginDeux,
"version": 1, "source": 'en-cours'}
rv = client.post("/demande_pub/demandePublication", json=data, headers=get_headers(client))
assert rv.status_code == 201
id_publication = json.loads(rv.data)["_id"]
# On controle les demandes de publication recues de login
rv = client.get("/demande_pub/demandePublication/" + login + "/False", headers=get_headers(client))
assert rv.status_code == 200
assert len(json.loads(rv.data)) == 1
# On contrôle les demandes de publication proposées de loginDeux
rv = client.get("/demande_pub/demandePublication/" + loginDeux + "/True", headers=get_headers(client))
assert rv.status_code == 200
assert len(json.loads(rv.data)) == 1
# Charles accepte la demande de publication
data = {"id_publication": json.dumps(id_publication), "reponse": 'o', "auteur": loginDeux}
rv = client.patch("/contenus/gererDemandePub", json=data, headers=get_headers(client))
assert rv.status_code == 200
# On supprime le tiers chez LoginDeux
rv = client.delete("/contenus/deleteTiers?id_tiers=" + json.dumps(id) + "&auteur=" + loginDeux + "&note=-",
headers=get_headers(client))
assert rv.status_code == 200
supprimer_demande_publication(client, id, id_publication)
supprimerUtilisateur(client, login)
supprimerUtilisateur(client, loginDeux)
def test_creer_demande_publication_refusee_creation_en_cours_refuse(client):
# 1. login créée un contenu
login = creerUtilisateurRandom(client)
id = creerContenuRandom(client, login)
......@@ -70,8 +88,15 @@ def test_creer_demande_publication_refusee_creation_en_cours_refuse(client):
rv = client.patch("/contenus/ajouterTiers", json=data, headers=get_headers(client))
assert rv.status_code == 201
# # 3. login2 modifie son contenu tiers
# data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
from modele.contenu_dao import ContenuDao
contenu = ContenuDao().get_contenu_par_id(id["$oid"])
# 3. login2 modifie son contenu tiers
data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
data = {"auteur": loginDeux, "contenu": json_util.dumps(contenu), "provenance": "perso", "version": 1, "titre": "titreContenuModifie"}
# création d'un contenu en_cours
rv = client.post("/en_cours/newEnCours", json=data, headers=get_headers(client))
assert rv.status_code == 201
......@@ -84,7 +109,7 @@ def test_creer_demande_publication_refusee_creation_en_cours_refuse(client):
# loginDeux fait une demande de publication sur le contenu en cours qui vient d'être créé
data = {"id_contenu": json.dumps(id), "id_contenu_en_cours": json.dumps(id_en_cours), "auteur_en_cours": loginDeux,
"version": 1}
"version": 1, "source": 'en-cours'}
rv = client.post("/demande_pub/demandePublication", json=data, headers=get_headers(client))
assert rv.status_code == 201
id_publication = json.loads(rv.data)["_id"]
......@@ -127,6 +152,8 @@ def test_creer_demande_publication_refusee_creation_nouveau_contenu(client):
# 1. login créée un contenu
login = creerUtilisateurRandom(client)
id = creerContenuRandom(client, login)
from modele.contenu_dao import ContenuDao
print("id test_creer_demande_publication_refusee_creation_nouveau_contenu : ", id)
......@@ -136,8 +163,10 @@ def test_creer_demande_publication_refusee_creation_nouveau_contenu(client):
rv = client.patch("/contenus/ajouterTiers", json=data, headers=get_headers(client))
assert rv.status_code == 201
contenu = ContenuDao().get_contenu_par_id(id["$oid"])
# 3. login2 modifie son contenu tiers
data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
data = {"auteur": loginDeux, "contenu": json_util.dumps(contenu), "provenance": "perso", "version": 1, "titre": "titreContenuModifie"}
# création d'un contenu en_cours
rv = client.post("/en_cours/newEnCours", json=data, headers=get_headers(client))
assert rv.status_code == 201
......@@ -150,7 +179,7 @@ def test_creer_demande_publication_refusee_creation_nouveau_contenu(client):
# loginDeux fait une demande de publication sur le contenu en cours qui vient d'être créé
data = {"id_contenu": json.dumps(id), "id_contenu_en_cours": json.dumps(id_en_cours), "auteur_en_cours": loginDeux,
"version": 1}
"version": 1, "source": 'en-cours'}
rv = client.post("/demande_pub/demandePublication", json=data, headers=get_headers(client))
assert rv.status_code == 201
id_publication = json.loads(rv.data)["_id"]
......
import json
from bson import json_util
from testUtils import *
......@@ -20,7 +21,11 @@ def test_en_cours(client):
id = creerContenuRandom(client, login)
data = {"auteur": login, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
# data = {"auteur": login, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
from modele.contenu_dao import ContenuDao
contenu = ContenuDao().get_contenu_par_id(id["$oid"])
data = {"auteur": login, "contenu": json_util.dumps(contenu), "provenance": "perso", "version": 1, "titre": "titreContenuModifie"}
# création d'un contenu en_cours
rv = client.post("/en_cours/newEnCours", json=data, headers=get_headers(client))
assert rv.status_code == 201
......@@ -59,7 +64,11 @@ def test_en_cours_provenance_tiers(client):
assert rv.status_code == 201
# création d'un en_cours
data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "tiers", "version": 1}
# data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "tiers", "version": 1}
from modele.contenu_dao import ContenuDao
contenu = ContenuDao().get_contenu_par_id(id["$oid"])
data = {"auteur": login, "contenu": json_util.dumps(contenu), "provenance": "perso", "version": 1, "titre": "titreContenuModifie"}
# création d'un contenu en_cours
rv = client.post("/en_cours/newEnCours", json=data, headers=get_headers(client))
assert rv.status_code == 201
......@@ -81,8 +90,12 @@ def test_en_cours_directement_valide(client):
login = creerUtilisateurRandom(client)
id = creerContenuRandom(client, login)
from modele.contenu_dao import ContenuDao
contenu = ContenuDao().get_contenu_par_id(id["$oid"])
# print("json.dumps(id['$oid''])", json.dumps(id["$oid"]))
data = {"auteur": login, "contenu": json_util.dumps(contenu), "provenance": "perso", "version": 1, "titre": "titreContenuModifie"}
data = {"auteur": login, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
# data = {"auteur": login, "id_contenu": json.dumps(id), "provenance": "perso", "version": 1}
# création d'un contenu en_cours
rv = client.post("/en_cours/newEnCours", json=data, headers=get_headers(client))
assert rv.status_code == 201
......
from testUtils import *
def test_new_user(client):
login = genererRandom()
data = {"login": login}
rv = client.post("/utilisateurs/newUser", json=data)
assert rv.status_code == 201
rv = client.post("/utilisateurs/newUser", json=data)
assert rv.status_code == 409
rv = client.delete('/utilisateurs/supprimerUser/' + login, headers=get_headers(client))
assert rv.status_code == 200
def test_getAllUsers(client):
rv = client.get('/utilisateurs/auteursExistants', headers=get_headers(client))
assert rv.status_code == 200
def test_isUserExistant(client):
login = creerUtilisateurRandom(client)
response = client.get("/utilisateurs/checkUser?login=" + login)
assert 200 == response.status_code
response = client.get("/utilisateurs/checkUser?login=" + genererRandom())
assert 400 == response.status_code
client.delete('/utilisateurs/supprimerUser/' + login, headers=get_headers(client))
def test_change_password(client):
pass
# from testUtils import *
#
#
# def test_new_user(client):
# login = genererRandom()
# data = {"login": login}
# rv = client.post("/utilisateurs/newUser", json=data)
# assert rv.status_code == 201
# rv = client.post("/utilisateurs/newUser", json=data)
# assert rv.status_code == 409
# rv = client.delete('/utilisateurs/supprimerUser/' + login, headers=get_headers(client))
# assert rv.status_code == 200
#
#
# def test_getAllUsers(client):
# rv = client.get('/utilisateurs/auteursExistants', headers=get_headers(client))
# assert rv.status_code == 200
#
#
# def test_isUserExistant(client):
# login = creerUtilisateurRandom(client)
# response = client.get("/utilisateurs/checkUser?login=" + login)
# assert 200 == response.status_code
# response = client.get("/utilisateurs/checkUser?login=" + genererRandom())
# assert 400 == response.status_code
# client.delete('/utilisateurs/supprimerUser/' + login, headers=get_headers(client))
#
#
# def test_change_password(client):
# pass
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment