Example #1
0
    def test_add_document(self):
        self.assert401("/api/1.0/documents/add", data={}, method="POST")
        self.assert403("/api/1.0/documents/add",
                       data={},
                       method="POST",
                       **STU1_USER)

        r = self.get("/api/1.0/documents")
        self.assertEqual(0, len(json_loads(r.data)["data"]))

        self.post_with_auth(
            "/api/1.0/documents/add",
            data={"data": {
                "title": "Title1",
                "subtitle": "Subtitle1"
            }},
            **PROF1_USER)
        r = self.get("/api/1.0/documents")
        self.assertEqual(1, len(json_loads(r.data)["data"]))

        self.post_with_auth(
            "/api/1.0/documents/add",
            data={"data": {
                "title": "Title1",
                "subtitle": "Subtitle1"
            }},
            **ADMIN_USER)
        r = self.get("/api/1.0/documents")
        self.assertEqual(2, len(json_loads(r.data)["data"]))
Example #2
0
    def test_get_current_user(self):
        self.assert401("/api/1.0/user")

        r = self.get_with_auth("/api/1.0/user", **ADMIN_USER)
        self.assertEqual("AdminJulien", json_loads(r.data)["data"][0]["username"])
        r = self.get_with_auth("/api/1.0/user", **PROF1_USER)
        self.assertEqual("Professeur1", json_loads(r.data)["data"][0]["username"])
Example #3
0
    def test_change_documents_closing_date(self):
        self.load_fixtures(self.FIXTURES)
        self.assert401("/api/1.0/documents/20/close", data={}, method="POST")
        self.assert403("/api/1.0/documents/20/close",
                       data={},
                       method="POST",
                       **STU1_USER)
        self.assert403("/api/1.0/documents/20/close",
                       data={},
                       method="POST",
                       **PROF2_USER)

        r = self.post_with_auth("/api/1.0/documents/20/close",
                                data={"data": {
                                    "closing_date": "15/10/2087"
                                }},
                                **PROF1_USER)

        self.assertEqual('2087-10-15 00:00:00',
                         json_loads(r.data)["data"]["date_closing"])

        r = self.post_with_auth("/api/1.0/documents/20/close",
                                data={"data": {}},
                                **ADMIN_USER)
        self.assertIsNone(json_loads(r.data)["data"]["date_closing"])
Example #4
0
    def test_change_document_whitelist(self):
        self.load_fixtures(self.FIXTURES)
        self.assert401("/api/1.0/documents/20/whitelist",
                       data={},
                       method="POST")
        self.assert403("/api/1.0/documents/20/whitelist",
                       data={},
                       method="POST",
                       **STU1_USER)
        self.assert403("/api/1.0/documents/20/whitelist",
                       data={},
                       method="POST",
                       **PROF2_USER)

        r = self.post_with_auth("/api/1.0/documents/20/whitelist",
                                data={"data": {
                                    "whitelist_id": 1
                                }},
                                **PROF1_USER)

        self.assertEqual(1, json_loads(r.data)["data"]["whitelist"]["id"])

        r = self.post_with_auth("/api/1.0/documents/20/whitelist",
                                data={"data": {}},
                                **ADMIN_USER)
        self.assertIsNone(json_loads(r.data)["data"]["whitelist"])
Example #5
0
    def test_list_document(self):
        self.post_with_auth(
            "/api/1.0/documents/add",
            data={"data": {
                "title": "Title1",
                "subtitle": "Subtitle1"
            }},
            **PROF1_USER)
        r = self.get("/api/1.0/documents")
        self.assertEqual(1, len(json_loads(r.data)["data"]))

        self.post_with_auth(
            "/api/1.0/documents/add",
            data={"data": {
                "title": "Title2",
                "subtitle": "Subtitle2"
            }},
            **ADMIN_USER)

        self.post_with_auth(
            "/api/1.0/documents/add",
            data={"data": {
                "title": "Title3",
                "subtitle": "Subtitle3"
            }},
            **ADMIN_USER)

        r = self.get("/api/1.0/documents")
        self.assertEqual(3, len(json_loads(r.data)["data"]))

        self.delete_with_auth("/api/1.0/documents/3", **ADMIN_USER)
        r = self.get("/api/1.0/documents")
        self.assertEqual(2, len(json_loads(r.data)["data"]))
