Skip to content

Commit 972b3cc

Browse files
committed
fix tls tests
1 parent c5f3d11 commit 972b3cc

7 files changed

+112
-97
lines changed

.evergreen-tasks.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,7 @@ tasks:
759759
commands:
760760
- func: "e2e_test"
761761

762-
- name: e2e_configure_tls_and_x509_simultaneously_st
762+
- name: e2e_enable_standalone_tls
763763
tags: [ "patch-run" ]
764764
commands:
765765
- func: "e2e_test"

.evergreen.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -744,7 +744,7 @@ task_groups:
744744
- e2e_disable_tls_and_scale
745745
- e2e_replica_set_tls_require_and_disable
746746
# e2e_x509_task_group
747-
- e2e_configure_tls_and_x509_simultaneously_st
747+
- e2e_enable_standalone_tls
748748
- e2e_configure_tls_and_x509_simultaneously_rs
749749
- e2e_configure_tls_and_x509_simultaneously_sc
750750
- e2e_tls_x509_rs

docker/mongodb-kubernetes-tests/tests/multicluster/multi_2_cluster_clusterwide_replicaset.py

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import kubernetes
44
import pytest
5-
from kubetester import create_or_update_configmap, create_or_update_secret, read_configmap, read_secret
5+
from kubetester import create_or_update_configmap, create_or_update_secret, read_configmap, read_secret, try_load
66
from kubetester.certs_mongodb_multi import create_multi_cluster_mongodb_tls_certs
77
from kubetester.kubetester import ensure_ent_version
88
from kubetester.kubetester import fixture as yaml_fixture
@@ -31,34 +31,25 @@ def mdbb_ns(namespace: str):
3131

3232
@pytest.fixture(scope="module")
3333
def mongodb_multi_a_unmarshalled(
34-
central_cluster_client: kubernetes.client.ApiClient,
3534
mdba_ns: str,
3635
member_cluster_names: List[str],
3736
custom_mdb_version: str,
3837
) -> MongoDBMulti:
3938
resource = MongoDBMulti.from_yaml(yaml_fixture("mongodb-multi.yaml"), "multi-replica-set", mdba_ns)
40-
4139
resource["spec"]["clusterSpecList"] = cluster_spec_list(member_cluster_names, [2, 1])
4240
resource.set_version(ensure_ent_version(custom_mdb_version))
43-
44-
resource.api = kubernetes.client.CustomObjectsApi(central_cluster_client)
45-
resource.update()
4641
return resource
4742

4843

4944
@pytest.fixture(scope="module")
5045
def mongodb_multi_b_unmarshalled(
51-
central_cluster_client: kubernetes.client.ApiClient,
5246
mdbb_ns: str,
5347
member_cluster_names: List[str],
5448
custom_mdb_version: str,
5549
) -> MongoDBMulti:
5650
resource = MongoDBMulti.from_yaml(yaml_fixture("mongodb-multi.yaml"), "multi-replica-set", mdbb_ns)
5751
resource["spec"]["clusterSpecList"] = cluster_spec_list(member_cluster_names, [2, 1])
5852
resource.set_version(ensure_ent_version(custom_mdb_version))
59-
60-
resource.api = kubernetes.client.CustomObjectsApi(central_cluster_client)
61-
resource.update()
6253
return resource
6354

6455

@@ -108,8 +99,6 @@ def mongodb_multi_a(
10899
) -> MongoDBMulti:
109100
ca = open(issuer_ca_filepath).read()
110101

111-
# The operator expects the CA that validates Ops Manager is contained in
112-
# an entry with a name of "mms-ca.crt"
113102
data = {"ca-pem": ca, "mms-ca.crt": ca}
114103
name = "issuer-ca"
115104

@@ -123,7 +112,7 @@ def mongodb_multi_a(
123112
},
124113
}
125114
resource.api = kubernetes.client.CustomObjectsApi(central_cluster_client)
126-
resource.update()
115+
try_load(resource)
127116
return resource
128117

129118

@@ -137,8 +126,6 @@ def mongodb_multi_b(
137126
) -> MongoDBMulti:
138127
ca = open(issuer_ca_filepath).read()
139128

140-
# The operator expects the CA that validates Ops Manager is contained in
141-
# an entry with a name of "mms-ca.crt"
142129
data = {"ca-pem": ca, "mms-ca.crt": ca}
143130
name = "issuer-ca"
144131

@@ -152,7 +139,7 @@ def mongodb_multi_b(
152139
},
153140
}
154141
resource.api = kubernetes.client.CustomObjectsApi(central_cluster_client)
155-
resource.update()
142+
try_load(resource)
156143
return resource
157144

158145

