Esempio n. 1
0
def setUpTestPackage():
    """
    see https://nose.readthedocs.io/en/latest/writing_tests.html#test-packages
    this is called from __init__.py
    """

    cursor = connection.cursor()
    sql = """
        INSERT INTO public.oauth2_provider_application(
            id,client_id, redirect_uris, client_type, authorization_grant_type,
            client_secret,
            name, user_id, skip_authorization, created, updated)
        VALUES (
            44,'{oauth_client_id}', 'http://localhost:8000/test', 'public', 'client-credentials',
            '{oauth_client_secret}',
            'TEST APP', {user_id}, false, '1-1-2000', '1-1-2000');
    """

    sql = sql.format(user_id=1,
                     oauth_client_id=OAUTH_CLIENT_ID,
                     oauth_client_secret=OAUTH_CLIENT_SECRET)
    cursor.execute(sql)

    prepare_terms_index(create=True)
    prepare_concepts_index(create=True)
    prepare_search_index(create=True)
    prepare_resource_relations_index(create=True)
    def forwards_func(apps, schema_editor):
        se = SearchEngineFactory().create()
        prefix = settings.ELASTICSEARCH_PREFIX
        if (se.es.indices.exists(index="%s_resource_relations" % prefix)):
            index_settings = prepare_resource_relations_index(create=False)
            se.create_index(index='resource_relations_temp',
                            body=index_settings)
            doc = {
                "source": {
                    "index": "%s_resource_relations" % prefix,
                    "type": "all"
                },
                "dest": {
                    "index": "%s_resource_relations_temp" % prefix,
                    "type": "_doc"
                }
            }
            se.es.reindex(body=doc, refresh=True, wait_for_completion=True)
            se.delete_index(index='resource_relations')

            prepare_resource_relations_index(create=True)
            doc = {
                "source": {
                    "index": "%s_resource_relations_temp" % prefix,
                    "type": "_doc"
                },
                "dest": {
                    "index": "%s_resource_relations" % prefix,
                    "type": "_doc"
                }
            }
            se.es.reindex(body=doc, refresh=True, wait_for_completion=True)
Esempio n. 3
0
    def setup_db(self, package_name):
        """
        Drops and re-installs the database found at "arches_<package_name>"
        WARNING: This will destroy data

        """

        db_settings = settings.DATABASES['default']
        truncate_path = os.path.join(settings.ROOT_DIR, 'db', 'install', 'truncate_db.sql')
        db_settings['truncate_path'] = truncate_path

        truncate_db.create_sqlfile(db_settings, truncate_path)

        os.system('psql -h %(HOST)s -p %(PORT)s -U %(USER)s -d postgres -f "%(truncate_path)s"' % db_settings)

        self.delete_indexes()
        prepare_term_index(create=True)
        prepare_resource_relations_index(create=True)
        management.call_command('migrate')

        self.import_graphs(os.path.join(settings.ROOT_DIR, 'db', 'system_settings', 'Arches_System_Settings_Model.json'), overwrite_graphs=True)
        self.import_business_data(os.path.join(settings.ROOT_DIR, 'db', 'system_settings', 'Arches_System_Settings.json'), overwrite=True)

        local_settings_available = os.path.isfile(os.path.join(settings.SYSTEM_SETTINGS_LOCAL_PATH))

        if local_settings_available == True:
            self.import_business_data(settings.SYSTEM_SETTINGS_LOCAL_PATH, overwrite=True)
Esempio n. 4
0
    def setup_indexes(self):
        prepare_terms_index(create=True)
        prepare_concepts_index(create=True)
        prepare_resource_relations_index(create=True)
        prepare_search_index(create=True)

        # add custom indexes
        for index in settings.ELASTICSEARCH_CUSTOM_INDEXES:
            self.register_index(index['name'])
Esempio n. 5
0
 def setUpClass(cls):
     test_pkg_path = os.path.join(test_settings.TEST_ROOT, "fixtures",
                                  "testing_prj", "testing_prj", "pkg")
     management.call_command("packages",
                             operation="load_package",
                             source=test_pkg_path,
                             yes=True)
     delete_resource_relations_index()
     prepare_resource_relations_index(create=True)
