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})
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)})
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)})
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])
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) })
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()
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()
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
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 = []
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