Skip to content

Commit 51ced7a

Browse files
committed
black
1 parent 3e03cbf commit 51ced7a

File tree

2 files changed

+134
-3
lines changed

2 files changed

+134
-3
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
import os
2+
3+
import pytest
4+
5+
from tests.base import HazelcastTestCase
6+
from hazelcast.asyncio.client import HazelcastClient
7+
from hazelcast.errors import HazelcastError
8+
from hazelcast.config import SSLProtocol
9+
from tests.util import get_ssl_config, fill_map, get_abs_path
10+
11+
12+
@pytest.mark.enterprise
13+
class SSLTest(HazelcastTestCase):
14+
current_directory = os.path.dirname(__file__)
15+
rc = None
16+
hazelcast_ssl_xml = get_abs_path(
17+
current_directory, "../../integration/backward_compatible/hazelcast-ssl.xml"
18+
)
19+
default_ca_xml = get_abs_path(
20+
current_directory, "../../integration/backward_compatible/hazelcast-default-ca.xml"
21+
)
22+
23+
def setUp(self):
24+
self.rc = self.create_rc()
25+
26+
def tearDown(self):
27+
self.rc.exit()
28+
29+
def test_ssl_disabled(self):
30+
cluster = self.create_cluster(self.rc, self.read_ssl_config())
31+
cluster.start_member()
32+
33+
with self.assertRaises(HazelcastError):
34+
HazelcastClient(**get_ssl_config(cluster.id, False))
35+
36+
def test_ssl_enabled_is_client_live(self):
37+
cluster = self.create_cluster(self.rc, self.read_ssl_config())
38+
cluster.start_member()
39+
40+
client = HazelcastClient(
41+
**get_ssl_config(
42+
cluster.id, True, get_abs_path(self.current_directory, "server1-cert.pem")
43+
)
44+
)
45+
self.assertTrue(client.lifecycle_service.is_running())
46+
client.shutdown()
47+
48+
def test_ssl_enabled_trust_default_certificates(self):
49+
cluster = self.create_cluster(self.rc, self.read_default_ca_config())
50+
cluster.start_member()
51+
52+
client = HazelcastClient(**get_ssl_config(cluster.id, True))
53+
self.assertTrue(client.lifecycle_service.is_running())
54+
client.shutdown()
55+
56+
def test_ssl_enabled_dont_trust_self_signed_certificates(self):
57+
# Member started with self-signed certificate
58+
cluster = self.create_cluster(self.rc, self.read_ssl_config())
59+
cluster.start_member()
60+
61+
with self.assertRaises(HazelcastError):
62+
HazelcastClient(**get_ssl_config(cluster.id, True))
63+
64+
def test_ssl_enabled_map_size(self):
65+
cluster = self.create_cluster(self.rc, self.read_ssl_config())
66+
cluster.start_member()
67+
68+
client = HazelcastClient(
69+
**get_ssl_config(
70+
cluster.id, True, get_abs_path(self.current_directory, "server1-cert.pem")
71+
)
72+
)
73+
test_map = client.get_map("test_map").blocking()
74+
fill_map(test_map, 10)
75+
self.assertEqual(test_map.size(), 10)
76+
client.shutdown()
77+
78+
def test_ssl_enabled_with_custom_ciphers(self):
79+
cluster = self.create_cluster(self.rc, self.read_ssl_config())
80+
cluster.start_member()
81+
82+
client = HazelcastClient(
83+
**get_ssl_config(
84+
cluster.id,
85+
True,
86+
get_abs_path(self.current_directory, "server1-cert.pem"),
87+
ciphers="ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-GCM-SHA384",
88+
)
89+
)
90+
self.assertTrue(client.lifecycle_service.is_running())
91+
client.shutdown()
92+
93+
def test_ssl_enabled_with_invalid_ciphers(self):
94+
cluster = self.create_cluster(self.rc, self.read_ssl_config())
95+
cluster.start_member()
96+
97+
with self.assertRaises(HazelcastError):
98+
HazelcastClient(
99+
**get_ssl_config(
100+
cluster.id,
101+
True,
102+
get_abs_path(self.current_directory, "server1-cert.pem"),
103+
ciphers="INVALID-CIPHER1:INVALID_CIPHER2",
104+
)
105+
)
106+
107+
def test_ssl_enabled_with_protocol_mismatch(self):
108+
cluster = self.create_cluster(self.rc, self.read_ssl_config())
109+
cluster.start_member()
110+
111+
# Member configured with TLSv1
112+
with self.assertRaises(HazelcastError):
113+
HazelcastClient(
114+
**get_ssl_config(
115+
cluster.id,
116+
True,
117+
get_abs_path(self.current_directory, "server1-cert.pem"),
118+
protocol=SSLProtocol.SSLv3,
119+
)
120+
)
121+
122+
def read_default_ca_config(self):
123+
with open(self.default_ca_xml, "r") as f:
124+
xml_config = f.read()
125+
126+
keystore_path = get_abs_path(self.current_directory, "keystore.jks")
127+
return xml_config % (keystore_path, keystore_path)
128+
129+
def read_ssl_config(self):
130+
with open(self.hazelcast_ssl_xml, "r") as f:
131+
xml_config = f.read()
132+
133+
keystore_path = get_abs_path(self.current_directory, "server1.keystore")
134+
return xml_config % keystore_path

tests/integration/asyncio/util.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
21
async def fill_map(map, size=10, key_prefix="key", value_prefix="val"):
32
entries = dict()
43
for i in range(size):
54
entries[key_prefix + str(i)] = value_prefix + str(i)
65
await map.put_all(entries)
76
return entries
8-
9-

0 commit comments

Comments
 (0)