def setUp(self): from letsencrypt.account import Account logging.disable(logging.CRITICAL) self.accounts_dir = tempfile.mkdtemp("accounts") self.account_keys_dir = os.path.join(self.accounts_dir, "keys") os.makedirs(self.account_keys_dir, 0o700) self.config = mock.MagicMock( spec=configuration.NamespaceConfig, accounts_dir=self.accounts_dir, account_keys_dir=self.account_keys_dir, rsa_key_size=2048, server="letsencrypt-demo.org") key_file = pkg_resources.resource_filename( "acme.jose", os.path.join("testdata", "rsa512_key.pem")) key_pem = pkg_resources.resource_string( "acme.jose", os.path.join("testdata", "rsa512_key.pem")) self.key = le_util.Key(key_file, key_pem) self.email = "*****@*****.**" self.regr = messages2.RegistrationResource( uri="uri", new_authzr_uri="new_authzr_uri", terms_of_service="terms_of_service", body=messages2.Registration( recovery_token="recovery_token", agreement="agreement") ) self.test_account = Account( self.config, self.key, self.email, None, self.regr)
def test_partial_account_default(self): from letsencrypt.account import Account partial = Account(self.config, self.key) partial.save() acc = Account.from_existing_account(self.config) self.assertEqual(partial.key, acc.key) self.assertEqual(partial.email, acc.email) self.assertEqual(partial.phone, acc.phone) self.assertEqual(partial.regr, acc.regr)
def setUp(self): from letsencrypt.account import Account self.regr = mock.MagicMock() self.meta = Account.Meta(creation_host="test.letsencrypt.org", creation_dt=datetime.datetime( 2015, 7, 4, 14, 4, 10, tzinfo=pytz.UTC)) self.acc = Account(self.regr, KEY, self.meta) with mock.patch("letsencrypt.account.socket") as mock_socket: mock_socket.getfqdn.return_value = "test.letsencrypt.org" with mock.patch("letsencrypt.account.datetime") as mock_dt: mock_dt.datetime.now.return_value = self.meta.creation_dt self.acc_no_meta = Account(self.regr, KEY)
def test_prompts_bad_email(self, mock_from_email, mock_util): from letsencrypt.account import Account mock_from_email.side_effect = (errors.LetsEncryptClientError, "acc") mock_util().input.return_value = (display_util.OK, self.email) self.assertEqual(Account.from_prompts(self.config), "acc")
def test_prompts_empty_email(self, mock_key, mock_util): from letsencrypt.account import Account mock_util().input.return_value = (display_util.OK, "") acc = Account.from_prompts(self.config) self.assertTrue(acc.email is None) # _get_config_filename | pylint: disable=protected-access mock_key.assert_called_once_with( mock.ANY, mock.ANY, acc._get_config_filename(None))
def test_partial_properties(self): from letsencrypt.account import Account partial = Account(self.config, self.key) self.assertTrue(partial.uri is None) self.assertTrue(partial.new_authzr_uri is None) self.assertTrue(partial.terms_of_service is None) self.assertTrue(partial.recovery_token is None)
def test_prompts(self, mock_key, mock_util): from letsencrypt.account import Account mock_util().input.return_value = (display_util.OK, self.email) mock_key.return_value = self.key acc = Account.from_prompts(self.config) self.assertEqual(acc.email, self.email) self.assertEqual(acc.key, self.key) self.assertEqual(acc.config, self.config)
def test_save_from_existing_account(self): from letsencrypt.account import Account self.test_account.save() acc = Account.from_existing_account(self.config, self.email) self.assertEqual(acc.key, self.test_account.key) self.assertEqual(acc.email, self.test_account.email) self.assertEqual(acc.phone, self.test_account.phone) self.assertEqual(acc.regr, self.test_account.regr)
def setUp(self): self.tmp = tempfile.mkdtemp() self.config = mock.MagicMock( accounts_dir=os.path.join(self.tmp, "accounts")) from letsencrypt.account import AccountFileStorage self.storage = AccountFileStorage(self.config) from letsencrypt.account import Account self.acc = Account(regr=messages.RegistrationResource( uri=None, new_authzr_uri=None, body=messages.Registration()), key=KEY)
def test_get_accounts(self): from letsencrypt.account import Account accs = Account.get_accounts(self.config) self.assertFalse(accs) self.test_account.save() accs = Account.get_accounts(self.config) self.assertEqual(len(accs), 1) self.assertEqual(accs[0].email, self.test_account.email) acc2 = Account(self.config, self.key, "*****@*****.**") acc2.save() accs = Account.get_accounts(self.config) self.assertEqual(len(accs), 2)
def test_prompts_cancel(self, mock_util): from letsencrypt.account import Account mock_util().input.return_value = (display_util.CANCEL, "") self.assertTrue(Account.from_prompts(self.config) is None)
def _call(cls, addr): from letsencrypt.account import Account return Account.safe_email(addr)
class AccountTest(unittest.TestCase): """Tests letsencrypt.account.Account.""" def setUp(self): from letsencrypt.account import Account logging.disable(logging.CRITICAL) self.accounts_dir = tempfile.mkdtemp("accounts") self.account_keys_dir = os.path.join(self.accounts_dir, "keys") os.makedirs(self.account_keys_dir, 0o700) self.config = mock.MagicMock( spec=configuration.NamespaceConfig, accounts_dir=self.accounts_dir, account_keys_dir=self.account_keys_dir, rsa_key_size=2048, server="letsencrypt-demo.org") key_file = pkg_resources.resource_filename( "acme.jose", os.path.join("testdata", "rsa512_key.pem")) key_pem = pkg_resources.resource_string( "acme.jose", os.path.join("testdata", "rsa512_key.pem")) self.key = le_util.Key(key_file, key_pem) self.email = "*****@*****.**" self.regr = messages2.RegistrationResource( uri="uri", new_authzr_uri="new_authzr_uri", terms_of_service="terms_of_service", body=messages2.Registration( recovery_token="recovery_token", agreement="agreement") ) self.test_account = Account( self.config, self.key, self.email, None, self.regr) def tearDown(self): shutil.rmtree(self.accounts_dir) logging.disable(logging.NOTSET) @mock.patch("letsencrypt.account.zope.component.getUtility") @mock.patch("letsencrypt.account.crypto_util.init_save_key") def test_prompts(self, mock_key, mock_util): from letsencrypt.account import Account mock_util().input.return_value = (display_util.OK, self.email) mock_key.return_value = self.key acc = Account.from_prompts(self.config) self.assertEqual(acc.email, self.email) self.assertEqual(acc.key, self.key) self.assertEqual(acc.config, self.config) @mock.patch("letsencrypt.account.zope.component.getUtility") @mock.patch("letsencrypt.account.Account.from_email") def test_prompts_bad_email(self, mock_from_email, mock_util): from letsencrypt.account import Account mock_from_email.side_effect = (errors.LetsEncryptClientError, "acc") mock_util().input.return_value = (display_util.OK, self.email) self.assertEqual(Account.from_prompts(self.config), "acc") @mock.patch("letsencrypt.account.zope.component.getUtility") @mock.patch("letsencrypt.account.crypto_util.init_save_key") def test_prompts_empty_email(self, mock_key, mock_util): from letsencrypt.account import Account mock_util().input.return_value = (display_util.OK, "") acc = Account.from_prompts(self.config) self.assertTrue(acc.email is None) # _get_config_filename | pylint: disable=protected-access mock_key.assert_called_once_with( mock.ANY, mock.ANY, acc._get_config_filename(None)) @mock.patch("letsencrypt.account.zope.component.getUtility") def test_prompts_cancel(self, mock_util): from letsencrypt.account import Account mock_util().input.return_value = (display_util.CANCEL, "") self.assertTrue(Account.from_prompts(self.config) is None) def test_from_email(self): from letsencrypt.account import Account self.assertRaises(errors.LetsEncryptClientError, Account.from_email, self.config, "not_valid...email") def test_save_from_existing_account(self): from letsencrypt.account import Account self.test_account.save() acc = Account.from_existing_account(self.config, self.email) self.assertEqual(acc.key, self.test_account.key) self.assertEqual(acc.email, self.test_account.email) self.assertEqual(acc.phone, self.test_account.phone) self.assertEqual(acc.regr, self.test_account.regr) def test_properties(self): self.assertEqual(self.test_account.uri, "uri") self.assertEqual(self.test_account.new_authzr_uri, "new_authzr_uri") self.assertEqual(self.test_account.terms_of_service, "terms_of_service") self.assertEqual(self.test_account.recovery_token, "recovery_token") def test_partial_properties(self): from letsencrypt.account import Account partial = Account(self.config, self.key) self.assertTrue(partial.uri is None) self.assertTrue(partial.new_authzr_uri is None) self.assertTrue(partial.terms_of_service is None) self.assertTrue(partial.recovery_token is None) def test_partial_account_default(self): from letsencrypt.account import Account partial = Account(self.config, self.key) partial.save() acc = Account.from_existing_account(self.config) self.assertEqual(partial.key, acc.key) self.assertEqual(partial.email, acc.email) self.assertEqual(partial.phone, acc.phone) self.assertEqual(partial.regr, acc.regr) def test_get_accounts(self): from letsencrypt.account import Account accs = Account.get_accounts(self.config) self.assertFalse(accs) self.test_account.save() accs = Account.get_accounts(self.config) self.assertEqual(len(accs), 1) self.assertEqual(accs[0].email, self.test_account.email) acc2 = Account(self.config, self.key, "*****@*****.**") acc2.save() accs = Account.get_accounts(self.config) self.assertEqual(len(accs), 2) def test_get_accounts_no_accounts(self): from letsencrypt.account import Account self.assertEqual(Account.get_accounts( mock.Mock(accounts_dir="non-existant")), []) def test_failed_existing_account(self): from letsencrypt.account import Account self.assertRaises( errors.LetsEncryptClientError, Account.from_existing_account, self.config, "*****@*****.**")
def test_get_accounts_no_accounts(self): from letsencrypt.account import Account self.assertEqual(Account.get_accounts( mock.Mock(accounts_dir="non-existant")), [])