Esempio n. 6
0
    def setup_indexes(self, name=None):
        if name is None:
            prepare_terms_index(create=True)
            prepare_concepts_index(create=True)
            prepare_resource_relations_index(create=True)
            prepare_search_index(create=True)

            # add custom indexes
            for index in settings.ELASTICSEARCH_CUSTOM_INDEXES:
                self.register_index(index["name"])
        else:
            self.register_index(name)
Esempio n. 7
0
    def forwards_func(apps, schema_editor):
        if settings.SEARCH_BACKEND != 'tests.base_test.TestSearchEngine':
            se = SearchEngineFactory().create()
            se_old = SearchEngineFactory().create(
                hosts=[settings.ELASTICSEARCH_TEMP_HTTP_ENDPOINT])
            prefix = settings.ELASTICSEARCH_PREFIX
            if (se.es.indices.exists(index="%s_terms" % prefix) is False
                    and se_old.es.indices.exists(index="%s_strings" % prefix)
                    is True):
                prepare_terms_index(create=True)
                doc = {
                    "source": {
                        "remote": {
                            "host": settings.ELASTICSEARCH_TEMP_HTTP_ENDPOINT
                        },
                        "index": "%s_strings" % prefix,
                        "type": "term"
                    },
                    "dest": {
                        "index": "%s_terms" % prefix,
                        "type": "_doc"
                    }
                }
                se.es.reindex(body=doc)

            if (se.es.indices.exists(index="%s_concepts" % prefix) is False
                    and se_old.es.indices.exists(index="%s_strings" % prefix)
                    is True):
                prepare_concepts_index(create=True)
                doc = {
                    "source": {
                        "remote": {
                            "host": settings.ELASTICSEARCH_TEMP_HTTP_ENDPOINT
                        },
                        "index": "%s_strings" % prefix,
                        "type": "concept"
                    },
                    "dest": {
                        "index": "%s_concepts" % prefix,
                        "type": "_doc"
                    }
                }
                se.es.reindex(body=doc)

            if (se.es.indices.exists(index="%s_resources" % prefix) is False
                    and se_old.es.indices.exists(index="%s_resource" % prefix)
                    is True):
                prepare_search_index(create=True)
                doc = {
                    "source": {
                        "remote": {
                            "host": settings.ELASTICSEARCH_TEMP_HTTP_ENDPOINT
                        },
                        "index": "%s_resource" % prefix
                    },
                    "dest": {
                        "index": "%s_resources" % prefix,
                        "type": "_doc"
                    }
                }
                se.es.reindex(body=doc)

            if (se.es.indices.exists(index="%s_resource_relations" % prefix) is
                    False and se_old.es.indices.exists(
                        index="%s_resource_relations" % prefix) is True):
                prepare_resource_relations_index(create=True)
                doc = {
                    "source": {
                        "remote": {
                            "host": settings.ELASTICSEARCH_TEMP_HTTP_ENDPOINT
                        },
                        "index": "%s_resource_relations" % prefix
                    },
                    "dest": {
                        "index": "%s_resource_relations" % prefix,
                        "type": "_doc"
                    }
                }
                se.es.reindex(body=doc)
