@@ -87,6 +87,50 @@ def test_generate_tls_cert(mocker):
8787 assert tls_cert .verify_directly_issued_by (root_cert ) == None
8888
8989
90+ def secret_ca_retreival_with_ca_key (secret_name , namespace ):
91+ """Mock secret retrieval with ca.key instead of tls.key (KubeRay format)"""
92+ ca_private_key_bytes , ca_cert = generate_ca_cert ()
93+ data = {"ca.crt" : ca_cert , "ca.key" : ca_private_key_bytes }
94+ assert secret_name == "ca-secret-cluster2"
95+ assert namespace == "namespace2"
96+ return client .models .V1Secret (data = data )
97+
98+
99+ def test_generate_tls_cert_with_ca_key_fallback (mocker ):
100+ """
101+ Test that generate_tls_cert works when secret contains ca.key instead of tls.key
102+ This tests the fallback logic for KubeRay-created secrets
103+ """
104+ mocker .patch ("kubernetes.config.load_kube_config" , return_value = "ignore" )
105+ mocker .patch (
106+ "codeflare_sdk.common.utils.generate_cert.get_secret_name" ,
107+ return_value = "ca-secret-cluster2" ,
108+ )
109+ mocker .patch (
110+ "kubernetes.client.CoreV1Api.read_namespaced_secret" ,
111+ side_effect = secret_ca_retreival_with_ca_key ,
112+ )
113+
114+ generate_tls_cert ("cluster2" , "namespace2" )
115+ assert os .path .exists ("tls-cluster2-namespace2" )
116+ assert os .path .exists (os .path .join ("tls-cluster2-namespace2" , "ca.crt" ))
117+ assert os .path .exists (os .path .join ("tls-cluster2-namespace2" , "tls.crt" ))
118+ assert os .path .exists (os .path .join ("tls-cluster2-namespace2" , "tls.key" ))
119+
120+ # verify the that the signed tls.crt is issued by the ca_cert (root cert)
121+ with open (os .path .join ("tls-cluster2-namespace2" , "tls.crt" ), "r" ) as f :
122+ tls_cert = load_pem_x509_certificate (f .read ().encode ("utf-8" ))
123+ with open (os .path .join ("tls-cluster2-namespace2" , "ca.crt" ), "r" ) as f :
124+ root_cert = load_pem_x509_certificate (f .read ().encode ("utf-8" ))
125+ assert tls_cert .verify_directly_issued_by (root_cert ) == None
126+
127+ # Cleanup for this test
128+ os .remove ("tls-cluster2-namespace2/ca.crt" )
129+ os .remove ("tls-cluster2-namespace2/tls.crt" )
130+ os .remove ("tls-cluster2-namespace2/tls.key" )
131+ os .rmdir ("tls-cluster2-namespace2" )
132+
133+
90134def test_export_env ():
91135 """
92136 test the function codeflare_sdk.common.utils.generate_ca_cert.export_ev generates the correct outputs
0 commit comments