Example #1
0
    def setUp(self):
        super(TestGetRunHistory, self).setUp()

        self.count = 5
        self.datastore = factories.DatastoreFactory(workspace=self.workspace)
        self.global_id = helpers.to_global_id('DatastoreType', self.datastore.pk)
        self.runs = self.factory.create_batch(self.count, datastore=self.datastore)
        self.other_datastore = factories.DatastoreFactory(workspace=self.workspace)
        self.other_run = self.factory(datastore=self.other_datastore)
Example #2
0
    def test_valid_for_datastore(self):
        """It should update the custom properties.
        """
        resource = factories.DatastoreFactory(workspace=self.workspace)
        globalid = helpers.to_global_id('DatastoreType', resource.pk)

        self.execute_success_test_case(resource, globalid)
Example #3
0
    def test_valid_with_object_permission_as_owner(self):
        """It should update the datastore.
        """
        resource = factories.DatastoreFactory(workspace=self.workspace,
                                              object_permissions_enabled=True)
        globalid = helpers.to_global_id('DatastoreType', resource.pk)

        self.execute_success_test_case(resource, globalid)
Example #4
0
    def setUp(self):
        super(TestOmnisearch, self).setUp()

        self.datastore = Datastore.objects.get(id='s4N8p5g0wjiS')
        self.other_datastore = factories.DatastoreFactory(
            workspace=self.workspace)
        self.other_schema = factories.SchemaFactory(
            datastore=self.other_datastore)
        self.other_table = factories.TableFactory(schema=self.other_schema,
                                                  name='customers')
Example #5
0
    def _setup_and_get_variables(self, **overrides):
        """Setup test and return variables for query.
        """
        datastore = factories.DatastoreFactory(workspace=self.workspace, **overrides)
        datastore.assign_all_perms(self.group)

        variables = {
            'datastoreId': helpers.to_global_id('DatastoreType', datastore.pk),
        }

        return datastore, variables
Example #6
0
    def test_query_when_not_authorized(self):
        """Outside users should not be able to access this resource.
        """
        resource = factories.DatastoreFactory(workspace=self.workspace)
        globalid = helpers.to_global_id('DatastoreType', resource.pk)

        variables = {
            'objectId': globalid,
            'properties': [],
        }

        self.assertPermissionDenied(self.execute(variables=variables))
Example #7
0
    def test_encode_string_pk_model(self):
        """It should partially encode a Django model.
        """
        datastore = factories.DatastoreFactory()

        resource = json.dumps(
            datastore,
            cls=DjangoPartialModelJsonEncoder,
        )

        self.assertEqual(
            resource,
            "{\"pk\": \"%s\", \"type\": \"Datastore\"}" % str(datastore.id),
        )
Example #8
0
    def setUp(self):
        super(TestGetRunHistoryWithError, self).setUp()

        self.datastore = factories.DatastoreFactory(workspace=self.workspace)
        self.global_id = helpers.to_global_id('DatastoreType', self.datastore.pk)
        self.run1 = self.factory(datastore=self.datastore)
        self.run2 = self.factory(datastore=self.datastore)
        self.error = self.run1.errors.create(
            task_id=None,
            task_fcn='test_function',
            exc_type='FakeExceptionClass',
            exc_message='This is an error message.',
            exc_stacktrace='This is a error message, but with the whole trace.'
        )
Example #9
0
    def _setup_and_get_variables(self, **overrides):
        """Setup test and return variables for query.
        """
        datastore = factories.DatastoreFactory(workspace=self.workspace, **overrides)
        schema = factories.SchemaFactory(workspace=self.workspace, datastore=datastore)

        table = self.factory(workspace=self.workspace, schema=schema)

        variables = {
            'datastoreId': helpers.to_global_id('DatastoreType', datastore.pk),
            'schemaName': schema.name,
            'tableName': table.name,
        }

        return datastore, variables
Example #10
0
    def setUp(cls):
        super().setUp()
        cls.datastore = factories.DatastoreFactory(workspace=cls.workspace)
        cls.global_id = helpers.to_global_id('DatastoreType', cls.datastore.pk)

        cls.group = factories.GroupFactory(workspace_id=cls.workspace.id)

        cls.attributes = {
            'content_type': cls.datastore.content_type,
            'workspace': cls.workspace,
        }

        cls.customfields = [
            factories.CustomFieldFactory(
                field_name='Steward',
                field_type=models.CustomField.USER,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Product Area',
                field_type=models.CustomField.TEXT,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Department',
                field_type=models.CustomField.ENUM,
                validators={
                    'choices': ['Data Engineering', 'Product', 'Design']
                },
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Team',
                field_type=models.CustomField.GROUP,
                **cls.attributes,
            ),
        ]

        cls.datastore.custom_properties = {
            cls.customfields[0].pk: cls.user.pk,
            cls.customfields[2].pk: 'Design',
            cls.customfields[3].pk: cls.group.pk,
        }
        cls.datastore.save()
