initial commit
This commit is contained in:
16
lemur/tests/__init__.py
Normal file
16
lemur/tests/__init__.py
Normal file
@ -0,0 +1,16 @@
|
||||
import unittest
|
||||
from nose.tools import eq_
|
||||
|
||||
from lemur import app
|
||||
|
||||
test_app = app.test_client()
|
||||
|
||||
HEADERS = {'Content-Type': 'application/json'}
|
||||
|
||||
|
||||
def check_content_type(headers):
|
||||
eq_(headers['Content-Type'], 'application/json')
|
||||
|
||||
|
||||
class LemurTestCase(unittest.TestCase):
|
||||
pass
|
0
lemur/tests/certificates/__init__.py
Normal file
0
lemur/tests/certificates/__init__.py
Normal file
87
lemur/tests/certificates/test_certificates.py
Normal file
87
lemur/tests/certificates/test_certificates.py
Normal file
@ -0,0 +1,87 @@
|
||||
import os
|
||||
import shutil
|
||||
import boto
|
||||
|
||||
from lemur import app
|
||||
from lemur.tests import LemurTestCase
|
||||
from lemur.tests.constants import TEST_CERT, TEST_KEY
|
||||
|
||||
from moto import mock_iam, mock_sts, mock_s3
|
||||
|
||||
|
||||
class CertificateTestCase(LemurTestCase):
|
||||
def test_create_challenge(self):
|
||||
from lemur.certificates.service import create_challenge
|
||||
self.assertTrue(len(create_challenge()) >= 24)
|
||||
|
||||
def test_hash_domains(self):
|
||||
from lemur.certificates.service import hash_domains
|
||||
h = hash_domains(['netflix.com', 'www.netflix.com', 'movies.netflix.com'])
|
||||
self.assertEqual('c9c83253b46c7c1245c100ed3f7045eb', h)
|
||||
|
||||
def test_create_csr(self):
|
||||
from lemur.certificates.service import create_csr
|
||||
from lemur.tests.certificates.test_csr import TEST_CSR
|
||||
path = create_csr(['netflix.com'], TEST_CSR)
|
||||
files = len(os.listdir(path))
|
||||
self.assertEqual(files, 4)
|
||||
shutil.rmtree(path)
|
||||
|
||||
def test_create_san_csr(self):
|
||||
from lemur.certificates.service import create_csr
|
||||
from lemur.tests.certificates.test_csr import TEST_CSR
|
||||
path = create_csr(['netflix.com', 'www.netflix.com'], TEST_CSR)
|
||||
files = len(os.listdir(path))
|
||||
self.assertEqual(files, 4)
|
||||
shutil.rmtree(path)
|
||||
|
||||
def test_create_path(self):
|
||||
from lemur.certificates.service import create_path
|
||||
path = create_path("blah")
|
||||
self.assertIn('blah', path)
|
||||
shutil.rmtree(path)
|
||||
|
||||
@mock_s3
|
||||
@mock_sts
|
||||
@mock_iam
|
||||
def test_save_cert(self):
|
||||
from lemur.certificates.service import save_cert
|
||||
from lemur.common.services.aws.iam import get_all_server_certs
|
||||
conn = boto.connect_s3()
|
||||
bucket = conn.create_bucket(app.config.get('S3_BUCKET'))
|
||||
cert = save_cert(TEST_CERT, TEST_KEY, None, "blah", "blah", [1])
|
||||
count = 0
|
||||
for key in bucket.list():
|
||||
count += 1
|
||||
|
||||
self.assertEqual(count, 4)
|
||||
certs = get_all_server_certs('1111')
|
||||
self.assertEqual(len(certs), 1)
|
||||
|
||||
# @mock_s3
|
||||
# @mock_sts
|
||||
# @mock_iam
|
||||
# def test_upload_cert(self):
|
||||
# from lemur.certificates.service import upload
|
||||
# from lemur.common.services.aws.iam import get_all_server_certs
|
||||
# conn = boto.connect_s3()
|
||||
# bucket = conn.create_bucket(app.config.get('S3_BUCKET'))
|
||||
#
|
||||
# cert_up = {"public_cert": TEST_CERT, "private_key": TEST_KEY, "owner": "test@example.com", "accounts_ids": ['1111']}
|
||||
#
|
||||
# cert_name = upload(**cert_up)
|
||||
# valid_name = 'AHB-dfdsflkj.net-NetflixInc-20140525-20150525'
|
||||
# self.assertEqual(cert_name, valid_name)
|
||||
#
|
||||
# app.logger.debug(cert_name)
|
||||
# count = 0
|
||||
#
|
||||
# for key in bucket.list():
|
||||
# count += 1
|
||||
#
|
||||
# self.assertEqual(count, 2)
|
||||
# certs = get_all_server_certs('179727101194')
|
||||
# self.assertEqual(len(certs), 1)
|
||||
#
|
||||
#
|
||||
#
|
38
lemur/tests/certificates/test_csr.py
Normal file
38
lemur/tests/certificates/test_csr.py
Normal file
@ -0,0 +1,38 @@
|
||||
TEST_CSR = """
|
||||
# Configuration for standard CSR generation for Netflix
|
||||
# Used for procuring VeriSign certificates
|
||||
# Author: jachan
|
||||
# Contact: cloudsecurity@netflix.com
|
||||
|
||||
[ req ]
|
||||
# Use a 2048 bit private key
|
||||
default_bits = 2048
|
||||
default_keyfile = key.pem
|
||||
prompt = no
|
||||
encrypt_key = no
|
||||
|
||||
# base request
|
||||
distinguished_name = req_distinguished_name
|
||||
|
||||
# extensions
|
||||
# Uncomment the following line if you are requesting a SAN cert
|
||||
{is_san_comment}req_extensions = req_ext
|
||||
|
||||
# distinguished_name
|
||||
[ req_distinguished_name ]
|
||||
countryName = "US" # C=
|
||||
stateOrProvinceName = "CALIFORNIA" # ST=
|
||||
localityName = "Los Gatos" # L=
|
||||
organizationName = "Netflix, Inc." # O=
|
||||
organizationalUnitName = "Operations" # OU=
|
||||
# This is the hostname/subject name on the certificate
|
||||
commonName = "{DNS[0]}" # CN=
|
||||
|
||||
[ req_ext ]
|
||||
# Uncomment the following line if you are requesting a SAN cert
|
||||
{is_san_comment}subjectAltName = @alt_names
|
||||
|
||||
[alt_names]
|
||||
# Put your SANs here
|
||||
{DNS_LINES}
|
||||
"""
|
1
lemur/tests/certificates/test_pack/challenge.txt
Normal file
1
lemur/tests/certificates/test_pack/challenge.txt
Normal file
@ -0,0 +1 @@
|
||||
KRPZPA&*!_~%dbnuzf153594
|
38
lemur/tests/certificates/test_pack/csr_config.txt
Normal file
38
lemur/tests/certificates/test_pack/csr_config.txt
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
# Configuration for standard CSR generation for Netflix
|
||||
# Used for procuring VeriSign certificates
|
||||
# Author: jachan
|
||||
# Contact: cloudsecurity@netflix.com
|
||||
|
||||
[ req ]
|
||||
# Use a 2048 bit private key
|
||||
default_bits = 2048
|
||||
default_keyfile = key.pem
|
||||
prompt = no
|
||||
encrypt_key = no
|
||||
|
||||
# base request
|
||||
distinguished_name = req_distinguished_name
|
||||
|
||||
# extensions
|
||||
# Uncomment the following line if you are requesting a SAN cert
|
||||
#req_extensions = req_ext
|
||||
|
||||
# distinguished_name
|
||||
[ req_distinguished_name ]
|
||||
countryName = "US" # C=
|
||||
stateOrProvinceName = "CALIFORNIA" # ST=
|
||||
localityName = "Los Gatos" # L=
|
||||
organizationName = "Netflix, Inc." # O=
|
||||
organizationalUnitName = "Operations" # OU=
|
||||
# This is the hostname/subject name on the certificate
|
||||
commonName = "dfdsflkj.net" # CN=
|
||||
|
||||
[ req_ext ]
|
||||
# Uncomment the following line if you are requesting a SAN cert
|
||||
#subjectAltName = @alt_names
|
||||
|
||||
[alt_names]
|
||||
# Put your SANs here
|
||||
|
||||
|
27
lemur/tests/certificates/test_pack/private.key
Normal file
27
lemur/tests/certificates/test_pack/private.key
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEogIBAAKCAQEAvNudwW+UeQqkpY71MIdEg501AFlPKuOXG2xU8DZhvZS6dKv+
|
||||
kDmIWdEqodDgkQiy0jyTgTwxwRqDSw96R6ZgrXefUoJJo66aCsosTBZtVaE85f1L
|
||||
bj2+3U678c+rekUdkrnGcGCo6b8QtdvBpiDy2clneox8tSvmffAdcR1uCv/790/k
|
||||
PzQ/djWDX9JcBRyDkcTJwYC0/ek7URvA/+MXmgUL13T+gWKqduaKuIBlFetonDjn
|
||||
nO11QUBiusIuHV62wzKn8m5Nc+4XoaBR0YWMFn/g6qXDYrwfCsMpka7vSWJFv5Ff
|
||||
yf+7kY3wU4xIwU2vXlIDcCsdUu6b/pYoQ0YOsQIDAQABAoIBAGbFH6iWnnXrq8MH
|
||||
8zcQNOFmF+RztRgCt0TOA76f6TowB/LbcXBsTl2J7CgYMUvbLuwm2KHX7r9FPTMI
|
||||
XiNFT5C16rYMfiQbLGo4sDhLb/3L+wawem6oHQfzA2VH++lSWRByFaEriF+CgIZl
|
||||
6pALl/uZlLzkXCx+kjPwCSV3vV0wFkDnNs6+wPrz2IhkePsuC8J0QKQLlwsES2It
|
||||
Gizzhpehdv9lc9MyZC//1QlD9gMDl5ok5Bt1Xm2c12XUEEcLlKQkJxiOrBOfXPmV
|
||||
PHCdLc7gZO30hc6dyQ1SSnLpywhz/a0ir2GMvkMbS5hculpcZmwEcdZl1HYD8ObP
|
||||
yOMbPE0CgYEA4LVGJKGtbM8RiBB0MstxNstMYVJ4mXB0lSQ0RazdO3S3ojn+oLpF
|
||||
b2pvV6m9WnHiCGigWkzhqtGGCo6aqE0MoiR4jTN8GhiZz4ggDDaVgc4Px5reUD+r
|
||||
tRsTpBHseGQ+ODGgkMI8eJYkdyqkECkYjAOrdy6uorvgxUAZecRIfJMCgYEA1yhM
|
||||
7NidTNRuA+huS5GcQwQweTM6P1qF7Kfk1JYQMVu4gibLZiLHlWCyHI9lrbI7IaMm
|
||||
g/4jXXoewv7IvyrrSEFulkPeVWxCe3mjfQ8JANfUj4kuR915LSn4lX2pbUgUS66K
|
||||
vJSUJtnzLUmb8khLEcOmDbmTFZl8D/bTHFFZlisCgYAeelfWNhuoq3lMRDcOgKuN
|
||||
bAujE6WJ4kfdxrhUTvr+ynjxxv3zXPB4CS6q7Dnjn5ix3UcKmGzvV1Xf7rGpbDHv
|
||||
eBTlyfrmKzoJfQQjw++JWKKpRycqKUin2tFSKqAxQB90Tb7ig4XiMTMm+qCgFILg
|
||||
0sqZ8rn7FpKJDoWmD2ppgwKBgG2Dl9QeVcKbhfv7PNi+HvmFkl6+knFY1D4nHzSN
|
||||
xWQ6OWoV8QXlwgzokQA0hR6qT6rJbntUyg90b1/1a5zSbbvzgiR+GxcD6bsLqQmo
|
||||
s354XTtKKgJuWpWAfYUp1ylGvP3gs8FVJyu3WC2+/9+MqJk8KrNlt9YQr7M4gTAy
|
||||
wBTNAoGAGU7Po4uI3xDKGLLK/ot3D3P8U9ByfeLlrUZtTz1PASsMOr92bkXmUPlE
|
||||
DYUd5uFfwwlvbMNT1Ooeyrzg3bARd9B6ATyMkOaJeGoQwFAI468iucnm9rNXB+/t
|
||||
U2rbIi1pXSm8zSNEY85tf6C8DU/5YbcAPf47a2UYhwCpYAJfMk0=
|
||||
-----END RSA PRIVATE KEY-----
|
17
lemur/tests/certificates/test_pack/request.csr
Normal file
17
lemur/tests/certificates/test_pack/request.csr
Normal file
@ -0,0 +1,17 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICvzCCAacCAQAwejELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNBTElGT1JOSUEx
|
||||
EjAQBgNVBAcTCUxvcyBHYXRvczEWMBQGA1UEChMNTmV0ZmxpeCwgSW5jLjETMBEG
|
||||
A1UECxMKT3BlcmF0aW9uczEVMBMGA1UEAxMMZGZkc2Zsa2oubmV0MIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvNudwW+UeQqkpY71MIdEg501AFlPKuOX
|
||||
G2xU8DZhvZS6dKv+kDmIWdEqodDgkQiy0jyTgTwxwRqDSw96R6ZgrXefUoJJo66a
|
||||
CsosTBZtVaE85f1Lbj2+3U678c+rekUdkrnGcGCo6b8QtdvBpiDy2clneox8tSvm
|
||||
ffAdcR1uCv/790/kPzQ/djWDX9JcBRyDkcTJwYC0/ek7URvA/+MXmgUL13T+gWKq
|
||||
duaKuIBlFetonDjnnO11QUBiusIuHV62wzKn8m5Nc+4XoaBR0YWMFn/g6qXDYrwf
|
||||
CsMpka7vSWJFv5Ffyf+7kY3wU4xIwU2vXlIDcCsdUu6b/pYoQ0YOsQIDAQABoAAw
|
||||
DQYJKoZIhvcNAQEFBQADggEBAE8b0+IYGiR64Me/L0/njYvSR5WR4EnjW99Sc8X5
|
||||
k93zpk4hExrZhrlkDBA/jUHhBZcPNV9w/YkhSu5ubPjRp9gRM2d4B9gGJFAs+bwe
|
||||
LS9hCOxWIMKgvaBMEDQFcwqAv6kEJzmrIa7LtWS39wNfdko2hANtm7z9qskc8bPr
|
||||
265+Z48DwSNCF4RPhVp9eDifjHrj0I//GMXYa92uvgj1BlPo/SGMS+XFQF779p2b
|
||||
622HmUCop3pYeIyYd6rirvl9+KwqvIhm2MqHk62eHOK7Bn/FPev8OUDeV6pIvvSV
|
||||
UxsEHjjLm0V/lOD65lROc7dTq4jO5PkpoKnFQDgV5v0Bf/k=
|
||||
-----END CERTIFICATE REQUEST-----
|
21
lemur/tests/certificates/test_pack/server.crt
Normal file
21
lemur/tests/certificates/test_pack/server.crt
Normal file
@ -0,0 +1,21 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDcDCCAlgCCQC8msHu/aa61zANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJV
|
||||
UzETMBEGA1UECBMKQ0FMSUZPUk5JQTESMBAGA1UEBxMJTG9zIEdhdG9zMRYwFAYD
|
||||
VQQKEw1OZXRmbGl4LCBJbmMuMRMwEQYDVQQLEwpPcGVyYXRpb25zMRUwEwYDVQQD
|
||||
EwxkZmRzZmxrai5uZXQwHhcNMTQwNTI1MTczMDMzWhcNMTUwNTI1MTczMDMzWjB6
|
||||
MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ0FMSUZPUk5JQTESMBAGA1UEBxMJTG9z
|
||||
IEdhdG9zMRYwFAYDVQQKEw1OZXRmbGl4LCBJbmMuMRMwEQYDVQQLEwpPcGVyYXRp
|
||||
b25zMRUwEwYDVQQDEwxkZmRzZmxrai5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
||||
DwAwggEKAoIBAQC8253Bb5R5CqSljvUwh0SDnTUAWU8q45cbbFTwNmG9lLp0q/6Q
|
||||
OYhZ0Sqh0OCRCLLSPJOBPDHBGoNLD3pHpmCtd59SgkmjrpoKyixMFm1VoTzl/Utu
|
||||
Pb7dTrvxz6t6RR2SucZwYKjpvxC128GmIPLZyWd6jHy1K+Z98B1xHW4K//v3T+Q/
|
||||
ND92NYNf0lwFHIORxMnBgLT96TtRG8D/4xeaBQvXdP6BYqp25oq4gGUV62icOOec
|
||||
7XVBQGK6wi4dXrbDMqfybk1z7hehoFHRhYwWf+DqpcNivB8KwymRru9JYkW/kV/J
|
||||
/7uRjfBTjEjBTa9eUgNwKx1S7pv+lihDRg6xAgMBAAEwDQYJKoZIhvcNAQEFBQAD
|
||||
ggEBAJHwa4l2iSiFBb6wVFBJEWEt31qp+njiVCoTg2OJzCT60Xb26hkrsiTldIIh
|
||||
eB9+y+fwdfwopzWhkNbIOlCfudx/uxtpor8/3BRbjSlNwDUg2L8pfAircJMFLQUM
|
||||
O6nqPOBWCe8hXwe9FQM/oFOavf/AAw/FED+892xlytjirK9u3B28O20W11+fY7hp
|
||||
8LQVBrMoVxFeLWmmwETAltJ7HEYutplRzYTM0vLBARl4Vd5kLJlY3j2Dp1ZpRGcg
|
||||
CrQp26UD/oaAPGtiZQSC4LJ+4JfOuuqbm3CI24QMCh9rxv3ZoOQnFuC+7cZgqrat
|
||||
V4bxCrVvWhrrDSgy9+A80NVzQ3k=
|
||||
-----END CERTIFICATE-----
|
51
lemur/tests/constants.py
Normal file
51
lemur/tests/constants.py
Normal file
@ -0,0 +1,51 @@
|
||||
TEST_KEY = """-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEogIBAAKCAQEAvNudwW+UeQqkpY71MIdEg501AFlPKuOXG2xU8DZhvZS6dKv+
|
||||
kDmIWdEqodDgkQiy0jyTgTwxwRqDSw96R6ZgrXefUoJJo66aCsosTBZtVaE85f1L
|
||||
bj2+3U678c+rekUdkrnGcGCo6b8QtdvBpiDy2clneox8tSvmffAdcR1uCv/790/k
|
||||
PzQ/djWDX9JcBRyDkcTJwYC0/ek7URvA/+MXmgUL13T+gWKqduaKuIBlFetonDjn
|
||||
nO11QUBiusIuHV62wzKn8m5Nc+4XoaBR0YWMFn/g6qXDYrwfCsMpka7vSWJFv5Ff
|
||||
yf+7kY3wU4xIwU2vXlIDcCsdUu6b/pYoQ0YOsQIDAQABAoIBAGbFH6iWnnXrq8MH
|
||||
8zcQNOFmF+RztRgCt0TOA76f6TowB/LbcXBsTl2J7CgYMUvbLuwm2KHX7r9FPTMI
|
||||
XiNFT5C16rYMfiQbLGo4sDhLb/3L+wawem6oHQfzA2VH++lSWRByFaEriF+CgIZl
|
||||
6pALl/uZlLzkXCx+kjPwCSV3vV0wFkDnNs6+wPrz2IhkePsuC8J0QKQLlwsES2It
|
||||
Gizzhpehdv9lc9MyZC//1QlD9gMDl5ok5Bt1Xm2c12XUEEcLlKQkJxiOrBOfXPmV
|
||||
PHCdLc7gZO30hc6dyQ1SSnLpywhz/a0ir2GMvkMbS5hculpcZmwEcdZl1HYD8ObP
|
||||
yOMbPE0CgYEA4LVGJKGtbM8RiBB0MstxNstMYVJ4mXB0lSQ0RazdO3S3ojn+oLpF
|
||||
b2pvV6m9WnHiCGigWkzhqtGGCo6aqE0MoiR4jTN8GhiZz4ggDDaVgc4Px5reUD+r
|
||||
tRsTpBHseGQ+ODGgkMI8eJYkdyqkECkYjAOrdy6uorvgxUAZecRIfJMCgYEA1yhM
|
||||
7NidTNRuA+huS5GcQwQweTM6P1qF7Kfk1JYQMVu4gibLZiLHlWCyHI9lrbI7IaMm
|
||||
g/4jXXoewv7IvyrrSEFulkPeVWxCe3mjfQ8JANfUj4kuR915LSn4lX2pbUgUS66K
|
||||
vJSUJtnzLUmb8khLEcOmDbmTFZl8D/bTHFFZlisCgYAeelfWNhuoq3lMRDcOgKuN
|
||||
bAujE6WJ4kfdxrhUTvr+ynjxxv3zXPB4CS6q7Dnjn5ix3UcKmGzvV1Xf7rGpbDHv
|
||||
eBTlyfrmKzoJfQQjw++JWKKpRycqKUin2tFSKqAxQB90Tb7ig4XiMTMm+qCgFILg
|
||||
0sqZ8rn7FpKJDoWmD2ppgwKBgG2Dl9QeVcKbhfv7PNi+HvmFkl6+knFY1D4nHzSN
|
||||
xWQ6OWoV8QXlwgzokQA0hR6qT6rJbntUyg90b1/1a5zSbbvzgiR+GxcD6bsLqQmo
|
||||
s354XTtKKgJuWpWAfYUp1ylGvP3gs8FVJyu3WC2+/9+MqJk8KrNlt9YQr7M4gTAy
|
||||
wBTNAoGAGU7Po4uI3xDKGLLK/ot3D3P8U9ByfeLlrUZtTz1PASsMOr92bkXmUPlE
|
||||
DYUd5uFfwwlvbMNT1Ooeyrzg3bARd9B6ATyMkOaJeGoQwFAI468iucnm9rNXB+/t
|
||||
U2rbIi1pXSm8zSNEY85tf6C8DU/5YbcAPf47a2UYhwCpYAJfMk0=
|
||||
-----END RSA PRIVATE KEY-----"""
|
||||
|
||||
TEST_CERT = """-----BEGIN CERTIFICATE-----
|
||||
MIIDcDCCAlgCCQC8msHu/aa61zANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJV
|
||||
UzETMBEGA1UECBMKQ0FMSUZPUk5JQTESMBAGA1UEBxMJTG9zIEdhdG9zMRYwFAYD
|
||||
VQQKEw1OZXRmbGl4LCBJbmMuMRMwEQYDVQQLEwpPcGVyYXRpb25zMRUwEwYDVQQD
|
||||
EwxkZmRzZmxrai5uZXQwHhcNMTQwNTI1MTczMDMzWhcNMTUwNTI1MTczMDMzWjB6
|
||||
MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ0FMSUZPUk5JQTESMBAGA1UEBxMJTG9z
|
||||
IEdhdG9zMRYwFAYDVQQKEw1OZXRmbGl4LCBJbmMuMRMwEQYDVQQLEwpPcGVyYXRp
|
||||
b25zMRUwEwYDVQQDEwxkZmRzZmxrai5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
||||
DwAwggEKAoIBAQC8253Bb5R5CqSljvUwh0SDnTUAWU8q45cbbFTwNmG9lLp0q/6Q
|
||||
OYhZ0Sqh0OCRCLLSPJOBPDHBGoNLD3pHpmCtd59SgkmjrpoKyixMFm1VoTzl/Utu
|
||||
Pb7dTrvxz6t6RR2SucZwYKjpvxC128GmIPLZyWd6jHy1K+Z98B1xHW4K//v3T+Q/
|
||||
ND92NYNf0lwFHIORxMnBgLT96TtRG8D/4xeaBQvXdP6BYqp25oq4gGUV62icOOec
|
||||
7XVBQGK6wi4dXrbDMqfybk1z7hehoFHRhYwWf+DqpcNivB8KwymRru9JYkW/kV/J
|
||||
/7uRjfBTjEjBTa9eUgNwKx1S7pv+lihDRg6xAgMBAAEwDQYJKoZIhvcNAQEFBQAD
|
||||
ggEBAJHwa4l2iSiFBb6wVFBJEWEt31qp+njiVCoTg2OJzCT60Xb26hkrsiTldIIh
|
||||
eB9+y+fwdfwopzWhkNbIOlCfudx/uxtpor8/3BRbjSlNwDUg2L8pfAircJMFLQUM
|
||||
O6nqPOBWCe8hXwe9FQM/oFOavf/AAw/FED+892xlytjirK9u3B28O20W11+fY7hp
|
||||
8LQVBrMoVxFeLWmmwETAltJ7HEYutplRzYTM0vLBARl4Vd5kLJlY3j2Dp1ZpRGcg
|
||||
CrQp26UD/oaAPGtiZQSC4LJ+4JfOuuqbm3CI24QMCh9rxv3ZoOQnFuC+7cZgqrat
|
||||
V4bxCrVvWhrrDSgy9+A80NVzQ3k=
|
||||
-----END CERTIFICATE-----"""
|
||||
|
||||
|
0
lemur/tests/elbs/__init__.py
Normal file
0
lemur/tests/elbs/__init__.py
Normal file
5
lemur/tests/elbs/test_elbs.py
Normal file
5
lemur/tests/elbs/test_elbs.py
Normal file
@ -0,0 +1,5 @@
|
||||
import os
|
||||
import shutil
|
||||
from lemur import app
|
||||
from lemur.tests import LemurTestCase
|
||||
|
36
lemur/tests/js/.jshintrc
Normal file
36
lemur/tests/js/.jshintrc
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"node": true,
|
||||
"browser": true,
|
||||
"esnext": true,
|
||||
"bitwise": true,
|
||||
"camelcase": true,
|
||||
"curly": true,
|
||||
"eqeqeq": true,
|
||||
"immed": true,
|
||||
"indent": 2,
|
||||
"latedef": true,
|
||||
"newcap": true,
|
||||
"noarg": true,
|
||||
"quotmark": "single",
|
||||
"regexp": true,
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
"strict": true,
|
||||
"trailing": true,
|
||||
"smarttabs": true,
|
||||
"globals": {
|
||||
"after": false,
|
||||
"afterEach": false,
|
||||
"angular": false,
|
||||
"before": false,
|
||||
"beforeEach": false,
|
||||
"browser": false,
|
||||
"describe": false,
|
||||
"expect": false,
|
||||
"inject": false,
|
||||
"it": false,
|
||||
"jasmine": false,
|
||||
"spyOn": false
|
||||
}
|
||||
}
|
||||
|
10
lemur/tests/js/runner.html
Normal file
10
lemur/tests/js/runner.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>End2end Test Runner</title>
|
||||
<script src="vendor/angular-scenario.js" ng-autotest></script>
|
||||
<script src="scenarios.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
22
lemur/tests/js/spec/controllers/certificatecreate.js
Normal file
22
lemur/tests/js/spec/controllers/certificatecreate.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
describe('Controller: CertificatecreateCtrl', function () {
|
||||
|
||||
// load the controller's module
|
||||
beforeEach(module('lemurApp'));
|
||||
|
||||
var CertificatecreateCtrl,
|
||||
scope;
|
||||
|
||||
// Initialize the controller and a mock scope
|
||||
beforeEach(inject(function ($controller, $rootScope) {
|
||||
scope = $rootScope.$new();
|
||||
CertificatecreateCtrl = $controller('CertificatecreateCtrl', {
|
||||
$scope: scope
|
||||
});
|
||||
}));
|
||||
|
||||
it('should attach a list of awesomeThings to the scope', function () {
|
||||
expect(scope.awesomeThings.length).toBe(3);
|
||||
});
|
||||
});
|
22
lemur/tests/js/spec/controllers/certificates.js
Normal file
22
lemur/tests/js/spec/controllers/certificates.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
describe('Controller: CertificatesCtrl', function () {
|
||||
|
||||
// load the controller's module
|
||||
beforeEach(module('lemurApp'));
|
||||
|
||||
var CertificatesCtrl,
|
||||
scope;
|
||||
|
||||
// Initialize the controller and a mock scope
|
||||
beforeEach(inject(function ($controller, $rootScope) {
|
||||
scope = $rootScope.$new();
|
||||
CertificatesCtrl = $controller('CertificatesCtrl', {
|
||||
$scope: scope
|
||||
});
|
||||
}));
|
||||
|
||||
it('should attach a list of awesomeThings to the scope', function () {
|
||||
expect(scope.awesomeThings.length).toBe(3);
|
||||
});
|
||||
});
|
22
lemur/tests/js/spec/controllers/dashboard.js
Normal file
22
lemur/tests/js/spec/controllers/dashboard.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
describe('Controller: DashboardCtrl', function () {
|
||||
|
||||
// load the controller's module
|
||||
beforeEach(module('lemurApp'));
|
||||
|
||||
var DashboardCtrl,
|
||||
scope;
|
||||
|
||||
// Initialize the controller and a mock scope
|
||||
beforeEach(inject(function ($controller, $rootScope) {
|
||||
scope = $rootScope.$new();
|
||||
DashboardCtrl = $controller('DashboardCtrl', {
|
||||
$scope: scope
|
||||
});
|
||||
}));
|
||||
|
||||
it('should attach a list of awesomeThings to the scope', function () {
|
||||
expect(scope.awesomeThings.length).toBe(3);
|
||||
});
|
||||
});
|
22
lemur/tests/js/spec/controllers/elbs.js
Normal file
22
lemur/tests/js/spec/controllers/elbs.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
describe('Controller: ElbsCtrl', function () {
|
||||
|
||||
// load the controller's module
|
||||
beforeEach(module('lemurApp'));
|
||||
|
||||
var ElbsCtrl,
|
||||
scope;
|
||||
|
||||
// Initialize the controller and a mock scope
|
||||
beforeEach(inject(function ($controller, $rootScope) {
|
||||
scope = $rootScope.$new();
|
||||
ElbsCtrl = $controller('ElbsCtrl', {
|
||||
$scope: scope
|
||||
});
|
||||
}));
|
||||
|
||||
it('should attach a list of awesomeThings to the scope', function () {
|
||||
expect(scope.awesomeThings.length).toBe(3);
|
||||
});
|
||||
});
|
22
lemur/tests/js/spec/controllers/main.js
Normal file
22
lemur/tests/js/spec/controllers/main.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
describe('Controller: MainCtrl', function () {
|
||||
|
||||
// load the controller's module
|
||||
beforeEach(module('lemurApp'));
|
||||
|
||||
var MainCtrl,
|
||||
scope;
|
||||
|
||||
// Initialize the controller and a mock scope
|
||||
beforeEach(inject(function ($controller, $rootScope) {
|
||||
scope = $rootScope.$new();
|
||||
MainCtrl = $controller('MainCtrl', {
|
||||
$scope: scope
|
||||
});
|
||||
}));
|
||||
|
||||
it('should attach a list of awesomeThings to the scope', function () {
|
||||
expect(scope.awesomeThings.length).toBe(3);
|
||||
});
|
||||
});
|
0
lemur/tests/listeners/__init__.py
Normal file
0
lemur/tests/listeners/__init__.py
Normal file
0
lemur/tests/services/__init__.py
Normal file
0
lemur/tests/services/__init__.py
Normal file
51
lemur/tests/services/test_elb.py
Normal file
51
lemur/tests/services/test_elb.py
Normal file
@ -0,0 +1,51 @@
|
||||
import boto
|
||||
from lemur.tests import LemurTestCase
|
||||
|
||||
from moto import mock_elb, mock_sts
|
||||
|
||||
|
||||
class ELBTestCase(LemurTestCase):
|
||||
@mock_sts
|
||||
@mock_elb
|
||||
def test_add_listener(self):
|
||||
from lemur.common.services.aws.elb import create_new_listeners
|
||||
conn = boto.connect_elb()
|
||||
zones = ['us-east-1a', 'us-east-1b']
|
||||
ports = [(80, 8080, 'http')]
|
||||
conn.create_load_balancer('my-lb', zones, ports)
|
||||
create_new_listeners('111', 'us-east-1', 'my-lb', listeners=[('443', '80', 'HTTP')])
|
||||
balancer = conn.get_all_load_balancers()[0]
|
||||
self.assertEqual(balancer.name, "my-lb")
|
||||
self.assertEqual(len(balancer.listeners), 2)
|
||||
|
||||
@mock_sts
|
||||
@mock_elb
|
||||
def test_update_listener(self):
|
||||
from lemur.common.services.aws.elb import update_listeners
|
||||
conn = boto.connect_elb()
|
||||
zones = ['us-east-1a', 'us-east-1b']
|
||||
ports = [(80, 8080, 'http')]
|
||||
conn.create_load_balancer('my-lb', zones, ports)
|
||||
update_listeners('111', 'us-east-1', 'my-lb', listeners=[('80', '7001', 'http')])
|
||||
balancer = conn.get_all_load_balancers()[0]
|
||||
listener = balancer.listeners[0]
|
||||
self.assertEqual(listener.load_balancer_port, 80)
|
||||
self.assertEqual(listener.instance_port, 7001)
|
||||
self.assertEqual(listener.protocol, "HTTP")
|
||||
|
||||
@mock_sts
|
||||
@mock_elb
|
||||
def test_set_certificate(self):
|
||||
from lemur.common.services.aws.elb import attach_certificate
|
||||
conn = boto.connect_elb()
|
||||
zones = ['us-east-1a', 'us-east-1b']
|
||||
ports = [(443, 7001, 'https', 'sslcert')]
|
||||
conn.create_load_balancer('my-lb', zones, ports)
|
||||
attach_certificate('1111', 'us-east-1', 'my-lb', 443, 'somecert')
|
||||
balancer = conn.get_all_load_balancers()[0]
|
||||
listener = balancer.listeners[0]
|
||||
self.assertEqual(listener.load_balancer_port, 443)
|
||||
self.assertEqual(listener.instance_port, 7001)
|
||||
self.assertEqual(listener.protocol, "HTTPS")
|
||||
self.assertEqual(listener.ssl_certificate_id, 'somecert')
|
||||
|
37
lemur/tests/services/test_iam.py
Normal file
37
lemur/tests/services/test_iam.py
Normal file
@ -0,0 +1,37 @@
|
||||
from lemur import app
|
||||
from lemur.tests import LemurTestCase
|
||||
from lemur.tests.constants import TEST_CERT, TEST_KEY
|
||||
|
||||
from lemur.certificates.models import Certificate
|
||||
|
||||
from moto import mock_iam, mock_sts
|
||||
|
||||
|
||||
class IAMTestCase(LemurTestCase):
|
||||
@mock_sts
|
||||
@mock_iam
|
||||
def test_get_all_server_certs(self):
|
||||
from lemur.common.services.aws.iam import upload_cert, get_all_server_certs
|
||||
cert = Certificate(TEST_CERT)
|
||||
upload_cert('1111', cert, TEST_KEY)
|
||||
certs = get_all_server_certs('1111')
|
||||
self.assertEquals(len(certs), 1)
|
||||
|
||||
@mock_sts
|
||||
@mock_iam
|
||||
def test_get_server_cert(self):
|
||||
from lemur.common.services.aws.iam import upload_cert, get_cert_from_arn
|
||||
cert = Certificate(TEST_CERT)
|
||||
upload_cert('1111', cert, TEST_KEY)
|
||||
body, chain = get_cert_from_arn('arn:aws:iam::123456789012:server-certificate/AHB-dfdsflkj.net-NetflixInc-20140525-20150525')
|
||||
self.assertTrue(body)
|
||||
|
||||
@mock_sts
|
||||
@mock_iam
|
||||
def test_upload_server_cert(self):
|
||||
from lemur.common.services.aws.iam import upload_cert
|
||||
cert = Certificate(TEST_CERT)
|
||||
response = upload_cert('1111', cert, TEST_KEY)
|
||||
self.assertEquals(response['upload_server_certificate_response']['upload_server_certificate_result']['server_certificate_metadata']['server_certificate_name'], 'AHB-dfdsflkj.net-NetflixInc-20140525-20150525')
|
||||
|
||||
|
23
lemur/tests/services/test_issuer_manager.py
Normal file
23
lemur/tests/services/test_issuer_manager.py
Normal file
@ -0,0 +1,23 @@
|
||||
from lemur import app
|
||||
from lemur.tests import LemurTestCase
|
||||
from lemur.tests.constants import TEST_CERT, TEST_KEY
|
||||
|
||||
from lemur.certificates.models import Certificate
|
||||
|
||||
from moto import mock_iam, mock_sts
|
||||
|
||||
|
||||
class ManagerTestCase(LemurTestCase):
|
||||
def test_validate_authority(self):
|
||||
pass
|
||||
|
||||
def test_get_all_authorities(self):
|
||||
from lemur.common.services.issuers.manager import get_all_authorities
|
||||
authorities = get_all_authorities()
|
||||
self.assertEqual(len(authorities), 3)
|
||||
|
||||
def test_get_all_issuers(self):
|
||||
from lemur.common.services.issuers.manager import get_all_issuers
|
||||
issuers = get_all_issuers()
|
||||
self.assertEqual(len(issuers) > 1)
|
||||
|
27
lemur/tests/services/test_s3.py
Normal file
27
lemur/tests/services/test_s3.py
Normal file
@ -0,0 +1,27 @@
|
||||
import boto
|
||||
|
||||
from lemur.tests import LemurTestCase
|
||||
from lemur.tests.constants import TEST_CERT
|
||||
|
||||
from lemur.certificates.models import Certificate
|
||||
|
||||
from moto import mock_s3
|
||||
|
||||
|
||||
class S3TestCase(LemurTestCase):
|
||||
@mock_s3
|
||||
def test_save(self):
|
||||
from lemur.common.services.aws.s3 import save
|
||||
conn = boto.connect_s3()
|
||||
|
||||
cert = Certificate(TEST_CERT)
|
||||
|
||||
buck = conn.create_bucket('test')
|
||||
path = save(cert, 'private_key', None, 'csr_config', 'challenge')
|
||||
self.assertEqual(path, 'lemur/{}/{}/'.format(cert.issuer, cert.name))
|
||||
|
||||
count = 0
|
||||
for key in buck.list():
|
||||
count += 1
|
||||
|
||||
self.assertEqual(count, 4)
|
Reference in New Issue
Block a user