def test_apply_keyid_success(self): """If there is a valid keyid then key and to sign should be set. """ env, ui = self._make_ui_mock() # The actual keyid doesn't matter, since it'll be mocked anyway cmd = envelope.SignCommand(action='sign', keyid=['a']) cmd.apply(ui) self.assertTrue(env.sign) self.assertEqual(env.sign_key, mock.sentinel.keyid)
def test_apply_no_sign(self): """If signing with a valid keyid and valid key then set sign and sign_key. """ env, ui = self._make_ui_mock() # The actual keyid doesn't matter, since it'll be mocked anyway cmd = envelope.SignCommand(action='sign', keyid=['a']) cmd.apply(ui) self.assertTrue(env.sign) self.assertEqual(env.sign_key, mock.sentinel.keyid)
def test_apply_keyid_gpgproblem(self): """If there is an invalid keyid then the signing key and to sign should be set to false and default. """ env, ui = self._make_ui_mock() # The actual keyid doesn't matter, since it'll be mocked anyway cmd = envelope.SignCommand(action='sign', keyid=['a']) cmd.apply(ui) self.assertFalse(env.sign) self.assertEqual(env.sign_key, mock.sentinel.default) ui.notify.assert_called_once()
def test_apply_no_keyid_default(self): """If there is no keyid and the account has a gpg key, then that should be used. """ env, ui = self._make_ui_mock() env.account = mock.Mock(gpg_key='sentinel') cmd = envelope.SignCommand(action='sign', keyid=None) cmd.apply(ui) self.assertTrue(env.sign) self.assertEqual(env.sign_key, 'sentinel')
def test_apply_no_keyid_nomatchingaccount(self): """If there is a nokeyid and no account can be found to match the From, then the envelope should not be marked to sign. """ env, ui = self._make_ui_mock() # The actual keyid doesn't matter, since it'll be mocked anyway cmd = envelope.SignCommand(action='sign', keyid=None) cmd.apply(ui) self.assertFalse(env.sign) self.assertEqual(env.sign_key, mock.sentinel.default) ui.notify.assert_called_once()
def test_apply_unsign(self): """Test that settingun sign sets the sign to False if all other conditions allow for it. """ env, ui = self._make_ui_mock() env.sign = True env.sign_key = mock.sentinel # The actual keyid doesn't matter, since it'll be mocked anyway cmd = envelope.SignCommand(action='unsign', keyid=['a']) cmd.apply(ui) self.assertFalse(env.sign) self.assertIs(env.sign_key, None)
def test_apply_no_keyid_no_gpg_key(self): """If there is a nokeyid and the account has no gpg key then the signing key and to sign should be set to false and default. """ env, ui = self._make_ui_mock() env.account = mock.Mock(gpg_key=None) cmd = envelope.SignCommand(action='sign', keyid=None) cmd.apply(ui) self.assertFalse(env.sign) self.assertEqual(env.sign_key, mock.sentinel.default) ui.notify.assert_called_once()
def test_apply_no_keyid_default(self): """If there is no keyid and the account has a gpg key, then that should be used. """ env, ui = self._make_ui_mock() with mock.patch('alot.commands.envelope.settings.get_account_by_address', mock.Mock(return_value=mock.Mock(gpg_key='sentinel'))): cmd = envelope.SignCommand(action='sign', keyid=None) cmd.apply(ui) self.assertTrue(env.sign) self.assertEqual(env.sign_key, 'sentinel')
def test_apply_no_keyid_no_gpg_key(self): """If there is a nokeyid and the account has no gpg key then the signing key and to sign should be set to false and default. """ env, ui = self._make_ui_mock() with mock.patch('alot.commands.envelope.settings.get_account_by_address', mock.Mock(return_value=mock.Mock(gpg_key=None))): cmd = envelope.SignCommand(action='sign', keyid=None) cmd.apply(ui) self.assertFalse(env.sign) self.assertEqual(env.sign_key, mock.sentinel.default) ui.notify.assert_called_once()
def test_apply_from_email_only(self): """Test that a key can be derived using a 'From' header that contains only an email. If the from header is in the form "*****@*****.**" and a key exists it should be used. """ manager = self._make_local_settings() env, ui = self._make_ui_mock() env.headers = {'From': ['*****@*****.**']} cmd = envelope.SignCommand(action='sign') with mock.patch('alot.commands.envelope.settings', manager): cmd.apply(ui) self.assertTrue(env.sign) self.assertIs(env.sign_key, mock.sentinel.gpg_key)
def test_apply_from_user_and_email(self): """This tests that a gpg key can be derived using a 'From' header that contains a realname-email combo. If the header is in the form "Foo <*****@*****.**>", a key should be derived. See issue #1113 """ manager = self._make_local_settings() env, ui = self._make_ui_mock() cmd = envelope.SignCommand(action='sign') with mock.patch('alot.commands.envelope.settings', manager): cmd.apply(ui) self.assertTrue(env.sign) self.assertIs(env.sign_key, mock.sentinel.gpg_key)
def test_apply_togglesign(self): """Test that toggling changes the sign and sign_key as approriate if other condtiions allow for it """ env, ui = self._make_ui_mock() env.sign = True env.sign_key = mock.sentinel.keyid # The actual keyid doesn't matter, since it'll be mocked anyway # Test that togling from true to false works cmd = envelope.SignCommand(action='toggle', keyid=['a']) cmd.apply(ui) self.assertFalse(env.sign) self.assertIs(env.sign_key, None) # Test that toggling back to True works cmd.apply(ui) self.assertTrue(env.sign) self.assertIs(env.sign_key, mock.sentinel.keyid)