def handler(event, context): event['import_type'] = None am_api = AssetManagersInterface(environment=ENVIRONMENT) token = am_api.session.tokens['IdToken'] user_attributes = jwt.decode(token, verify=False) user_amid = user_attributes.get('custom:asset_manager_id') if not user_amid: raise AttributeError( 'Invalid credentials. Could not determine user asset manager id.') relationships = am_api.retrieve_user_relationships( user_asset_manager_id=user_amid) if not relationships: raise ValueError('User does not have any Active relationships') asset_manager_id = None # Find the first non-demo account for relationship in relationships: asset_manager = am_api.retrieve(relationship.asset_manager_id) if asset_manager.account_type != 'Demo': asset_manager_id = asset_manager.asset_manager_id break if not asset_manager_id: raise ValueError( 'Could not find a valid asset manager for the specified user.') event['asset_manager_id'] = asset_manager_id return event
def interface_direct_class(data_class): """help to direct to the correct interface interacting with DB by class name only""" if data_class in ASSET: interface = AssetsInterface() elif data_class in PARTY: interface = PartiesInterface() elif data_class in BOOK: interface = BooksInterface() elif data_class in CORPORATE_ACTION: interface = CorporateActionsInterface() elif data_class in MARKET_DATA: interface = MarketDataInterface() elif data_class in TRANSACTION: interface = TransactionsInterface() else: interface = AssetManagersInterface() return interface
def setUp(self): self.longMessage = True # Print complete error message on failure self.asset_managers_interface = AssetManagersInterface() self.asset_manager_id = random.randint(1, 2**31-1) self.related_id = random.randint(1, 2**31-1)
class AssetManagersInterfaceTest(unittest.TestCase): def setUp(self): self.longMessage = True # Print complete error message on failure self.asset_managers_interface = AssetManagersInterface() self.asset_manager_id = random.randint(1, 2**31-1) self.related_id = random.randint(1, 2**31-1) def tearDown(self): pass def test_New(self): asset_manager = generate_asset_manager() asset_manager = self.asset_managers_interface.new(asset_manager) self.assertEqual(type(asset_manager), AssetManager) def test_Amend(self): asset_manager = generate_asset_manager() asset_manager = self.asset_managers_interface.new(asset_manager) self.assertEqual(type(asset_manager), AssetManager) def test_SearchAndRetrieve(self): all_asset_managers = self.asset_managers_interface.search() random_index = random.randint(0, len(all_asset_managers)-1) asset_manager = all_asset_managers[random_index] retrieved_manager = self.asset_managers_interface.retrieve(asset_manager_id=asset_manager.asset_manager_id) self.assertEqual(retrieved_manager, asset_manager) def test_NewRelationship(self): asset_manager = generate_asset_manager(asset_manager_id=self.asset_manager_id) self.asset_managers_interface.new(asset_manager) relation = generate_asset_manager(asset_manager_id=self.related_id) self.asset_managers_interface.new(relation) relationship = generate_relationship(asset_manager_id=self.asset_manager_id, related_id=self.related_id) relationship = self.asset_managers_interface.new_relationship(relationship) self.assertEqual(type(relationship), Relationship) def test_AmendRelationship(self): asset_manager = generate_asset_manager(asset_manager_id=self.asset_manager_id) self.asset_managers_interface.new(asset_manager) relation = generate_asset_manager(asset_manager_id=self.related_id) self.asset_managers_interface.new(relation) relationship = generate_relationship(asset_manager_id=self.asset_manager_id, related_id=self.related_id, relationship_type='External') relationship = self.asset_managers_interface.new_relationship(relationship) relationship.relationship_type = 'Employee' relationship = self.asset_managers_interface.amend_relationship(relationship) self.assertEqual(type(relationship), Relationship) def test_RetrieveRelationship(self): asset_manager = generate_asset_manager(asset_manager_id=self.asset_manager_id) self.asset_managers_interface.new(asset_manager) relation = generate_asset_manager(asset_manager_id=self.related_id) self.asset_managers_interface.new(relation) relationship = generate_relationship(asset_manager_id=self.asset_manager_id, related_id=self.related_id, relationship_type='External') relationship = self.asset_managers_interface.new_relationship(relationship) relationship.relationship_type = 'Employee' self.asset_managers_interface.amend_relationship(relationship) relations = self.asset_managers_interface.retrieve_relationships(asset_manager_id=self.asset_manager_id) self.assertEqual(len(relations), 1) self.assertEqual(type(relations[0]), Relationship) self.assertEqual(relations[0].relationship_type, 'Employee')
class AssetManagersInterfaceTest(unittest.TestCase): def setUp(self): self.longMessage = True # Print complete error message on failure self.asset_managers_interface = AssetManagersInterface( environment=STAGE) self.asset_manager_id = random.randint(1, 2**31 - 1) self.related_id = random.randint(1, 2**31 - 1) def tearDown(self): pass def test_New(self): asset_manager = generate_asset_manager() asset_manager = self.asset_managers_interface.new(asset_manager) self.assertEqual(type(asset_manager), AssetManager) def test_Amend(self): asset_manager = generate_asset_manager() asset_manager = self.asset_managers_interface.new(asset_manager) self.assertEqual(type(asset_manager), AssetManager) def test_SearchAndRetrieve(self): all_asset_managers = self.asset_managers_interface.search() random_index = random.randint(0, len(all_asset_managers) - 1) asset_manager = all_asset_managers[random_index] retrieved_manager = self.asset_managers_interface.retrieve( asset_manager_id=asset_manager.asset_manager_id) self.assertEqual(retrieved_manager, asset_manager) def test_NewRelationship(self): asset_manager = generate_asset_manager( asset_manager_id=self.asset_manager_id) self.asset_managers_interface.new(asset_manager) relation = generate_asset_manager(asset_manager_id=self.related_id) self.asset_managers_interface.new(relation) relationship = generate_relationship( asset_manager_id=self.asset_manager_id, related_id=self.related_id) relationship = self.asset_managers_interface.new_relationship( relationship) self.assertEqual(type(relationship), Relationship) def test_AmendRelationship(self): asset_manager = generate_asset_manager( asset_manager_id=self.asset_manager_id) self.asset_managers_interface.new(asset_manager) relation = generate_asset_manager(asset_manager_id=self.related_id) self.asset_managers_interface.new(relation) relationship = generate_relationship( asset_manager_id=self.asset_manager_id, related_id=self.related_id, relationship_type='External') relationship = self.asset_managers_interface.new_relationship( relationship) relationship.relationship_type = 'Employee' relationship = self.asset_managers_interface.amend_relationship( relationship) self.assertEqual(type(relationship), Relationship) def test_RetrieveRelationship(self): asset_manager = generate_asset_manager( asset_manager_id=self.asset_manager_id) self.asset_managers_interface.new(asset_manager) relation = generate_asset_manager(asset_manager_id=self.related_id) self.asset_managers_interface.new(relation) relationship = generate_relationship( asset_manager_id=self.asset_manager_id, related_id=self.related_id, relationship_type='External') relationship = self.asset_managers_interface.new_relationship( relationship) relationship.relationship_type = 'Employee' self.asset_managers_interface.amend_relationship(relationship) relations = self.asset_managers_interface.retrieve_relationships( asset_manager_id=self.asset_manager_id) self.assertEqual(len(relations), 1) self.assertEqual(type(relations[0]), Relationship) self.assertEqual(relations[0].relationship_type, 'Employee') def test_NewDomain(self): domain = generate_domain(asset_manager_id=self.asset_manager_id) ret_domain = self.asset_managers_interface.new_domain(domain) self.assertTrue(isinstance(ret_domain, Domain)) def test_CheckDomain(self): domain = generate_domain(asset_manager_id=self.asset_manager_id, is_primary=False) self.asset_managers_interface.new_domain(domain) ret_domain = self.asset_managers_interface.check_domains(domain.domain) self.assertIsNone(ret_domain) domain = generate_domain(asset_manager_id=self.asset_manager_id, is_primary=True) self.asset_managers_interface.new_domain(domain) ret_domains = self.asset_managers_interface.check_domains( domain.domain) self.assertEqual(domain.domain, ret_domains[0].domain) def test_RetrieveDomain(self): domain = generate_domain(asset_manager_id=self.asset_manager_id) domain2 = generate_domain(asset_manager_id=self.asset_manager_id) self.asset_managers_interface.new_domain(domain) self.asset_managers_interface.new_domain(domain2) ret_domains = self.asset_managers_interface.retrieve_domains( asset_manager_id=self.asset_manager_id) self.assertEqual({domain.domain, domain2.domain}, {d.domain for d in ret_domains})