@@ -40,6 +40,22 @@ func Test_Replace(t *testing.T) {
4040 assert .NoError (t , err )
4141 assert .Equal (t , toJsonString ("bar" ), r )
4242 })
43+ t .Run ("Valid WorkflowStatus" , func (t * testing.T ) {
44+ replaced , err := Replace (toJsonString (`{{=workflow.status == "Succeeded" ? "SUCCESSFUL" : "FAILED"}}` ), map [string ]string {"workflow.status" : "Succeeded" }, false )
45+ assert .NoError (t , err )
46+ assert .Equal (t , toJsonString (`SUCCESSFUL` ), replaced )
47+ replaced , err = Replace (toJsonString (`{{=workflow.status == "Succeeded" ? "SUCCESSFUL" : "FAILED"}}` ), map [string ]string {"workflow.status" : "Failed" }, false )
48+ assert .NoError (t , err )
49+ assert .Equal (t , toJsonString (`FAILED` ), replaced )
50+ })
51+ t .Run ("Valid WorkflowFailures" , func (t * testing.T ) {
52+ replaced , err := Replace (toJsonString (`{{=workflow.failures == "{\"foo\":\"bar\"}" ? "SUCCESSFUL" : "FAILED"}}` ), map [string ]string {"workflow.failures" : `{"foo":"bar"}` }, false )
53+ assert .NoError (t , err )
54+ assert .Equal (t , toJsonString (`SUCCESSFUL` ), replaced )
55+ replaced , err = Replace (toJsonString (`{{=workflow.failures == "{\"foo\":\"bar\"}" ? "SUCCESSFUL" : "FAILED"}}` ), map [string ]string {"workflow.failures" : `{"foo":"barr"}` }, false )
56+ assert .NoError (t , err )
57+ assert .Equal (t , toJsonString (`FAILED` ), replaced )
58+ })
4359 t .Run ("Unresolved" , func (t * testing.T ) {
4460 t .Run ("Allowed" , func (t * testing.T ) {
4561 _ , err := Replace (toJsonString ("{{=foo}}" ), nil , true )
@@ -48,12 +64,30 @@ func Test_Replace(t *testing.T) {
4864 t .Run ("AllowedRetries" , func (t * testing.T ) {
4965 replaced , err := Replace (toJsonString ("{{=sprig.int(retries)}}" ), nil , true )
5066 assert .NoError (t , err )
51- assert .Equal (t , replaced , toJsonString ("{{=sprig.int(retries)}}" ))
67+ assert .Equal (t , toJsonString ("{{=sprig.int(retries)}}" ), replaced )
68+ })
69+ t .Run ("AllowedWorkflowStatus" , func (t * testing.T ) {
70+ replaced , err := Replace (toJsonString (`{{=workflow.status == "Succeeded" ? "SUCCESSFUL" : "FAILED"}}` ), nil , true )
71+ assert .NoError (t , err )
72+ assert .Equal (t , toJsonString (`{{=workflow.status == "Succeeded" ? "SUCCESSFUL" : "FAILED"}}` ), replaced )
73+ })
74+ t .Run ("AllowedWorkflowFailures" , func (t * testing.T ) {
75+ replaced , err := Replace (toJsonString (`{{=workflow.failures == "Succeeded" ? "SUCCESSFUL" : "FAILED"}}` ), nil , true )
76+ assert .NoError (t , err )
77+ assert .Equal (t , toJsonString (`{{=workflow.failures == "Succeeded" ? "SUCCESSFUL" : "FAILED"}}` ), replaced )
5278 })
5379 t .Run ("Disallowed" , func (t * testing.T ) {
5480 _ , err := Replace (toJsonString ("{{=foo}}" ), nil , false )
5581 assert .EqualError (t , err , "failed to evaluate expression \" foo\" " )
5682 })
83+ t .Run ("DisallowedWorkflowStatus" , func (t * testing.T ) {
84+ _ , err := Replace (toJsonString (`{{=workflow.status == "Succeeded" ? "SUCCESSFUL" : "FAILED"}}` ), nil , false )
85+ assert .ErrorContains (t , err , "failed to evaluate expression" )
86+ })
87+ t .Run ("DisallowedWorkflowFailures" , func (t * testing.T ) {
88+ _ , err := Replace (toJsonString (`{{=workflow.failures == "Succeeded" ? "SUCCESSFUL" : "FAILED"}}` ), nil , false )
89+ assert .ErrorContains (t , err , "failed to evaluate expression" )
90+ })
5791 })
5892 t .Run ("Error" , func (t * testing.T ) {
5993 _ , err := Replace (toJsonString ("{{=!}}" ), nil , false )
0 commit comments