Esempio n. 8
0
 def setup_indexes(self):
     prepare_terms_index(create=True)
     prepare_concepts_index(create=True)
     prepare_resource_relations_index(create=True)
     prepare_search_index(create=True)
    def setUpClass(cls):
        delete_terms_index()
        delete_concepts_index()
        delete_search_index()

        prepare_terms_index(create=True)
        prepare_concepts_index(create=True)
        prepare_search_index(create=True)
        prepare_resource_relations_index(create=True)

        cls.client = Client()
        cls.client.login(username='******', password='******')

        models.ResourceInstance.objects.all().delete()
        with open(
                os.path.join(
                    'tests/fixtures/resource_graphs/Resource Test Model.json'),
                'rU') as f:
            archesfile = JSONDeserializer().deserialize(f)
        resource_graph_importer(archesfile['graph'])

        cls.search_model_graphid = 'e503a445-fa5f-11e6-afa8-14109fd34195'
        cls.search_model_cultural_period_nodeid = '7a182580-fa60-11e6-96d1-14109fd34195'
        cls.search_model_creation_date_nodeid = '1c1d05f5-fa60-11e6-887f-14109fd34195'
        cls.search_model_destruction_date_nodeid = 'e771b8a1-65fe-11e7-9163-14109fd34195'
        cls.search_model_name_nodeid = '2fe14de3-fa61-11e6-897b-14109fd34195'
        cls.search_model_sensitive_info_nodeid = '57446fae-65ff-11e7-b63a-14109fd34195'
        cls.search_model_geom_nodeid = '3ebc6785-fa61-11e6-8c85-14109fd34195'

        cls.user = User.objects.create_user('test', '*****@*****.**',
                                            'test')
        cls.user.save()
        cls.user.groups.add(Group.objects.get(name='Guest'))

        nodegroup = models.NodeGroup.objects.get(
            pk=cls.search_model_destruction_date_nodeid)
        assign_perm('no_access_to_nodegroup', cls.user, nodegroup)

        # Add a concept that defines a min and max date
        concept = {
            "id":
            "00000000-0000-0000-0000-000000000001",
            "legacyoid":
            "ARCHES",
            "nodetype":
            "ConceptScheme",
            "values": [],
            "subconcepts": [{
                "values": [{
                    "value": "Mock concept",
                    "language": "en-US",
                    "category": "label",
                    "type": "prefLabel",
                    "id": "",
                    "conceptid": ""
                }, {
                    "value": "1950",
                    "language": "en-US",
                    "category": "note",
                    "type": "min_year",
                    "id": "",
                    "conceptid": ""
                }, {
                    "value": "1980",
                    "language": "en-US",
                    "category": "note",
                    "type": "max_year",
                    "id": "",
                    "conceptid": ""
                }],
                "relationshiptype":
                "hasTopConcept",
                "nodetype":
                "Concept",
                "id":
                "",
                "legacyoid":
                "",
                "subconcepts": [],
                "parentconcepts": [],
                "relatedconcepts": []
            }]
        }

        post_data = JSONSerializer().serialize(concept)
        content_type = 'application/x-www-form-urlencoded'
        response = cls.client.post(
            reverse(
                'concept',
                kwargs={'conceptid': '00000000-0000-0000-0000-000000000001'}),
            post_data, content_type)
        response_json = json.loads(response.content)
        valueid = response_json['subconcepts'][0]['values'][0]['id']
        cls.conceptid = response_json['subconcepts'][0]['id']

        # Add resource with Name, Cultural Period, Creation Date and Geometry
        cls.test_resource = Resource(graph_id=cls.search_model_graphid)

        # Add Name
        tile = Tile(data={cls.search_model_name_nodeid: 'Test Name 1'},
                    nodegroup_id=cls.search_model_name_nodeid)
        cls.test_resource.tiles.append(tile)

        # Add Cultural Period
        tile = Tile(data={cls.search_model_cultural_period_nodeid: [valueid]},
                    nodegroup_id=cls.search_model_cultural_period_nodeid)
        cls.test_resource.tiles.append(tile)

        # Add Creation Date
        tile = Tile(data={cls.search_model_creation_date_nodeid: '1941-01-01'},
                    nodegroup_id=cls.search_model_creation_date_nodeid)
        cls.test_resource.tiles.append(tile)

        # Add Gometry
        cls.geom = {
            "type":
            "FeatureCollection",
            "features": [{
                "geometry": {
                    "type": "Point",
                    "coordinates": [0, 0]
                },
                "type": "Feature",
                "properties": {}
            }]
        }
        tile = Tile(data={cls.search_model_geom_nodeid: cls.geom},
                    nodegroup_id=cls.search_model_geom_nodeid)
        cls.test_resource.tiles.append(tile)

        cls.test_resource.save()

        # add delay to allow for indexes to be updated
        time.sleep(1)
Esempio n. 10
0
 def setup_indexes(self):
     prepare_term_index(create=True)
     prepare_resource_relations_index(create=True)
Esempio n. 11
0
 def setup_indexes(self):
     prepare_term_index(create=True)
     prepare_resource_relations_index(create=True)
     for graphid in models.GraphModel.objects.filter(isresource=True).values_list('graphid', flat=True):
         prepare_search_index(str(graphid), create=True)
Esempio n. 12
0
 def setup_indexes(self, package_name):
     prepare_term_index(create=True)
     prepare_resource_relations_index(create=True)