def test_add_delete_user_relation(self) -> None: table = Fixtures.next_table() self.get_proxy().put_table(table=table) user = Fixtures.next_user() self.get_proxy().put_user(data=user) self.get_proxy().add_resource_relation_by_user( id=f'{table.key}', user_id=f'{user.user_id}', relation_type=UserResourceRel.read, resource_type=ResourceType.Table) res: Dict[str, List[Table]] = self.get_proxy().get_table_by_user_relation( user_email=f'{user.user_id}', relation_type=UserResourceRel.read) self.assertEqual(1, len(res['table'])) relations = self.get_relationship(node_type1='User', node_key1=f'{user.user_id}', node_type2='Table', node_key2=checkNotNone(table.key)) self.assertEqual(1, len(relations)) # Now delete the relation self.get_proxy().delete_resource_relation_by_user( id=f'{table.key}', user_id=f'{user.user_id}', relation_type=UserResourceRel.read, resource_type=ResourceType.Table) res2: Dict[str, List[Table]] = self.get_proxy().get_table_by_user_relation( user_email=f'{user.user_id}', relation_type=UserResourceRel.read) self.assertEqual(0, len(res2['table']))
def test_rt_table_with_owner(self) -> None: user = Fixtures.next_user(is_active=True) self.get_proxy().put_user(data=user) application = Fixtures.next_application(application_id=user.user_id) expected = Fixtures.next_table(application=application) self.get_proxy().put_table(table=expected) actual: Table = self.get_proxy().get_table( table_uri=checkNotNone(expected.key)) self.assertEqual(user.user_id, actual.owners[0].user_id)
def test_get_popular_tables(self) -> None: application = Fixtures.next_application() self.get_proxy().put_app(data=application) # Add 10 tables tables: List[Table] = [ Fixtures.next_table(application=application) for _ in range(10) ] self.get_proxy().post_tables(tables=tables) user = Fixtures.next_user() self.get_proxy().put_user(data=user) # add reads to 6 of them, expecting that only the top five will be "popular" expected_popular_tables = [] reads = 0 for i in range(6): table_name: str = checkNotNone(tables[i].name) table_uri: str = checkNotNone(tables[i].key) self.get_proxy().add_read_count(table_uri=table_uri, user_id=f'{user.user_id}', read_count=reads) if reads > 0: expected_popular_tables.append(table_name) reads += 1000 # ensure popular tables returns those 5 we added actual_popular_tables = self.get_proxy().get_popular_tables( num_entries=5) self.assertEqual(len(actual_popular_tables), 5) popular_tables = [] for table in tables: if table.name in expected_popular_tables: popular_tables.append( PopularTable(database=table.database, cluster=table.cluster, schema=table.schema, name=table.name, description=table.description)) self.assertEqual(sorted(actual_popular_tables), sorted(popular_tables))
def test_owner_rt(self) -> None: application = Fixtures.next_application() self.get_proxy().put_app(data=application) table = Fixtures.next_table(application=application) self.get_proxy().put_table(table=table) user = Fixtures.next_user() self.get_proxy().put_user(data=user) user_id: str = user.user_id or 'test' self.get_proxy().add_owner(table_uri=checkNotNone(table.key), owner=user_id) table = self.get_proxy().get_table(table_uri=checkNotNone(table.key)) self.assertEqual([user_id], [u.user_id for u in table.owners]) self.get_proxy().delete_owner(table_uri=checkNotNone(table.key), owner=user_id) no_owner_table: Table = self.get_proxy().get_table( table_uri=checkNotNone(table.key)) self.assertEqual([], no_owner_table.owners) relations = self.get_relationship(node_type1='User', node_key1=user_id, node_type2='Table', node_key2=checkNotNone(table.key)) self.assertEqual(0, len(relations))