def test_go_right(self):

        # Setup test case
        id_obj = Mock()
        apis = APISigner()

        # Run
        apis.set_id_obj(id_obj)

        # Validate response
        self.assertEqual(apis.id_obj, id_obj)
    def test_go_right(self):

        # Setup test case
        id_obj = Mock()
        apis = APISigner()

        # Run
        apis.set_id_obj(id_obj)

        # Validate response
        self.assertEqual(apis.id_obj, id_obj)
    def setUp(self):
        self.patcher1 = patch('addressimo.signer.APISigner.requests')

        self.mockRequests = self.patcher1.start()

        # Create id_obj data to validate post
        self.id_obj = Mock()
        self.id_obj.private_key_id = 'privkeyid'

        # Instantiate signer and set id_obj
        self.apis = APISigner()
        self.apis.set_id_obj(self.id_obj)

        # Set config value for mocked endpoint
        config.signer_api_endpoint = 'https://signer.mydomain.com/sign'

        # Setup expected post data for validation
        self.expected_post_data = {
            'private_key_id': self.id_obj.private_key_id,
            'data': 'data'.encode('hex'),
            'digest': 'SHA256'
        }
    def setUp(self):
        self.patcher1 = patch("addressimo.signer.APISigner.requests")

        self.mockRequests = self.patcher1.start()

        # Create id_obj data to validate post
        self.id_obj = Mock()
        self.id_obj.private_key_id = "privkeyid"

        # Instantiate signer and set id_obj
        self.apis = APISigner()
        self.apis.set_id_obj(self.id_obj)

        # Set config value for mocked endpoint
        config.signer_api_endpoint = "https://signer.mydomain.com/sign"

        # Setup expected post data for validation
        self.expected_post_data = {
            "private_key_id": self.id_obj.private_key_id,
            "data": "data".encode("hex"),
            "digest": "SHA256",
        }
class TestSign(AddressimoTestCase):
    def setUp(self):
        self.patcher1 = patch("addressimo.signer.APISigner.requests")

        self.mockRequests = self.patcher1.start()

        # Create id_obj data to validate post
        self.id_obj = Mock()
        self.id_obj.private_key_id = "privkeyid"

        # Instantiate signer and set id_obj
        self.apis = APISigner()
        self.apis.set_id_obj(self.id_obj)

        # Set config value for mocked endpoint
        config.signer_api_endpoint = "https://signer.mydomain.com/sign"

        # Setup expected post data for validation
        self.expected_post_data = {
            "private_key_id": self.id_obj.private_key_id,
            "data": "data".encode("hex"),
            "digest": "SHA256",
        }

    def test_go_right(self):

        ret_val = self.apis.sign("data")

        # Validate return value and calls
        self.assertEqual(
            ret_val, self.mockRequests.post.return_value.json.return_value.get.return_value.decode.return_value
        )
        self.assertEqual(1, self.mockRequests.post.call_count)

        # Validate post call data
        call_args = self.mockRequests.post.call_args[0]
        self.assertEqual(config.signer_api_endpoint, call_args[0])
        self.assertEqual(json.dumps(self.expected_post_data), call_args[1])

    def test_private_key_id_missing(self):

        # Setup test case
        self.id_obj.private_key_id = None

        self.assertRaisesRegexp(ValueError, "APISigner Requires private_key_id", self.apis.sign, "data")
        self.assertEqual(0, self.mockRequests.post.call_count)

    def test_sig_missing(self):

        # Setup test case
        self.mockRequests.post.return_value.json.return_value.get.return_value = None

        ret_val = self.apis.sign("data")

        self.assertIsNone(ret_val)
        self.assertEqual(1, self.mockRequests.post.call_count)

    def test_exception_retrieving_signature(self):

        # Setup test case
        self.mockRequests.post.side_effect = Exception()

        ret_val = self.apis.sign("data")

        self.assertIsNone(ret_val)
        self.assertEqual(1, self.mockRequests.post.call_count)
class TestSign(AddressimoTestCase):
    def setUp(self):
        self.patcher1 = patch('addressimo.signer.APISigner.requests')

        self.mockRequests = self.patcher1.start()

        # Create id_obj data to validate post
        self.id_obj = Mock()
        self.id_obj.private_key_id = 'privkeyid'

        # Instantiate signer and set id_obj
        self.apis = APISigner()
        self.apis.set_id_obj(self.id_obj)

        # Set config value for mocked endpoint
        config.signer_api_endpoint = 'https://signer.mydomain.com/sign'

        # Setup expected post data for validation
        self.expected_post_data = {
            'private_key_id': self.id_obj.private_key_id,
            'data': 'data'.encode('hex'),
            'digest': 'SHA256'
        }

    def test_go_right(self):

        ret_val = self.apis.sign('data')

        # Validate return value and calls
        self.assertEqual(
            ret_val,
            self.mockRequests.post.return_value.json.return_value.get.return_value.decode.return_value
        )
        self.assertEqual(1, self.mockRequests.post.call_count)

        # Validate post call data
        call_args = self.mockRequests.post.call_args[0]
        self.assertEqual(config.signer_api_endpoint, call_args[0])
        self.assertEqual(json.dumps(self.expected_post_data), call_args[1])

    def test_private_key_id_missing(self):

        # Setup test case
        self.id_obj.private_key_id = None

        self.assertRaisesRegexp(ValueError, 'APISigner Requires private_key_id', self.apis.sign, 'data')
        self.assertEqual(0, self.mockRequests.post.call_count)

    def test_sig_missing(self):

        # Setup test case
        self.mockRequests.post.return_value.json.return_value.get.return_value = None

        ret_val = self.apis.sign('data')

        self.assertIsNone(ret_val)
        self.assertEqual(1, self.mockRequests.post.call_count)

    def test_exception_retrieving_signature(self):

        # Setup test case
        self.mockRequests.post.side_effect = Exception()

        ret_val = self.apis.sign('data')

        self.assertIsNone(ret_val)
        self.assertEqual(1, self.mockRequests.post.call_count)
 def test_go_right(self):
     self.assertEqual('API', APISigner().get_plugin_name())