@@ -395,6 +395,19 @@ async def test_basic_invalid_graphs(app_started):
395395 )
396396 assert "Secrets cannot be empty" in str (exc_info .value )
397397
398+ # test invalid graph with non-urlsafe base64 encoded secret
399+ with pytest .raises (ValueError ) as exc_info :
400+ GraphTemplate (
401+ name = "test_name" ,
402+ namespace = "test_namespace" ,
403+ nodes = [],
404+ validation_status = GraphTemplateValidationStatus .PENDING ,
405+ secrets = {
406+ "secret1" : "invalid_base64_string_that_is_long_enough_to_pass_length_check_but_not_valid_base64_encoding_123456789" ,
407+ }
408+ )
409+ assert "Value is not valid URL-safe base64 encoded" in str (exc_info .value )
410+
398411@pytest .mark .asyncio
399412async def test_valid_graphs_with_unites (app_started ):
400413 """Test valid graphs with unites"""
@@ -539,6 +552,34 @@ async def test_invalid_graphs_with_disconnected_nodes(app_started):
539552 validation_status = GraphTemplateValidationStatus .PENDING
540553 )
541554
555+ with pytest .raises (ValueError ) as exc_info :
556+ GraphTemplate (
557+ name = "test_liner_graph_template_1" ,
558+ namespace = "test_namespace" ,
559+ nodes = [
560+ NodeTemplate (
561+ node_name = "node1" ,
562+ namespace = "test_namespace" ,
563+ identifier = "node1" ,
564+ inputs = {},
565+ next_nodes = None ,
566+ unites = None
567+ ),
568+ NodeTemplate (
569+ node_name = "node2" ,
570+ namespace = "test_namespace" ,
571+ identifier = "node2" ,
572+ inputs = {},
573+ next_nodes = None ,
574+ unites = Unites (
575+ identifier = "node1"
576+ )
577+ )
578+ ],
579+ validation_status = GraphTemplateValidationStatus .PENDING
580+ )
581+ assert "is not connected to the root node" in str (exc_info .value )
582+
542583@pytest .mark .asyncio
543584async def test_valid_graph_inputs (app_started ):
544585 """Test valid graph inputs"""
@@ -698,4 +739,64 @@ async def test_invalid_graph_inputs(app_started):
698739 ],
699740 validation_status = GraphTemplateValidationStatus .PENDING
700741 )
701- assert "Input ${{node2.outputs.output1}} depends on node2 but node2 is not a parent of node3" in str (exc_info .value )
742+ assert "Input ${{node2.outputs.output1}} depends on node2 but node2 is not a parent of node3" in str (exc_info .value )
743+
744+ with pytest .raises (ValueError ) as exc_info :
745+ GraphTemplate (
746+ name = "test_graph" ,
747+ namespace = "test_namespace" ,
748+ nodes = [
749+ NodeTemplate (
750+ node_name = "node1" ,
751+ namespace = "test_namespace" ,
752+ identifier = "node1" ,
753+ inputs = {},
754+ next_nodes = [
755+ "node2"
756+ ],
757+ unites = None
758+ ),
759+ NodeTemplate (
760+ node_name = "node2" ,
761+ namespace = "test_namespace" ,
762+ identifier = "node2" ,
763+ inputs = {
764+ "input1" : 123
765+ },
766+ next_nodes = None ,
767+ unites = None
768+ )
769+ ],
770+ validation_status = GraphTemplateValidationStatus .PENDING
771+ )
772+ assert "is not a string" in str (exc_info .value )
773+
774+ with pytest .raises (ValueError ) as exc_info :
775+ GraphTemplate (
776+ name = "test_graph" ,
777+ namespace = "test_namespace" ,
778+ nodes = [
779+ NodeTemplate (
780+ node_name = "node1" ,
781+ namespace = "test_namespace" ,
782+ identifier = "node1" ,
783+ inputs = {},
784+ next_nodes = [
785+ "node2"
786+ ],
787+ unites = None
788+ ),
789+ NodeTemplate (
790+ node_name = "node2" ,
791+ namespace = "test_namespace" ,
792+ identifier = "node2" ,
793+ inputs = {
794+ "input1" : "${{node1.outputs.output1"
795+ },
796+ next_nodes = None ,
797+ unites = None
798+ )
799+ ],
800+ validation_status = GraphTemplateValidationStatus .PENDING
801+ )
802+ assert "Error creating dependent string for input ${{node1.outputs.output1" in str (exc_info .value )
0 commit comments