Example #6
0
    def test_get_institutions(self):
        self.assert404("/api/1.0/institutions/100")

        r = self.assert200('/api/1.0/institutions')
        r = json_loads(r.data)["data"]
        self.assertEqual(15, len(r))

        r = self.assert200('/api/1.0/institutions/12')
        r = json_loads(r.data)["data"]
        self.assertEqual("Collection privée", r[0]["name"])
Example #7
0
    def test_get_traditions(self):
        self.assert404("/api/1.0/traditions/tradi")

        r = self.assert200('/api/1.0/traditions')
        r = json_loads(r.data)["data"]
        self.assertEqual(7, len(r))

        r = self.assert200('/api/1.0/traditions/cartulaire')
        r = json_loads(r.data)["data"]
        self.assertEqual("cartulaire", r[0]["id"])
Example #8
0
    def test_get_countries(self):
        self.assert404("/api/1.0/countries/100")

        r = self.assert200('/api/1.0/countries')
        r = json_loads(r.data)["data"]
        self.assertEqual(4, len(r))

        r = self.assert200('/api/1.0/countries/1')
        r = json_loads(r.data)["data"]
        self.assertEqual("France", r[0]["label"])
Example #9
0
    def test_get_acte_types(self):
        self.assert404("/api/1.0/acte-types/100")

        r = self.assert200('/api/1.0/acte-types')
        r = json_loads(r.data)["data"]
        self.assertEqual(21, len(r))

        r = self.assert200('/api/1.0/acte-types/19')
        r = json_loads(r.data)["data"]
        self.assertEqual(19, r[0]["id"])
    def test_get_speech_part_types(self):
        self.assert404("/api/1.0/speech-part-types/100")

        r = self.assert200('/api/1.0/speech-part-types')
        r = json_loads(r.data)["data"]
        self.assertEqual(10, len(r))

        r = self.assert200('/api/1.0/speech-part-types/10')
        r = json_loads(r.data)["data"]
        self.assertEqual(10, r[0]["id"])
Example #11
0
    def test_get_languages(self):
        self.assert404("/api/1.0/languages/azaza")

        r = self.assert200('/api/1.0/languages')
        r = json_loads(r.data)["data"]
        self.assertEqual(3, len(r))

        r = self.assert200('/api/1.0/languages/fre')
        r = json_loads(r.data)["data"]
        self.assertEqual("fre", r[0]["code"])
Example #12
0
    def test_get_commentary_types(self):
        self.assert404("/api/1.0/commentary-types/100")

        r = self.assert200('/api/1.0/commentary-types')
        r = json_loads(r.data)["data"]
        self.assertEqual(6, len(r))

        r = self.assert200('/api/1.0/commentary-types/2')
        r = json_loads(r.data)["data"]
        self.assertEqual(2, r[0]["id"])
Example #13
0
    def test_get_editors(self):
        self.assert404("/api/1.0/editors/100")

        r = self.assert200('/api/1.0/editors')
        r = json_loads(r.data)["data"]
        self.assertEqual(1, len(r))

        r = self.assert200('/api/1.0/editors/1')
        r = json_loads(r.data)["data"]
        self.assertEqual(1, r[0]["id"])
Example #14
0
    def test_get_districts(self):
        self.assert404("/api/1.0/districts/100")
        self.assert404("/api/1.0/districts/from-country/100")

        r = self.assert200('/api/1.0/districts/from-country/1')
        r = json_loads(r.data)["data"]
        self.assertEqual(20, len(r))

        r = self.assert200('/api/1.0/districts/8/from-country/1')
        r = json_loads(r.data)["data"]
        self.assertEqual("Limousin", r[0]["label"])
