コード例 #1
0
ファイル: test_jinja_cfg.py プロジェクト: fcxliang/lzf5-study
 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)
コード例 #2
0
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())
コード例 #3
0
ファイル: test_jinja_cfg.py プロジェクト: fcxliang/lzf5-study
    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