Exemple #1
0
def update_id_obj(id):

    resolver = PluginManager.get_plugin('RESOLVER', config.resolver_type)

    if not id:
        id_obj = IdObject()
    else:
        id_obj = resolver.get_id_obj(id)

    if not id_obj:
        return create_json_response(False, 'Object not found for this ID.', 404)

    rdata = request.get_json()

    if not set(rdata.keys()).issubset(id_obj.keys()):
        return create_json_response(False, 'Unknown key submitted', 400)

    for key, value in rdata.items():
        if key == 'id':
            continue

        if key == 'private_key' and not value:
            continue

        id_obj[key] = value

    try:
        resolver.save(id_obj)
    except:
        return create_json_response(False, 'Exception occurred attempting to save id object', 500)

    return create_json_response(True, 'Update succeeded', 200, {'id': id_obj.id})
Exemple #2
0
    def register():

        resolver = PluginManager.get_plugin('RESOLVER', config.resolver_type)

        id_obj = IdObject()
        id_obj.auth_public_key = request.headers.get('x-identity')
        resolver.save(id_obj)

        return create_json_response(data={'id': id_obj.id, 'endpoint': 'https://%s/resolve/%s' % (config.site_url, id_obj.id)})
Exemple #3
0
    def register(**kwargs):

        resolver = PluginManager.get_plugin('RESOLVER', config.resolver_type)

        id_obj = IdObject()
        id_obj.auth_public_key = request.headers.get('x-identity')

        for k,v in kwargs.items():
            setattr(id_obj, k, v)

        resolver.save(id_obj)

        return create_json_response(data={'id': id_obj.id, 'endpoint': 'https://%s/address/%s/resolve' % (config.site_url, id_obj.id)})
Exemple #4
0
    def test_go_right_create(self):

        # Setup Test case
        self.id_obj = IdObject()
        self.mockIdObject.return_value = self.id_obj

        update_id_obj(None)

        self.assertEqual(0, self.mockPluginManager.get_plugin.return_value.get_id_obj.call_count)
        self.assertEqual(1, self.mockPluginManager.get_plugin.return_value.save.call_count)
        self.assertEqual(1, self.mockCreateJSONResponse.call_count)

        # Validate data passed to save
        call_args = self.mockPluginManager.get_plugin.return_value.save.call_args[0][0]
        self.assertEqual(self.id_obj, call_args)

        # Validate id_obj data
        self.assertTrue(self.id_obj.bip32_enabled)
        self.assertEqual('priv_key', self.id_obj.private_key)
        self.assertEqual('generatedid', self.id_obj.id)

        # Validate JSON Response Data
        call_args = self.mockCreateJSONResponse.call_args[0]
        self.assertTrue(call_args[0])
        self.assertEqual('Update succeeded', call_args[1])
        self.assertEqual(200, call_args[2])
        self.assertDictEqual({'id': 'generatedid'}, call_args[3])
Exemple #5
0
    def register(**kwargs):

        resolver = PluginManager.get_plugin('RESOLVER', config.resolver_type)

        id_obj = IdObject()
        id_obj.auth_public_key = request.headers.get('x-identity')

        for k, v in kwargs.items():
            setattr(id_obj, k, v)

        resolver.save(id_obj)

        return create_json_response(
            data={
                'id':
                id_obj.id,
                'endpoint':
                'https://%s/address/%s/resolve' % (config.site_url, id_obj.id)
            })
Exemple #6
0
    def setUp(self):
        self.patcher1 = patch('addressimo.admin.admin.Redis')
        self.patcher2 = patch('addressimo.admin.admin.PluginManager')
        self.patcher3 = patch('addressimo.admin.admin.create_json_response')

        self.mockRedis = self.patcher1.start()
        self.mockPluginManager = self.patcher2.start()
        self.mockCreateJSONResponse = self.patcher3.start()

        # Mock id_obj returned from get_id_obj
        self.id_obj = IdObject()
        self.id_obj.private_key = 'old_priv_key'
        self.mockPluginManager.get_plugin.return_value.get_id_obj.return_value = self.id_obj
    def setUp(self):
        self.patcher1 = patch('addressimo.resolvers.RedisResolver.Redis')

        self.mockRedis = self.patcher1.start()

        from addressimo.data import IdObject

        # Setup redis data
        self.mock_id_obj = IdObject('id')
        self.mock_id_obj.id = 'id'

        # Setup redis resolver
        self.rr = RedisResolver()
