class TestSetIdObj(AddressimoTestCase):
    def setUp(self):
        self.patcher1 = patch('addressimo.signer.LocalSigner.crypto')

        self.mockCrypto = self.patcher1.start()

        self.id_obj = Mock()

        self.ls = LocalSigner()

    def test_go_right(self):

        self.ls.set_id_obj(self.id_obj)

        # Validate calls
        self.assertEqual(self.mockCrypto.load_privatekey.return_value, self.ls.privkey)
        self.assertEqual(1, self.mockCrypto.load_privatekey.call_count)
        self.assertEqual(self.mockCrypto.FILETYPE_PEM, self.mockCrypto.load_privatekey.call_args[0][0])
        self.assertEqual(self.id_obj.private_key, self.mockCrypto.load_privatekey.call_args[0][1])

    def test_id_obj_missing(self):

        self.assertRaisesRegexp(ValueError, 'LocalSigner Requires ID Configuration', self.ls.set_id_obj, '')

    def test_private_key_missing(self):

        self.id_obj.private_key = None

        self.assertRaisesRegexp(ValueError, 'id_obj missing private key', self.ls.set_id_obj, self.id_obj)
    def setUp(self):
        self.patcher1 = patch('addressimo.signer.LocalSigner.crypto')

        self.mockCrypto = self.patcher1.start()

        self.id_obj = Mock()
        self.ls = LocalSigner()
        self.ls.set_id_obj(self.id_obj)
class TestFunctions(AddressimoTestCase):
    def setUp(self):
        self.patcher1 = patch('addressimo.signer.LocalSigner.crypto')

        self.mockCrypto = self.patcher1.start()

        self.id_obj = Mock()
        self.ls = LocalSigner()
        self.ls.set_id_obj(self.id_obj)

    def test_get_plugin_name(self):
        self.assertEqual('LOCAL', self.ls.get_plugin_name())

    def test_sign(self):

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

        self.assertEqual(self.mockCrypto.sign.return_value, ret_val)
        self.assertEqual(self.mockCrypto.load_privatekey.return_value, self.mockCrypto.sign.call_args[0][0])
        self.assertEqual('data', self.mockCrypto.sign.call_args[0][1])
        self.assertEqual('sha256', self.mockCrypto.sign.call_args[0][2])

    def test_get_pki_type(self):
        self.assertEqual('x509+sha256', self.ls.get_pki_type())