Example #15
0
    def test_get_transcriptions_reference(self):
        self.load_fixtures(TestTranscriptionsAPI.FIXTURES)

        # doc without transcription
        self.assert404("/api/1.0/documents/21/transcriptions")
        self.assert404("/api/1.0/documents/21/transcriptions", **STU1_USER)
        self.assert404("/api/1.0/documents/21/transcriptions", **PROF1_USER)

        # access a validated transcription
        self.load_fixtures(TestTranscriptionsAPI.FIXTURES_PROF)
        self.load_fixtures(TestTranscriptionsAPI.FIXTURES_STU1)

        self.assert200("/api/1.0/documents/21/validate-transcription",
                       **PROF1_USER)
        r = self.assert200("/api/1.0/documents/21/transcriptions",
                           **PROF1_USER)
        r = json_loads(r.data)['data']
        self.assertEqual(
            '<p>Om<ex>n</ex>ib<ex>us</ex> p<ex>re</ex>sentes litt<ex>er</ex>as inspectur<ex>is</ex></p>',
            r['content'])
        self.assertEqual(21, r['doc_id'])
        self.assertEqual(4, r['user_id'])
        self.assertEqual(3, len(r['notes']))

        # test that notes ptr return the expected text fragment from the transcription
        expected_fragments = ['Om', 'n', 'ib']
        for i, note in enumerate(r['notes']):
            self.assertPtr(r['content'], note['ptr_start'], note['ptr_end'],
                           expected_fragments[i])

        # available to everybody
        self.assert200("/api/1.0/documents/21/transcriptions")
        self.assert200("/api/1.0/documents/21/transcriptions", **STU1_USER)
Example #16
0
    def test_clone_translation(self):
        self.load_fixtures(TestTranslationsAPI.FIXTURES)
        # access a validated transcription
        self.load_fixtures(TestTranslationsAPI.FIXTURES_PROF)
        self.assert200("/api/1.0/documents/21/transcriptions/from-user/4",
                       **PROF1_USER)

        self.assert404(
            "/api/1.0/documents/21/transcriptions/clone/from-user/100",
            **PROF1_USER)
        self.assert404(
            "/api/1.0/documents/2132/transcriptions/clone/from-user/100",
            **PROF1_USER)

        # clone student 2 tr
        self.load_fixtures(TestTranslationsAPI.FIXTURES_STU2)
        self.assert200("/api/1.0/documents/21/transcriptions/from-user/7",
                       **PROF1_USER)
        self.assert200(
            "/api/1.0/documents/21/transcriptions/clone/from-user/7",
            **PROF1_USER)

        # check the prof content is cloned from stu 2
        r = self.assert200("/api/1.0/documents/21/transcriptions/from-user/4",
                           **PROF1_USER)
        r = json_loads(r.data)['data']

        self.assertEqual("transcription stu2", r["content"])
        self.assertEqual('<p>NOTE 1 STU2</p>', r['notes'][0]['content'])
        self.assertEqual('<p>NOTE 2 STU2</p>', r['notes'][1]['content'])
Example #17
0
    def test_post_document(self):
        self.load_fixtures(self.FIXTURES)
        self.assert403("/api/1.0/documents",
                       data={"data": {}},
                       method="POST",
                       **STU1_USER)

        self.post_with_auth("/api/1.0/documents",
                            data={
                                "data": {
                                    "title": "My new title",
                                    "subtitle": "My new subtitle",
                                    "argument": "<p>L’infante Urra</p>",
                                    "creation": 1400,
                                    "creation_lab": "1400",
                                    "copy_year": "[1409-1420 ca.]",
                                    "copy_cent": 15,
                                    "institution_id": 1,
                                    "pressmark": "J 340, n° 21",
                                    "editor_id": [1, 2],
                                    "country_id": [1, 2, 3],
                                    "district_id": [1, 2, 3],
                                    "acte_type_id": [1],
                                    "language_code": "fro",
                                    "tradition_id": [1],
                                    "linked_document_id": [20]
                                }
                            },
                            **ADMIN_USER)

        resp = self.get("/api/1.0/documents/21")
        r = json_loads(resp.data)
        self.assertEqual(21, r["data"]["id"])
        self.assertEqual(1, r["data"]["user_id"])
