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  }