@@ -249,21 +236,22 @@ def test_copy_configmap_and_secret_across_ns(
249236

250237
@pytest.mark.e2e_multi_cluster_2_clusters_clusterwide
251238
def test_create_mongodb_multi_nsa(mongodb_multi_a: MongoDBMulti):
239+
mongodb_multi_a.update()
252240
mongodb_multi_a.assert_reaches_phase(Phase.Running, timeout=800)
253241

254242

255243
@pytest.mark.e2e_multi_cluster_2_clusters_clusterwide
256244
def test_enable_mongodb_multi_nsa_auth(mongodb_multi_a: MongoDBMulti):
257-
mongodb_multi_a.reload()
258-
mongodb_multi_a["spec"]["authentication"] = (
259-
{
260-
"agents": {"mode": "SCRAM"},
261-
"enabled": True,
262-
"modes": ["SCRAM"],
263-
},
264-
)
245+
mongodb_multi_a["spec"]["security"]["authentication"] = {
246+
"agents": {"mode": "SCRAM"},
247+
"enabled": True,
248+
"modes": ["SCRAM"],
249+
}
250+
mongodb_multi_a.update()
251+
mongodb_multi_a.assert_reaches_phase(Phase.Running, timeout=800)
265252

266253

267254
@pytest.mark.e2e_multi_cluster_2_clusters_clusterwide
268255
def test_create_mongodb_multi_nsb(mongodb_multi_b: MongoDBMulti):
256+
mongodb_multi_b.update()
269257
mongodb_multi_b.assert_reaches_phase(Phase.Running, timeout=800)

docker/mongodb-kubernetes-tests/tests/tls/e2e_configure_tls_and_x509_simultaneously_rs.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,26 @@
88
from kubetester.phase import Phase
99

1010
MDB_RESOURCE = "my-replica-set"
11+
CERT_SECRET_PREFIX = "prefix"
1112

1213

1314
@pytest.fixture(scope="module")
1415
def server_certs(issuer: str, namespace: str):
15-
return create_mongodb_tls_certs(ISSUER_CA_NAME, namespace, MDB_RESOURCE, f"{MDB_RESOURCE}-cert")
16+
return create_mongodb_tls_certs(
17+
ISSUER_CA_NAME, namespace, MDB_RESOURCE, f"{CERT_SECRET_PREFIX}-{MDB_RESOURCE}-cert"
18+
)
1619

1720

1821
@pytest.fixture(scope="module")
19-
def mdb(namespace: str, server_certs: str, issuer_ca_configmap: str) -> MongoDB:
22+
def mdb(namespace: str, server_certs: str) -> MongoDB:
2023
resource = MongoDB.from_yaml(load_fixture("replica-set.yaml"), namespace=namespace)
21-
resource["spec"]["security"] = {"tls": {"ca": issuer_ca_configmap}}
2224
try_load(resource)
2325
return resource
2426

2527

2628
@pytest.fixture(scope="module")
2729
def agent_certs(issuer: str, namespace: str) -> str:
28-
return create_agent_tls_certs(issuer, namespace, MDB_RESOURCE)
30+
return create_agent_tls_certs(issuer, namespace, MDB_RESOURCE, secret_prefix=CERT_SECRET_PREFIX)
2931

3032

3133
@pytest.mark.e2e_configure_tls_and_x509_simultaneously_rs
@@ -46,11 +48,27 @@ def test_connectivity():
4648

4749

4850
@pytest.mark.e2e_configure_tls_and_x509_simultaneously_rs
49-
def test_enable_x509(mdb: MongoDB, agent_certs: str):
50-
mdb.load()
51+
def test_enable_tls(mdb: MongoDB, issuer_ca_configmap: str):
5152
mdb["spec"]["security"] = {
52-
"authentication": {"enabled": True},
53-
"modes": ["X509"],
53+
"certsSecretPrefix": CERT_SECRET_PREFIX,
54+
"tls": {"ca": issuer_ca_configmap},
5455
}
55-
56+
mdb.update()
5657
mdb.assert_reaches_phase(Phase.Running, timeout=400)
58+
59+
60+
@pytest.mark.e2e_configure_tls_and_x509_simultaneously_rs
61+
def test_connectivity_with_ssl(mdb: MongoDB, ca_path: str):
62+
tester = mdb.tester(use_ssl=True, ca_path=ca_path)
63+
tester.assert_connectivity()
64+
65+
66+
@pytest.mark.e2e_configure_tls_and_x509_simultaneously_rs
67+
def test_enable_x509(mdb: MongoDB, agent_certs: str):
68+
mdb["spec"]["security"]["authentication"] = {
69+
"agents": {"mode": "X509"},
70+
"enabled": True,
71+
"modes": ["X509"],
72+
}
73+
mdb.update()
74+
mdb.assert_reaches_phase(Phase.Running, timeout=1200)

docker/mongodb-kubernetes-tests/tests/tls/e2e_configure_tls_and_x509_simultaneously_sc.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from tests.shardedcluster.conftest import enable_multi_cluster_deployment, get_mongos_service_names
1111

1212
MDB_RESOURCE = "test-ssl-with-x509-sc"
13+
CERT_SECRET_PREFIX = "prefix"
1314

1415

1516
@pytest.fixture(scope="module")
@@ -29,18 +30,18 @@ def server_certs(issuer: str, namespace: str):
2930
mongod_per_shard=3,
3031
config_servers=3,
3132
mongos=2,
33+
secret_prefix=f"{CERT_SECRET_PREFIX}-",
3234
shard_distribution=shard_distribution,
3335
mongos_distribution=mongos_distribution,
3436
config_srv_distribution=config_srv_distribution,
3537
)
3638