Exemple #8
0
    def setUp(self):
        self.patcher1 = patch('addressimo.admin.admin.Redis')
        self.patcher2 = patch('addressimo.admin.admin.PluginManager')
        self.patcher3 = patch('addressimo.admin.admin.create_json_response')
        self.patcher4 = patch('addressimo.admin.admin.request')
        self.patcher5 = patch('addressimo.admin.admin.IdObject', wraps=IdObject)

        self.mockRedis = self.patcher1.start()
        self.mockPluginManager = self.patcher2.start()
        self.mockCreateJSONResponse = self.patcher3.start()
        self.mockRequest = self.patcher4.start()
        self.mockIdObject = self.patcher5.start()

        # Mock rdata
        self.mockRequestData = {
            'auth_public_key': None,
            'bip32_enabled': True,
            'bip70_enabled': False,
            'bip70_static_amount': None,
            'expires': None,
            'id': 'id',
            'last_generated_index': 0,
            'last_used_index': 0,
            'master_public_key': None,
            'memo': None,
            'merchant_data': None,
            'payment_url': None,
            'presigned_only': False,
            'presigned_payment_requests': [],
            'private_key': 'priv_key',
            'wallet_address': None,
            'x509_cert': None
        }

        self.mockRequest.get_json.return_value = self.mockRequestData

        # Mock id_obj returned from get_id_obj
        self.id_obj = IdObject()
        self.id_obj.id = 'myid'
        self.id_obj.private_key = 'old_priv_key'
        self.id_obj.bip32_enabled = False
        self.mockPluginManager.get_plugin.return_value.get_id_obj.return_value = self.id_obj

        # This handles the ID being generated when save() is called on a newly created id_obj
        def mocksave(id_obj):
            if not id_obj.id:
                id_obj.id = 'generatedid'

        self.mockPluginManager.get_plugin.return_value.save.side_effect = mocksave
    def get_id_obj(self, id):

        redis_client = Redis.from_url(config.redis_id_obj_uri)
        try:
            result = redis_client.get(id)
            if not result:
                log.info('Unable to Get id obj data [ID: %s]' % id)
                return None

        except Exception as e:
            log.info('Unable to Get id obj data [ID: %s]: %s' % (id, str(e)))
            return None

        id_obj = IdObject(id)
        for key, value in json.loads(result).items():
            id_obj[key] = value
        return id_obj
    def setUp(self):
        self.patcher1 = patch('addressimo.resolvers.RedisResolver.Redis')
        self.patcher2 = patch(
            'addressimo.resolvers.RedisResolver.RedisResolver.generate_unique_id'
        )

        self.mockRedis = self.patcher1.start()
        self.mockGenerateUniqueId = self.patcher2.start()

        from addressimo.data import IdObject

        # Setup redis data
        self.mock_id_obj = IdObject('id')
        self.mock_id_obj.id = 'id'
        self.mock_id_obj.bip70_enabled = True
        self.mock_id_obj.last_generated_index = 10

        # Setup redis resolver
        self.rr = RedisResolver()
Exemple #11
0
    def setUpClass(cls):

        log.info('Generating ECDSA Keypairs for Testing')
        cls.sender_sk = SigningKey.generate(curve=curves.SECP256k1)
        cls.receiver_sk = SigningKey.generate(curve=curves.SECP256k1)

        log.info('Setup IdObj for testid')
        cls.test_id_obj = IdObject()
        cls.test_id_obj.auth_public_key = cls.receiver_sk.get_verifying_key(
        ).to_der().encode('hex')
        cls.test_id_obj.id = 'testid'
        cls.test_id_obj.paymentprotocol_only = True

        cls.resolver = PluginManager.get_plugin('RESOLVER',
                                                config.resolver_type)
        cls.resolver.save(cls.test_id_obj)
        log.info('Save testid IdObj')

        log.info('Setup Class Identifier')

        cls.identifier = None
Exemple #12
0
    def setUp(self):

        # Generate a signing key used for refund output retrieval in get_refund_addresses()
        self.receiver_sk = SigningKey.generate(curve=curves.SECP256k1)

        log.info('Setup IdObj for testid')
        self.test_id_obj = IdObject()
        self.test_id_obj.id = 'testid'
        self.test_id_obj.bip70_enabled = True
        self.test_id_obj.wallet_address = '1MSK1PMnDZN4SLDQ6gB4c6GKRExfGD6Gb3'
        self.test_id_obj.x509_cert = TEST_CERT
        self.test_id_obj.private_key = TEST_CERT_PRIVKEY
        self.test_id_obj.auth_public_key = self.receiver_sk.get_verifying_key(
        ).to_string().encode('hex')

        self.resolver = PluginManager.get_plugin('RESOLVER',
                                                 config.resolver_type)
        self.resolver.save(self.test_id_obj)
        log.info('Save testid IdObj')

        # Keep track of PaymentRequest meta data stored in Redis so it can be cleaned up later
        self.redis_pr_store_cleanup = []
Exemple #13
0
 def get_id_obj(self, id):
     config = IdObject(id)
     val = self.obj_config.get(id)
     for key, value in val.items():
         config[key] = value
     return config