Example #18
0
    def test_get_whitelist(self):
        self.assert404("/api/1.0/whitelists/100", **PROF1_USER)
        self.assert403("/api/1.0/whitelists/1", **STU1_USER)
        self.assert401("/api/1.0/whitelists/1")

        r = self.get_with_auth("/api/1.0/whitelists/1", **PROF1_USER)
        self.assertEqual("Master 1 TNAH 2018", json_loads(r.data)["data"][0]["label"])
    def test_delete_alignment_for_user(self):
        self.assert403(
            "/api/1.0/documents/21/transcriptions/alignments/from-user/5",
            method="DELETE",
            **STU2_USER)
        self.assert401(
            "/api/1.0/documents/21/transcriptions/alignments/from-user/5",
            method="DELETE")
        self.assert404(
            "/api/1.0/documents/21/transcriptions/alignments/from-user/5",
            method="DELETE",
            **STU1_USER)

        self.load_fixtures(TestAlignmentTranslationAPI.FIXTURES)
        self.load_fixtures(
            TestAlignmentTranslationAPI.FIXTURES_TRANSLATION_STU1)

        self.assert200("/api/1.0/documents/21/validate-transcription",
                       **PROF1_USER)
        self.load_fixtures(TestAlignmentTranslationAPI.FIXTURES_ALIGNMENT_STU1)

        r = self.assert200(
            "/api/1.0/documents/21/transcriptions/alignments/from-user/5",
            **PROF1_USER)
        r = json_loads(r.data)['data']
        self.assertEqual(5, len(r))

        self.assert200(
            "/api/1.0/documents/21/transcriptions/alignments/from-user/5",
            method="DELETE",
            **STU1_USER)
        r = self.assert200(
            "/api/1.0/documents/21/transcriptions/alignments/from-user/5",
            **PROF1_USER)
        r = json_loads(r.data)['data']
        self.assertEqual(0, len(r))

        self.load_fixtures(TestAlignmentTranslationAPI.FIXTURES_ALIGNMENT_STU1)
        self.assert200(
            "/api/1.0/documents/21/transcriptions/alignments/from-user/5",
            method="DELETE",
            **PROF1_USER)
        r = self.assert200(
            "/api/1.0/documents/21/transcriptions/alignments/from-user/5",
            **PROF1_USER)
        r = json_loads(r.data)['data']
        self.assertEqual(0, len(r))
Example #20
0
    def test_api_post_country(self):
        self.assert401("/api/1.0/countries",
                       data={"data": [{}]},
                       method="POST")
        self.assert403("/api/1.0/countries",
                       data={"data": [{}]},
                       method="POST",
                       **STU1_USER)
        self.assert400("/api/1.0/countries",
                       data={"data": [{
                           "champ bidon": 100
                       }]},
                       method="POST",
                       **ADMIN_USER)

        self.assert200("/api/1.0/countries",
                       data={
                           "data": [{
                               "id": 500,
                               "label": "ACTE-TYPT-500",
                               "ref": "DESC-500"
                           }]
                       },
                       method="POST",
                       **ADMIN_USER)

        r = self.assert200('/api/1.0/countries/500')
        r = json_loads(r.data)["data"]
        self.assertEqual(500, r[0]["id"])

        # post conflicting data
        self.assert400("/api/1.0/countries",
                       data={
                           "data": [{
                               "id": 500,
                               "label": "ACTE-TYPT-500",
                               "ref": "DESC-500"
                           }]
                       },
                       method="POST",
                       **ADMIN_USER)

        # post multiple data
        self.assert200("/api/1.0/countries",
                       data={
                           "data": [{
                               "id": 501,
                               "label": "ACTE-TYPT-501",
                               "ref": "DESC-501"
                           }, {
                               "id": 502,
                               "label": "ACTE-TYPT-502",
                               "ref": "DESC-502"
                           }]
                       },
                       method="POST",
                       **PROF1_USER)
        self.assert200('/api/1.0/countries/501')
        self.assert200('/api/1.0/countries/502')