3739

3840
@pytest.fixture(scope="module")
39-
def sc(namespace: str, server_certs: str, issuer_ca_configmap: str) -> MongoDB:
41+
def sc(namespace: str, server_certs: str) -> MongoDB:
4042
resource = MongoDB.from_yaml(load_fixture("sharded-cluster.yaml"), namespace=namespace, name=MDB_RESOURCE)
4143

4244
resource.set_architecture_annotation()
43-
resource["spec"]["security"] = {"tls": {"ca": issuer_ca_configmap}}
4445

4546
if is_multi_cluster():
4647
enable_multi_cluster_deployment(
@@ -56,7 +57,7 @@ def sc(namespace: str, server_certs: str, issuer_ca_configmap: str) -> MongoDB:
5657

5758
@pytest.fixture(scope="module")
5859
def agent_certs(issuer: str, namespace: str) -> str:
59-
return create_agent_tls_certs(issuer, namespace, MDB_RESOURCE)
60+
return create_agent_tls_certs(issuer, namespace, MDB_RESOURCE, secret_prefix=CERT_SECRET_PREFIX)
6061

6162

6263
@pytest.mark.e2e_configure_tls_and_x509_simultaneously_sc
@@ -78,10 +79,28 @@ def test_connectivity_without_ssl(sc: MongoDB):
7879

7980

8081
@pytest.mark.e2e_configure_tls_and_x509_simultaneously_sc
81-
def test_enable_x509(sc: MongoDB, agent_certs: str):
82+
def test_enable_tls(sc: MongoDB, issuer_ca_configmap: str):
8283
sc["spec"]["security"] = {
83-
"authentication": {"enabled": True},
84-
"modes": ["X509"],
84+
"certsSecretPrefix": CERT_SECRET_PREFIX,
85+
"tls": {"ca": issuer_ca_configmap},
8586
}
87+
sc.update()
88+
sc.assert_reaches_phase(Phase.Running, timeout=1200)
8689

90+
91+
@pytest.mark.e2e_configure_tls_and_x509_simultaneously_sc
92+
def test_connectivity_with_ssl(sc: MongoDB, ca_path: str):
93+
service_names = get_mongos_service_names(sc)
94+
tester = sc.tester(use_ssl=True, ca_path=ca_path, service_names=service_names)
95+
tester.assert_connectivity()
96+
97+
98+
@pytest.mark.e2e_configure_tls_and_x509_simultaneously_sc
99+
def test_enable_x509(sc: MongoDB, agent_certs: str):
100+
sc["spec"]["security"]["authentication"] = {
101+
"agents": {"mode": "X509"},
102+
"enabled": True,
103+
"modes": ["X509"],
104+
}
105+
sc.update()
87106
sc.assert_reaches_phase(Phase.Running, timeout=1200)

docker/mongodb-kubernetes-tests/tests/tls/e2e_configure_tls_and_x509_simultaneously_standalone.py

Lines changed: 0 additions & 56 deletions
This file was deleted.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import pytest
2+
from kubetester import try_load
3+
from kubetester.kubetester import fixture as load_fixture
4+
from kubetester.mongodb import MongoDB
5+
from kubetester.mongotester import StandaloneTester
6+
from kubetester.operator import Operator
7+
from kubetester.phase import Phase
8+
9+
MDB_RESOURCE = "my-standalone"
10+
11+
12+
@pytest.fixture(scope="module")
13+
def mdb(namespace: str) -> MongoDB:
14+
resource = MongoDB.from_yaml(load_fixture("standalone.yaml"), namespace=namespace)
15+
try_load(resource)
16+
return resource
17+
18+
19+
@pytest.mark.e2e_enable_standalone_tls
20+
def test_install_operator(operator: Operator):
21+
operator.assert_is_running()
22+
23+
24+
@pytest.mark.e2e_enable_standalone_tls
25+
def test_mdb_running(mdb: MongoDB):
26+
mdb.update()
27+
mdb.assert_reaches_phase(Phase.Running, timeout=400)
28+
29+
30+
@pytest.mark.e2e_enable_standalone_tls
31+
def test_connectivity():
32+
tester = StandaloneTester(MDB_RESOURCE)
33+
tester.assert_connectivity()
34+
35+
36+
@pytest.mark.e2e_enable_standalone_tls
37+
def test_enable_tls(mdb: MongoDB):
38+
mdb["spec"]["security"] = {"tls": {"enabled": True}}
39+
mdb.update()
40+
mdb.assert_reaches_phase(Phase.Running, timeout=400)
41+
42+
43+
@pytest.mark.e2e_enable_standalone_tls
44+
def test_connectivity_with_tls(mdb: MongoDB):
45+
tester = mdb.tester(use_ssl=True)
46+
tester.assert_connectivity()

0 commit comments

Comments
 (0)