github.com/devtron-labs/ci-runner@v0.0.0-20240518055909-b2672f3349d7/executor/stage/cdStages_test.go (about) 1 package stage 2 3 import ( 4 "encoding/json" 5 "github.com/devtron-labs/ci-runner/helper" 6 test_data "github.com/devtron-labs/ci-runner/test-data" 7 "github.com/devtron-labs/ci-runner/util" 8 "os" 9 "testing" 10 ) 11 12 func TestHandleCDEvent(t *testing.T) { 13 t.Run("StageYamlNoWithNoError", func(t *testing.T) { 14 15 // Prepare test data 16 ciCdRequest := &helper.CiCdTriggerEvent{} 17 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithTaskYaml), ciCdRequest) 18 19 exitCode := 0 20 21 // Call the function 22 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 23 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 24 25 // Assert the expected results 26 if exitCode != 0 { 27 t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode) 28 } 29 }) 30 31 t.Run("StageYamlWithError", func(t *testing.T) { 32 // Prepare test data 33 ciCdRequest := &helper.CiCdTriggerEvent{} 34 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithTaskYamlBad), ciCdRequest) 35 36 exitCode := 0 37 38 os.RemoveAll(util.WORKINGDIR) 39 // Call the function with an error 40 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 41 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 42 43 // Assert the expected results 44 if exitCode != util.DefaultErrorCode { 45 t.Errorf("Expected exitCode to be %d, but got %d", util.DefaultErrorCode, exitCode) 46 } 47 }) 48 49 t.Run("StageYamlWithNoArtifact", func(t *testing.T) { 50 // Prepare test data 51 ciCdRequest := &helper.CiCdTriggerEvent{} 52 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithTaskYamlWrongOutputPath), ciCdRequest) 53 54 exitCode := 0 55 56 os.RemoveAll(util.WORKINGDIR) 57 // Call the function with an error 58 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 59 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 60 61 // Assert the expected results 62 if exitCode != util.DefaultErrorCode { 63 t.Errorf("Expected exitCode to be %d, but got %d", util.DefaultErrorCode, exitCode) 64 } 65 }) 66 67 t.Run("StepsStageWithNoError", func(t *testing.T) { 68 69 // Prepare test data 70 ciCdRequest := &helper.CiCdTriggerEvent{} 71 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithSteps1), ciCdRequest) 72 73 exitCode := 0 74 75 os.RemoveAll(util.WORKINGDIR) 76 // Call the function 77 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 78 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 79 80 // Assert the expected results 81 if exitCode != 0 { 82 t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode) 83 } 84 }) 85 86 t.Run("StepsStageVarOutputCheckFail", func(t *testing.T) { 87 88 // Prepare test data 89 ciCdRequest := &helper.CiCdTriggerEvent{} 90 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithStepsVarCheckBad), ciCdRequest) 91 92 exitCode := 0 93 94 os.RemoveAll(util.WORKINGDIR) 95 // Call the function 96 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 97 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 98 99 // Assert the expected results 100 if exitCode != util.DefaultErrorCode { 101 t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode) 102 } 103 }) 104 105 t.Run("StepsStageOutputWithError", func(t *testing.T) { 106 107 // Prepare test data 108 ciCdRequest := &helper.CiCdTriggerEvent{} 109 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithSteps2), ciCdRequest) 110 111 exitCode := 0 112 113 os.RemoveAll(util.WORKINGDIR) 114 // Call the function 115 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 116 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 117 118 // Assert the expected results 119 if exitCode != util.DefaultErrorCode { 120 t.Errorf("Expected exitCode to be %d, but got %d", util.DefaultErrorCode, exitCode) 121 } 122 }) 123 124 t.Run("StepsStageWithError", func(t *testing.T) { 125 126 // Prepare test data 127 ciCdRequest := &helper.CiCdTriggerEvent{} 128 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithStepsBad), ciCdRequest) 129 130 exitCode := 0 131 132 os.RemoveAll(util.WORKINGDIR) 133 os.RemoveAll("/output") 134 // Call the function 135 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 136 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 137 138 // Assert the expected results 139 if exitCode != util.DefaultErrorCode { 140 t.Errorf("Expected exitCode to be %d, but got %d", util.DefaultErrorCode, exitCode) 141 } 142 }) 143 144 t.Run("StepsStageWithSuccessTriggerCriteria", func(t *testing.T) { 145 146 // Prepare test data 147 ciCdRequest := &helper.CiCdTriggerEvent{} 148 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithSteps3), ciCdRequest) 149 150 exitCode := 0 151 152 os.RemoveAll(util.WORKINGDIR) 153 os.RemoveAll("/output") 154 // Call the function 155 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 156 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 157 158 // Assert the expected results 159 if exitCode != util.DefaultErrorCode { 160 t.Errorf("Expected exitCode to be %d, but got %d", util.DefaultErrorCode, exitCode) 161 } 162 }) 163 164 t.Run("StepsStagePlugin", func(t *testing.T) { 165 166 // Prepare test data 167 ciCdRequest := &helper.CiCdTriggerEvent{} 168 json.Unmarshal([]byte(test_data.CdTriggerEventPayloadWithStepsWithPlugin), ciCdRequest) 169 170 exitCode := 0 171 172 os.RemoveAll(util.WORKINGDIR) 173 // Call the function 174 cdStage := NewCdStage(*helper.NewGitManagerImpl(helper.NewGitCliManager())) 175 cdStage.HandleCDEvent(ciCdRequest, &exitCode) 176 177 // Assert the expected results 178 if exitCode != 0 { 179 t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode) 180 } 181 }) 182 }