Example #21
0
    def test_get_user_from_id(self):
        self.assert401("/api/1.0/users/1")
        self.assert404("/api/1.0/users/100", **ADMIN_USER)
        self.assert403("/api/1.0/users/100", **STU1_USER)

        r = self.assert401("/api/1.0/users/1")
        r = self.get_with_auth("/api/1.0/users/4", **PROF1_USER)
        self.assertEqual("Professeur1", json_loads(r.data)["data"][0]["username"])
Example #22
0
    def test_get_document(self):
        self.load_fixtures(self.FIXTURES)

        # document not found
        self.assert404("/api/1.0/documents/999")
        # document found
        resp = self.get("/api/1.0/documents/20")
        self.assertEqual(20, json_loads(resp.data)["data"]["id"])
    def test_api_post_speech_part_type(self):
        self.assert401("/api/1.0/speech-part-types",
                       data={"data": [{}]},
                       method="POST")
        self.assert403("/api/1.0/speech-part-types",
                       data={"data": [{}]},
                       method="POST",
                       **STU1_USER)
        self.assert400("/api/1.0/speech-part-types",
                       data={"data": [{
                           "champ bidon": 100
                       }]},
                       method="POST",
                       **ADMIN_USER)

        self.assert200("/api/1.0/speech-part-types",
                       data={
                           "data": [{
                               "id": 500,
                               "label": "SPEECH-PART-TYPT-500",
                               "lang_code": "fre"
                           }]
                       },
                       method="POST",
                       **ADMIN_USER)

        r = self.assert200('/api/1.0/speech-part-types/500')
        r = json_loads(r.data)["data"]
        self.assertEqual(500, r[0]["id"])

        self.assert400("/api/1.0/speech-part-types",
                       data={
                           "data": [{
                               "id": 500,
                               "label": "SPEECH-PART-TYPT-500",
                               "lang_code": "fre"
                           }]
                       },
                       method="POST",
                       **ADMIN_USER)

        # post multiple data
        self.assert200("/api/1.0/speech-part-types",
                       data={
                           "data": [{
                               "id": 501,
                               "label": "SPEECH-PART-TYPT-501",
                               "lang_code": "fre"
                           }, {
                               "id": 502,
                               "label": "SPEECH-PART-TYPT-502",
                               "lang_code": "fre"
                           }]
                       },
                       method="POST",
                       **PROF1_USER)
        self.assert200('/api/1.0/speech-part-types/501')
        self.assert200('/api/1.0/speech-part-types/502')
Example #24
0
    def test_api_post_district(self):
        self.assert401("/api/1.0/districts",
                       data={"data": [{}]},
                       method="POST")
        self.assert403("/api/1.0/districts",
                       data={"data": [{}]},
                       method="POST",
                       **STU1_USER)
        self.assert409("/api/1.0/districts",
                       data={"data": [{
                           "champ bidon": 100
                       }]},
                       method="POST",
                       **ADMIN_USER)

        self.assert200("/api/1.0/districts",
                       data={
                           "data": [{
                               "id": 500,
                               "label": "DISTRICT-500",
                               "country_id": 1
                           }]
                       },
                       method="POST",
                       **ADMIN_USER)

        r = self.assert200('/api/1.0/districts/500/from-country/1')
        r = json_loads(r.data)["data"]
        self.assertEqual(500, r[0]["id"])

        # post conflicting data
        self.assert409("/api/1.0/districts",
                       data={"data": [{
                           "id": 500,
                           "label": "DISTRICT-500"
                       }]},
                       method="POST",
                       **ADMIN_USER)

        # post multiple data
        self.assert200("/api/1.0/districts",
                       data={
                           "data": [{
                               "id": 501,
                               "label": "DISTRICT-501",
                               "country_id": 3
                           }, {
                               "id": 502,
                               "label": "DISTRICT-502",
                               "country_id": 2
                           }]
                       },
                       method="POST",
                       **PROF1_USER)
        self.assert200('/api/1.0/districts/501/from-country/3')
        self.assert200('/api/1.0/districts/502/from-country/2')
