1818from jumpstarter .config .client import ClientConfigV1Alpha1 , ClientConfigV1Alpha1Drivers
1919from jumpstarter .config .common import ObjectMeta
2020from jumpstarter .config .exporter import ExporterConfigV1Alpha1
21+ from jumpstarter .config .tls import TLSConfigV1Alpha1
2122
2223# Generate a random client name
2324CLIENT_NAME = uuid .uuid4 ().hex
8384 drivers = ClientConfigV1Alpha1Drivers (allow = [], unsafe = True ),
8485)
8586
87+ INSECURE_TLS_CLIENT_CONFIG = ClientConfigV1Alpha1 (
88+ alias = CLIENT_NAME ,
89+ metadata = ObjectMeta (namespace = "default" , name = CLIENT_NAME ),
90+ endpoint = CLIENT_ENDPOINT ,
91+ token = CLIENT_TOKEN ,
92+ tls = TLSConfigV1Alpha1 (insecure = True ),
93+ drivers = ClientConfigV1Alpha1Drivers (allow = [], unsafe = True ),
94+ )
95+
8696
8797@pytest .mark .anyio
8898@patch .object (ClientConfigV1Alpha1 , "save" )
@@ -103,6 +113,33 @@ async def test_create_client(
103113 mock_save_client .assert_not_called ()
104114 mock_save_client .reset_mock ()
105115
116+ # Insecure TLS config is returned
117+ mock_get_client_config .return_value = INSECURE_TLS_CLIENT_CONFIG
118+
119+ # Save with prompts accept insecure = Y, save = Y, unsafe = Y
120+ result = await runner .invoke (create , ["client" , "--insecure-tls-config" , CLIENT_NAME ], input = "Y\n Y\n Y\n " )
121+ assert result .exit_code == 0
122+ assert "Client configuration successfully saved" in result .output
123+ mock_save_client .assert_called_once_with (INSECURE_TLS_CLIENT_CONFIG , None )
124+ mock_save_client .reset_mock ()
125+
126+ # Save no interactive and insecure tls
127+ result = await runner .invoke (
128+ create , ["client" , "--insecure-tls-config" , "--unsafe" , "--save" , "--nointeractive" , CLIENT_NAME ]
129+ )
130+ assert result .exit_code == 0
131+ assert "Client configuration successfully saved" in result .output
132+ mock_save_client .assert_called_once_with (INSECURE_TLS_CLIENT_CONFIG , None )
133+ mock_save_client .reset_mock ()
134+
135+ # Insecure TLS config is returned
136+ mock_get_client_config .return_value = INSECURE_TLS_CLIENT_CONFIG
137+
138+ # Save with prompts accept insecure = N
139+ result = await runner .invoke (create , ["client" , "--insecure-tls-config" , CLIENT_NAME ], input = "n\n " )
140+ assert result .exit_code == 1
141+ assert "Aborted" in result .output
142+
106143 # Unsafe client config is returned
107144 mock_get_client_config .return_value = UNSAFE_CLIENT_CONFIG
108145
@@ -222,6 +259,14 @@ async def test_create_client(
222259 token = EXPORTER_TOKEN ,
223260)
224261
262+ INSECURE_TLS_EXPORTER_CONFIG = ExporterConfigV1Alpha1 (
263+ alias = EXPORTER_NAME ,
264+ metadata = ObjectMeta (namespace = "default" , name = EXPORTER_NAME ),
265+ endpoint = EXPORTER_ENDPOINT ,
266+ token = EXPORTER_TOKEN ,
267+ tls = TLSConfigV1Alpha1 (insecure = True ),
268+ )
269+
225270
226271@pytest .mark .anyio
227272@patch .object (ExporterConfigV1Alpha1 , "save" )
@@ -242,6 +287,32 @@ async def test_create_exporter(
242287 save_exporter_mock .assert_not_called ()
243288 save_exporter_mock .reset_mock ()
244289
290+ # Insecure TLS config is returned
291+ _get_exporter_config_mock .return_value = INSECURE_TLS_EXPORTER_CONFIG
292+ # Save with prompts accept insecure = Y, save = Y
293+ result = await runner .invoke (create , ["exporter" , "--insecure-tls-config" , EXPORTER_NAME ], input = "Y\n Y\n " )
294+ assert result .exit_code == 0
295+ assert "Exporter configuration successfully saved" in result .output
296+ save_exporter_mock .assert_called_once_with (INSECURE_TLS_EXPORTER_CONFIG , None )
297+ save_exporter_mock .reset_mock ()
298+
299+ _get_exporter_config_mock .return_value = INSECURE_TLS_EXPORTER_CONFIG
300+ # Save with prompts accept no interactive
301+ result = await runner .invoke (
302+ create , ["exporter" , "--insecure-tls-config" , "--nointeractive" , "--save" , EXPORTER_NAME ]
303+ )
304+ assert result .exit_code == 0
305+ assert "Exporter configuration successfully saved" in result .output
306+ save_exporter_mock .assert_called_once_with (INSECURE_TLS_EXPORTER_CONFIG , None )
307+ save_exporter_mock .reset_mock ()
308+
309+ # Insecure TLS config is returned
310+ _get_exporter_config_mock .return_value = INSECURE_TLS_EXPORTER_CONFIG
311+ # Save with prompts accept insecure = N
312+ result = await runner .invoke (create , ["exporter" , "--insecure-tls-config" , EXPORTER_NAME ], input = "n\n " )
313+ assert result .exit_code == 1
314+ assert "Aborted" in result .output
315+
245316 # Save with prompts
246317 result = await runner .invoke (create , ["exporter" , EXPORTER_NAME ], input = "Y\n " )
247318 assert result .exit_code == 0
0 commit comments