def test_add(self, fake_gpg, fake_lib): step = Mock() repository = Mock() path = Mock() key_ids = [1, 2, 3] fake_gpg.return_value = (path, key_ids) # test remote = Remote(step, repository) remote.add() # validation fake_lib.Remote.assert_called_once_with(remote.remote_id, repository) fake_lib.Remote.return_value.update.assert_called_once_with() fake_lib.Remote.return_value.import_key.assert_called_once_with( path, key_ids) self.assertEqual(fake_lib.Remote.return_value.url, remote.url) self.assertEqual(fake_lib.Remote.return_value.ssl_key_path, remote.ssl_key_path) self.assertEqual(fake_lib.Remote.return_value.ssl_cert_path, remote.ssl_cert_path) self.assertEqual(fake_lib.Remote.return_value.ssl_ca_path, remote.ssl_ca_path) self.assertEqual(fake_lib.Remote.return_value.ssl_validation, remote.ssl_validation) self.assertEqual(fake_lib.Remote.return_value.proxy_url, remote.proxy_url) self.assertTrue(fake_lib.Remote.return_value.gpg_validation, remote.ssl_validation)
def test_proxy_without_host(self): config = {} step = Mock() step.get_config.return_value = config # test remote = Remote(step, None) # validation self.assertEqual(remote.proxy_url, None)
def test_ssl_validation(self): config = {importer_constants.KEY_SSL_VALIDATION: True} step = Mock() step.get_config.return_value = config # test remote = Remote(step, None) validation = remote.ssl_validation # validation self.assertTrue(validation) self.assertTrue(isinstance(validation, bool))
def test_ssl_validation_not_specified(self): config = {} step = Mock() step.get_config.return_value = config # test remote = Remote(step, None) validation = remote.ssl_validation # validation self.assertFalse(validation) self.assertTrue(isinstance(validation, bool))
def test_add(self, fake_gpg, fake_lib): step = Mock() repository = Mock() path = Mock() key_ids = [1, 2, 3] fake_gpg.return_value = (path, key_ids) # test remote = Remote(step, repository) remote.add() # validation fake_lib.Remote.assert_called_once_with(remote.remote_id, repository) fake_lib.Remote.return_value.update.assert_called_once_with() fake_lib.Remote.return_value.import_key.assert_called_once_with(path, key_ids) self.assertEqual(fake_lib.Remote.return_value.url, remote.url) self.assertEqual(fake_lib.Remote.return_value.ssl_key_path, remote.ssl_key_path) self.assertEqual(fake_lib.Remote.return_value.ssl_cert_path, remote.ssl_cert_path) self.assertEqual(fake_lib.Remote.return_value.ssl_ca_path, remote.ssl_ca_path) self.assertEqual(fake_lib.Remote.return_value.ssl_validation, remote.ssl_validation) self.assertEqual(fake_lib.Remote.return_value.proxy_url, remote.proxy_url) self.assertTrue(fake_lib.Remote.return_value.gpg_validation, remote.ssl_validation)
def test_proxy_without_auth(self): host = 'http://dog.com' port = '3128' config = { importer_constants.KEY_PROXY_HOST: host, importer_constants.KEY_PROXY_PORT: port, } step = Mock() step.get_config.return_value = config proxy_url = 'http://dog.com:3128' # test remote = Remote(step, None) # validation self.assertEqual(remote.proxy_url, proxy_url)
def test_proxy_url_without_port(self): host = 'http://dog.com' port = None user = '******' password = '******' config = { importer_constants.KEY_PROXY_HOST: host, importer_constants.KEY_PROXY_PORT: port, importer_constants.KEY_PROXY_USER: user, importer_constants.KEY_PROXY_PASS: password, } step = Mock() step.get_config.return_value = config proxy_url = 'http://*****:*****@dog.com' # test remote = Remote(step, None) # validation self.assertEqual(remote.proxy_url, proxy_url)
def test_gpg_key(self, fake_gpg): keys = [1, 2, 3] key_list = [dict(keyid=k) for k in keys] working_dir = '/tmp/test' config = {constants.IMPORTER_CONFIG_KEY_GPG_KEYS: keys} step = Mock() step.get_config.return_value = config step.get_working_dir.return_value = working_dir fake_gpg.return_value.list_keys.return_value = key_list # test remote = Remote(step, None) path, key_ids = remote.gpg_keys # validation fake_gpg.assert_called_once_with(gnupghome=working_dir) self.assertEqual(fake_gpg.return_value.import_keys.call_args_list, [((k, ), {}) for k in keys]) self.assertEqual(path, os.path.join(working_dir, 'pubring.gpg')) self.assertEqual(key_ids, [k['keyid'] for k in key_list])
def test_ssl_ca_path(self, fake_open): cert = 'test-key' config = {importer_constants.KEY_SSL_CA_CERT: cert} working_dir = '/tmp/test' step = Mock() step.get_config.return_value = config step.get_working_dir.return_value = working_dir fp = Mock(__enter__=Mock(), __exit__=Mock()) fp.__enter__.return_value = fp fake_open.return_value = fp # test remote = Remote(step, None) path = remote.ssl_ca_path # validation expected_path = os.path.join(working_dir, 'ca.pem') fake_open.assert_called_once_with(expected_path, 'w+') fp.write.assert_called_once_with(cert) fp.__enter__.assert_called_once_with() fp.__exit__.assert_called_once_with(None, None, None) self.assertEqual(path, expected_path)
def test_proxy_url(self): host = 'proxy-host' port = 'proxy-port' user = '******' password = '******' config = { importer_constants.KEY_PROXY_HOST: host, importer_constants.KEY_PROXY_PORT: port, importer_constants.KEY_PROXY_USER: user, importer_constants.KEY_PROXY_PASS: password, } step = Mock() step.get_config.return_value = config proxy_url = '@'.join((':'.join((user, password)), ':'.join( (host, port)))) # test remote = Remote(step, None) # validation self.assertEqual(remote.proxy_url, proxy_url)
def test_ssl_key_path(self, fake_open, fake_chmod): key = 'test-key' config = {importer_constants.KEY_SSL_CLIENT_KEY: key} working_dir = '/tmp/test' step = Mock() step.get_config.return_value = config step.get_working_dir.return_value = working_dir fp = Mock(__enter__=Mock(), __exit__=Mock()) fp.__enter__.return_value = fp fake_open.return_value = fp # test remote = Remote(step, None) path = remote.ssl_key_path # validation expected_path = os.path.join(working_dir, 'key.pem') fake_open.assert_called_once_with(expected_path, 'w+') fp.write.assert_called_once_with(key) fp.__enter__.assert_called_once_with() fp.__exit__.assert_called_once_with(None, None, None) fake_chmod.assert_called_once_with(expected_path, 0600) self.assertEqual(path, expected_path)
def test_config(self): step = Mock() remote = Remote(step, None) self.assertEqual(remote.config, step.get_config.return_value)
def test_working_dir(self): step = Mock() remote = Remote(step, None) self.assertEqual(remote.working_dir, step.get_working_dir.return_value)
def test_remote_id(self): step = Mock() step.parent = Mock(repo_id='123') remote = Remote(step, None) self.assertEqual(remote.remote_id, step.parent.repo_id)
def test_url(self): step = Mock() step.parent = Mock(feed_url='http://') remote = Remote(step, None) self.assertEqual(remote.url, step.parent.feed_url)
def test_init(self): step = Mock() repository = Mock() remote = Remote(step, repository) self.assertEqual(remote.step, step) self.assertEqual(remote.repository, repository)