def test_objet_get(self): '''Un webmestre peut lire les objets''' r = self.s.get(spip_api_path('objet/article/1')) self.assertEqual(r.status_code, 200) self.assertIn('titre', r.json()) self.assertIn('texte', r.json())
def test_lien_get(self): '''Un webmestre peut lire les liens''' r = self.s.get(spip_api_path('lien/auteur/1/article/1')) self.assertEqual(r.status_code, 200) self.assertIn('id_auteur', r.json()) self.assertIn('vu', r.json()) self.assertIn('id_objet', r.json()) self.assertIn('objet', r.json())
def test_objet_post(self): '''Les requêtes POST sont interdites aux anonymes''' article = { 'titre': 'Un nouvel article', 'texte': "Je suis un article de test", 'statut': 'publie' } r = self.s.post(spip_api_path('objet/article'), data=article) self.assertEqual(r.status_code, 403) self.assertIn('erreur', r.json())
def test_lien_post(self): '''Un webmestre peut créer, éditer et supprimer des liens.''' r = self.s.post(spip_api_path('lien/auteur/2/article/1')) self.assertEqual(r.status_code, 200) # POST retourne une url vers le lien nouvellement créé self.assertIn('redirect', r.json()) r = self.s.get(r.json()['redirect']) # On peut suivre ce lien pour récupérer les données complète du lien self.assertEqual(r.status_code, 200) self.assertIn('id_auteur', r.json()) self.assertIn('vu', r.json()) self.assertIn('id_objet', r.json()) self.assertIn('objet', r.json()) # On peut effacer ce lien r = self.s.delete(spip_api_path('lien/auteur/2/article/1')) self.assertEqual(r.status_code, 200) self.assertIn('ok', r.json()) # Demander le lien effacé ne retourne rien r = self.s.get(spip_api_path('lien/auteur/2/article/1')) self.assertEqual(r.status_code, 404) self.assertIn('erreur', r.json())
def test_objet_post(self): '''Un webmestre peut créer, éditer et supprimer des objets.''' article = { 'titre': 'Un nouvel article', 'texte': "Je suis un article de test", 'statut': 'publie' } r = self.s.post(spip_api_path('objet/article'), data=article) self.assertEqual(r.status_code, 200) # POST retourne un lien vers l'objet nouvellement créé self.assertIn('redirect', r.json()) r = self.s.get(r.json()['redirect']) # On peut suivre ce lien pour récupérer les données complète de l'objet self.assertEqual(r.status_code, 200) self.assertEqual(r.json()['titre'], 'Un nouvel article') id_objet = r.json()['id_article'] # On peut éditer cet objet modifs = {'titre': 'Un nouveau titre pour cet article'} r = self.s.post(spip_api_path('objet/article/' + id_objet), data=modifs) self.assertEqual(r.status_code, 200) self.assertIn('redirect', r.json()) # le lien de redirection pointe vers le bon objet self.assertEqual(r.json()['redirect'], spip_api_path('objet/article/' + id_objet)) # l'édition a bien eu lieu r = self.s.get(r.json()['redirect']) self.assertEqual(r.json()['titre'], 'Un nouveau titre pour cet article') # On peut effacer cet objet r = self.s.delete(spip_api_path('objet/article/' + id_objet)) self.assertEqual(r.status_code, 200) self.assertIn('ok', r.json()) # Demander l'objet effacé ne retourne rien r = self.s.get(spip_api_path('objet/article/' + id_objet)) self.assertEqual(r.status_code, 404) self.assertIn('erreur', r.json())
def test_objet_post(self): '''Un webmestre peut créer, éditer et supprimer des objets.''' article = { 'titre': 'Un nouvel article', 'texte': "Je suis un article de test", 'statut': 'publie' } r = self.s.post(spip_api_path('objet/article'), data=article) self.assertEqual(r.status_code, 200) # POST retourne un lien vers l'objet nouvellement créé self.assertIn('redirect', r.json()) r = self.s.get(r.json()['redirect']) # On peut suivre ce lien pour récupérer les données complète de l'objet self.assertEqual(r.status_code, 200) self.assertEqual(r.json()['titre'], 'Un nouvel article') id_objet = r.json()['id_article'] # On peut éditer cet objet modifs = { 'titre': 'Un nouveau titre pour cet article' } r = self.s.post(spip_api_path('objet/article/' + id_objet), data=modifs) self.assertEqual(r.status_code, 200) self.assertIn('redirect', r.json()) # le lien de redirection pointe vers le bon objet self.assertEqual(r.json()['redirect'], spip_api_path('objet/article/' + id_objet)) # l'édition a bien eu lieu r = self.s.get(r.json()['redirect']) self.assertEqual(r.json()['titre'], 'Un nouveau titre pour cet article') # On peut effacer cet objet r = self.s.delete(spip_api_path('objet/article/' + id_objet)) self.assertEqual(r.status_code, 200) self.assertIn('ok', r.json()) # Demander l'objet effacé ne retourne rien r = self.s.get(spip_api_path('objet/article/' + id_objet)) self.assertEqual(r.status_code, 404) self.assertIn('erreur', r.json())
def test_rejete_ressources_invalides(self): r = self.s.get(spip_api_path('ressource-invalide')) self.assertEqual(r.status_code, 403) self.assertIn('erreur', r.json())
def test_objet_delete(self): '''Les requêtes DELETE sont interdites aux anonymes''' r = self.s.delete(spip_api_path('objet/article/1')) self.assertEqual(r.status_code, 403) self.assertIn('erreur', r.json())
def test_dit_bonjour(self): r = self.s.get(spip_api_path('')) self.assertEqual(r.status_code, 403) self.assertIn('erreur', r.json())
def test_rejete_verbes_invalides(self): r = self.s.options(spip_api_path('lien/auteur/1/article/1')) self.assertEqual(r.status_code, 403) self.assertIn('erreur', r.json())
def test_dit_bonjour(self): r = self.s.get(spip_api_path('')) self.assertEqual(r.status_code, 200) self.assertIn('message', r.json())
def test_lien_get(self): '''Les requêtes GET sont interdites aux anonymes''' r = self.s.get(spip_api_path('lien/auteur/1/article/1')) self.assertEqual(r.status_code, 403) self.assertIn('erreur', r.json())