Example #11
0
    def test_valid_with_object_permission_as_member(self):
        """It should update the datastore.
        """
        resource = factories.DatastoreFactory(workspace=self.workspace,
                                              object_permissions_enabled=True)
        globalid = helpers.to_global_id('DatastoreType', resource.pk)

        permissions = [
            'definitions.change_datastore_settings',
            'definitions.comment_on_datastore',
            'definitions.change_datastore_metadata',
        ]

        for permission in permissions:
            resource.assign_perm(self.user, permission)

        self.execute_success_test_case(resource, globalid)
Example #12
0
    def test_initial_revisioner_run(self):
        """It should be able to commit the initial run to the metastore.
        """
        datastore = factories.DatastoreFactory(engine='redshift',
                                               **self.get_connection())

        run = datastore.run_history.create(
            workspace_id=datastore.workspace_id,
            started_at=timezone.now(),
        )

        coretasks.start_revisioner_run(run.id)

        run.refresh_from_db()

        self.assertTrue(run.finished_at is not None)
        self.assertEqual(run.errors.count(), 0)
        self.assertEqual(datastore.schemas.count(), self.schema_count)
Example #13
0
    def setUpTestData(cls):
        cls.current_user = factories.UserFactory()
        cls.workspace = factories.WorkspaceFactory(creator=cls.current_user)
        cls.workspace.grant_membership(cls.current_user, auth.Membership.OWNER)
        cls.group = factories.GroupFactory(workspace_id=cls.workspace.id)
        cls.datastore = factories.DatastoreFactory(workspace=cls.workspace)
        cls.attributes = {
            'content_type': cls.datastore.content_type,
            'workspace': cls.workspace,
        }

        cls.customfields = [
            factories.CustomFieldFactory(
                field_name='Steward',
                field_type=models.CustomField.USER,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Product Area',
                field_type=models.CustomField.TEXT,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Department',
                field_type=models.CustomField.ENUM,
                validators={
                    'choices': ['Data Engineering', 'Product', 'Design']
                },
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Team',
                field_type=models.CustomField.GROUP,
                **cls.attributes,
            ),
        ]
        cls.request = collections.namedtuple(
            'Request',
            ['user', 'workspace'],
        )(user=cls.current_user, workspace=cls.workspace)
Example #14
0
    def test_invalid_with_object_permission_as_readonly(self):
        """It should return a "Permission Denied" error.
        """
        resource = factories.DatastoreFactory(workspace=self.workspace,
                                              object_permissions_enabled=True)
        globalid = helpers.to_global_id('DatastoreType', resource.pk)

        variables = {
            'objectId': globalid,
            'properties': [],
        }

        permissions = [
            'definitions.comment_on_datastore',
            'definitions.change_datastore_metadata',
        ]

        for permission in permissions:
            resource.assign_perm(self.user, permission)

        self.assertPermissionDenied(self.execute(variables=variables))
Example #15
0
    def test_initial_revisioner_run(self):
        """It should be able to commit the initial run to the metastore.
        """
        datastore = factories.DatastoreFactory(engine='sqlserver',
                                               **self.get_connection())

        run = datastore.run_history.create(
            workspace_id=datastore.workspace_id,
            started_at=timezone.now(),
        )

        coretasks.start_revisioner_run(run.id)

        run.refresh_from_db()

        self.assertTrue(run.finished_at is not None)
        self.assertEqual(run.errors.count(), 0)
        self.assertEqual(datastore.schemas.count(), self.schema_count)

        column = models.Column.objects.get(name='emp_no',
                                           table__name='employees')

        self.assertEqual(column.db_comment,
                         'The employee identification number')
Example #16
0
    def test_initial_revisioner_run(self):
        """It should be able to commit the initial run to the metastore.
        """
        datastore = factories.DatastoreFactory(engine='hive',
                                               **self.get_connection())

        run = datastore.run_history.create(
            workspace_id=datastore.workspace_id,
            started_at=timezone.now(),
        )

        coretasks.start_revisioner_run(run.id)

        run.refresh_from_db()

        self.assertTrue(run.finished_at is not None)
        self.assertEqual(run.errors.count(), 0)
        self.assertEqual(datastore.schemas.count(), self.schema_count)

        column = models.Column.objects.get(name='c_birth_country',
                                           table__name='customer',
                                           table__schema__name='tpcds')

        self.assertEqual(column.db_comment, 'The country where they were born')