示例#1
0
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
示例#2
0
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})