Example #25
0
    def test_delete_languages(self):
        self.assert401("/api/1.0/languages", method="DELETE")
        self.assert403("/api/1.0/languages", method="DELETE", **STU1_USER)

        self.assert200("/api/1.0/languages/fre", method='DELETE', **ADMIN_USER)
        self.assert404("/api/1.0/languages/fre")

        r = self.assert200('/api/1.0/languages')
        r = json_loads(r.data)["data"]
        self.assertEqual(2, len(r))
Example #26
0
    def test_delete_traditions(self):
        self.assert401("/api/1.0/traditions", method="DELETE")
        self.assert403("/api/1.0/traditions", method="DELETE", **STU1_USER)

        self.delete_with_auth("/api/1.0/traditions/cartulaire", **ADMIN_USER)
        self.assert404("/api/1.0/traditions/cartulaire")

        r = self.assert200('/api/1.0/traditions')
        r = json_loads(r.data)["data"]
        self.assertEqual(6, len(r))
Example #27
0
    def test_add_role_to_user(self):
        self.assert401("/api/1.0/users/4/roles", data={"data": [{"name": "student"}]}, method="POST")
        self.assert403("/api/1.0/users/4/roles", data={"data": [{"name": "student"}]}, method="POST", **STU1_USER)

        resp = self.assert200("/api/1.0/users/4/roles", **ADMIN_USER)

        role_names = [role["name"] for role in json_loads(resp.data)["data"]]
        self.assertNotIn("student", role_names)
        self.assertIn("teacher", role_names)

        # add student role to user 4
        self.post_with_auth("/api/1.0/users/4/roles",
                            data={"data": [{"name": "student"}]}, **ADMIN_USER)

        resp = self.get_with_auth("/api/1.0/users/4/roles", **ADMIN_USER)
        role_names = [role["name"] for role in json_loads(resp.data)["data"]]

        self.assertIn("student", role_names)
        self.assertIn("teacher", role_names)
Example #28
0
    def test_delete_institutions(self):
        self.assert401("/api/1.0/institutions", method="DELETE")
        self.assert403("/api/1.0/institutions", method="DELETE", **STU1_USER)

        self.delete_with_auth("/api/1.0/institutions/10", **ADMIN_USER)
        self.assert404("/api/1.0/institutions/10")

        r = self.assert200('/api/1.0/institutions')
        r = json_loads(r.data)["data"]
        self.assertEqual(14, len(r))
Example #29
0
    def test_delete_acte_types(self):
        self.assert401("/api/1.0/acte-types", method="DELETE")
        self.assert403("/api/1.0/acte-types", method="DELETE", **STU1_USER)

        self.delete_with_auth("/api/1.0/acte-types/19", **ADMIN_USER)
        self.assert404("/api/1.0/acte-types/19")

        r = self.assert200('/api/1.0/acte-types')
        r = json_loads(r.data)["data"]
        self.assertEqual(20, len(r))
Example #30
0
    def test_delete_editors(self):
        self.assert401("/api/1.0/editors", method="DELETE")
        self.assert403("/api/1.0/editors", method="DELETE", **STU1_USER)

        self.delete_with_auth("/api/1.0/editors/1", **ADMIN_USER)
        self.assert404("/api/1.0/editors/1")

        r = self.assert200('/api/1.0/editors')
        r = json_loads(r.data)["data"]
        self.assertEqual(0, len(r))