github.com/devtron-labs/ci-runner@v0.0.0-20240518055909-b2672f3349d7/executor/stage/ciStages_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 TestHandleCIEvent(t *testing.T) {
    13  
    14  	t.Run("CiTriggerEventWithoutPrePostStep", func(t *testing.T) {
    15  
    16  		// Prepare test data
    17  		ciCdRequest := &helper.CiCdTriggerEvent{}
    18  		json.Unmarshal([]byte(test_data.CiTriggerEventPayloadWithoutPrePostStep), ciCdRequest)
    19  
    20  		exitCode := 0
    21  		os.RemoveAll(util.WORKINGDIR)
    22  		// Call the function
    23  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
    24  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
    25  
    26  		// Assert the expected results
    27  		if exitCode != util.CiStageFailErrorCode {
    28  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
    29  		}
    30  	})
    31  	t.Run("CiTriggerEventWithPreStep", func(t *testing.T) {
    32  
    33  		// Prepare test data
    34  		ciCdRequest := &helper.CiCdTriggerEvent{}
    35  		json.Unmarshal([]byte(test_data.CiTriggerEventPayloadWithPreStep), ciCdRequest)
    36  
    37  		exitCode := 0
    38  		os.RemoveAll(util.WORKINGDIR)
    39  		// Call the function
    40  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
    41  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
    42  
    43  		// Assert the expected results
    44  		if exitCode != util.CiStageFailErrorCode {
    45  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
    46  		}
    47  	})
    48  	t.Run("CiTriggerEventWithPrePostStep", func(t *testing.T) {
    49  
    50  		// Prepare test data
    51  		ciCdRequest := &helper.CiCdTriggerEvent{}
    52  		json.Unmarshal([]byte(test_data.CiTriggerEventPayloadWithPrePostStep), ciCdRequest)
    53  
    54  		exitCode := 0
    55  		os.RemoveAll(util.WORKINGDIR)
    56  		// Call the function
    57  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
    58  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
    59  
    60  		// Assert the expected results
    61  		if exitCode != util.CiStageFailErrorCode {
    62  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
    63  		}
    64  	})
    65  	t.Run("CiTriggerEventWithValidGitHash", func(t *testing.T) {
    66  
    67  		// Prepare test data
    68  		ciCdRequest := &helper.CiCdTriggerEvent{}
    69  		json.Unmarshal([]byte(test_data.CiTriggerEventWithValidGitHash), ciCdRequest)
    70  
    71  		exitCode := 0
    72  		os.RemoveAll(util.WORKINGDIR)
    73  		// Call the function
    74  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
    75  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
    76  
    77  		// Assert the expected results
    78  		if exitCode != util.CiStageFailErrorCode {
    79  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
    80  		}
    81  	})
    82  	t.Run("CiTriggerEventWithInValidGitHash", func(t *testing.T) {
    83  
    84  		// Prepare test data
    85  		ciCdRequest := &helper.CiCdTriggerEvent{}
    86  		json.Unmarshal([]byte(test_data.CiTriggerEventWithInValidGitHash), ciCdRequest)
    87  
    88  		exitCode := 0
    89  		os.RemoveAll(util.WORKINGDIR)
    90  		// Call the function
    91  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
    92  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
    93  
    94  		// Assert the expected results
    95  		if exitCode != util.CiStageFailErrorCode {
    96  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
    97  		}
    98  	})
    99  	t.Run("CiTriggerEventWithEmptyGitHash", func(t *testing.T) {
   100  
   101  		// Prepare test data
   102  		ciCdRequest := &helper.CiCdTriggerEvent{}
   103  		json.Unmarshal([]byte(test_data.CiTriggerEventWithEmptyGitHash), ciCdRequest)
   104  
   105  		exitCode := 0
   106  		os.RemoveAll(util.WORKINGDIR)
   107  		// Call the function
   108  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
   109  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
   110  
   111  		// Assert the expected results
   112  		if exitCode != util.CiStageFailErrorCode {
   113  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
   114  		}
   115  	})
   116  	t.Run("CiTriggerEventWithEmptyGitHashAndSourceValue", func(t *testing.T) {
   117  
   118  		// Prepare test data
   119  		ciCdRequest := &helper.CiCdTriggerEvent{}
   120  		json.Unmarshal([]byte(test_data.CiTriggerEventWithEmptyGitHashAndSourceValue), ciCdRequest)
   121  
   122  		exitCode := 0
   123  		os.RemoveAll(util.WORKINGDIR)
   124  		// Call the function
   125  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
   126  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
   127  
   128  		// Assert the expected results
   129  		if exitCode != util.CiStageFailErrorCode {
   130  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
   131  		}
   132  	})
   133  	t.Run("CiTriggerEventWithValidGitTag", func(t *testing.T) {
   134  
   135  		// Prepare test data
   136  		ciCdRequest := &helper.CiCdTriggerEvent{}
   137  		json.Unmarshal([]byte(test_data.CiTriggerEventWithValidGitTag), ciCdRequest)
   138  
   139  		exitCode := 0
   140  		os.RemoveAll(util.WORKINGDIR)
   141  		// Call the function
   142  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
   143  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
   144  
   145  		// Assert the expected results
   146  		if exitCode != util.CiStageFailErrorCode {
   147  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
   148  		}
   149  	})
   150  	t.Run("CiTriggerEventWithInValidGitTag", func(t *testing.T) {
   151  
   152  		// Prepare test data
   153  		ciCdRequest := &helper.CiCdTriggerEvent{}
   154  		json.Unmarshal([]byte(test_data.CiTriggerEventWithInValidGitTag), ciCdRequest)
   155  
   156  		exitCode := 0
   157  		os.RemoveAll(util.WORKINGDIR)
   158  		// Call the function
   159  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
   160  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
   161  
   162  		// Assert the expected results
   163  		if exitCode != util.CiStageFailErrorCode {
   164  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
   165  		}
   166  	})
   167  	t.Run("CiTriggerEventSourceTypeWebhookPRBased", func(t *testing.T) {
   168  
   169  		// Prepare test data
   170  		ciCdRequest := &helper.CiCdTriggerEvent{}
   171  		json.Unmarshal([]byte(test_data.CiTriggerEventSourceTypeWebhookPRBased), ciCdRequest)
   172  
   173  		exitCode := 0
   174  		os.RemoveAll(util.WORKINGDIR)
   175  		// Call the function
   176  		ciStage := NewCiStage(*helper.NewGitManagerImpl(helper.NewGitCliManager()))
   177  		ciStage.HandleCIEvent(ciCdRequest, &exitCode)
   178  
   179  		// Assert the expected results
   180  		if exitCode != util.CiStageFailErrorCode {
   181  			t.Errorf("Expected exitCode to be %d, but got %d", 0, exitCode)
   182  		}
   183  	})
   184  
   185  }