def test_map_cert_tls_container(self): tls = data_models.TLSContainer(primary_cn='fakeCN', certificate='imaCert', private_key='imaPrivateKey', intermediates=['imainter1', 'imainter2']) cert = mock.MagicMock() cert.get_private_key.return_value = tls.private_key cert.get_certificate.return_value = tls.certificate cert.get_intermediates.return_value = tls.intermediates cert.get_private_key_passphrase.return_value = 'passphrase' with mock.patch.object(cert_parser, 'get_host_names') as cp: with mock.patch.object(cert_parser, 'dump_private_key') as dp: cp.return_value = {'cn': 'fakeCN'} dp.return_value = 'imaPrivateKey' self.assertEqual(tls.primary_cn, jinja_cfg._map_cert_tls_container( cert).primary_cn) self.assertEqual(tls.certificate, jinja_cfg._map_cert_tls_container( cert).certificate) self.assertEqual(tls.private_key, jinja_cfg._map_cert_tls_container( cert).private_key) self.assertEqual(tls.intermediates, jinja_cfg._map_cert_tls_container( cert).intermediates)
def _map_cert_tls_container(cert): """Map cert data to TLS data model :param cert: TLS certificate :returns: mapped TLSContainer object """ certificate = cert.get_certificate() pkey = cert_parser.dump_private_key(cert.get_private_key(), cert.get_private_key_passphrase()) return data_models.TLSContainer(primary_cn=_get_primary_cn(certificate), private_key=pkey, certificate=certificate, intermediates=cert.get_intermediates())
def test_process_tls_certificates(self): sl = sample_configs.sample_listener_tuple(tls=True, sni=True) tls = data_models.TLSContainer(primary_cn='fakeCN', certificate='imaCert', private_key='imaPrivateKey', intermediates=['imainter1', 'imainter2']) cert = mock.Mock(spec=cert_manager.Cert) cert.get_private_key.return_value = tls.private_key cert.get_certificate.return_value = tls.certificate cert.get_intermediates.return_value = tls.intermediates with mock.patch.object(jinja_cfg, '_map_cert_tls_container') as map, \ mock.patch.object(jinja_cfg, '_store_listener_crt') as store_cert, \ mock.patch.object(cert_parser, 'get_host_names') as get_host_names, \ mock.patch.object(jinja_cfg, 'CERT_MANAGER_PLUGIN') as cert_mgr: map.return_value = tls cert_mgr_mock = mock.Mock(spec=cert_manager.CertManager) cert_mgr_mock.get_cert.return_value = cert cert_mgr.CertManager.return_value = cert_mgr_mock get_host_names.return_value = {'cn': 'fakeCN'} jinja_cfg._process_tls_certificates(sl) # Ensure get_cert is called three times calls_certs = [ mock.call(sl.default_tls_container.id), mock.call('cont_id_2'), mock.call('cont_id_3')] cert_mgr_mock.get_cert.call_args_list == calls_certs # Ensure store_cert is called three times calls_ac = [mock.call('/v2/', 'sample_listener_id_1', tls), mock.call('/v2/', 'sample_listener_id_1', tls), mock.call('/v2/', 'sample_listener_id_1', tls)] store_cert.call_args_list == calls_ac