github.com/secure-build/gitlab-runner@v12.5.0+incompatible/commands/helpers/artifacts_downloader_test.go (about)

     1  package helpers
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"gitlab.com/gitlab-org/gitlab-runner/common"
     9  	"gitlab.com/gitlab-org/gitlab-runner/helpers"
    10  	"os"
    11  )
    12  
    13  var downloaderCredentials = common.JobCredentials{
    14  	ID:    1000,
    15  	Token: "test",
    16  	URL:   "test",
    17  }
    18  
    19  func TestArtifactsDownloaderRequirements(t *testing.T) {
    20  	removeHook := helpers.MakeFatalToPanic()
    21  	defer removeHook()
    22  
    23  	cmd := ArtifactsDownloaderCommand{}
    24  	assert.Panics(t, func() {
    25  		cmd.Execute(nil)
    26  	})
    27  }
    28  
    29  func TestArtifactsDownloaderNotFound(t *testing.T) {
    30  	network := &testNetwork{
    31  		downloadState: common.DownloadNotFound,
    32  	}
    33  	cmd := ArtifactsDownloaderCommand{
    34  		JobCredentials: downloaderCredentials,
    35  		network:        network,
    36  	}
    37  
    38  	removeHook := helpers.MakeFatalToPanic()
    39  	defer removeHook()
    40  
    41  	assert.Panics(t, func() {
    42  		cmd.Execute(nil)
    43  	})
    44  
    45  	assert.Equal(t, 1, network.downloadCalled)
    46  }
    47  
    48  func TestArtifactsDownloaderForbidden(t *testing.T) {
    49  	network := &testNetwork{
    50  		downloadState: common.DownloadForbidden,
    51  	}
    52  	cmd := ArtifactsDownloaderCommand{
    53  		JobCredentials: downloaderCredentials,
    54  		network:        network,
    55  	}
    56  
    57  	removeHook := helpers.MakeFatalToPanic()
    58  	defer removeHook()
    59  
    60  	assert.Panics(t, func() {
    61  		cmd.Execute(nil)
    62  	})
    63  
    64  	assert.Equal(t, 1, network.downloadCalled)
    65  }
    66  
    67  func TestArtifactsDownloaderRetry(t *testing.T) {
    68  	network := &testNetwork{
    69  		downloadState: common.DownloadFailed,
    70  	}
    71  	cmd := ArtifactsDownloaderCommand{
    72  		JobCredentials: downloaderCredentials,
    73  		network:        network,
    74  		retryHelper: retryHelper{
    75  			Retry: 2,
    76  		},
    77  	}
    78  
    79  	removeHook := helpers.MakeFatalToPanic()
    80  	defer removeHook()
    81  
    82  	assert.Panics(t, func() {
    83  		cmd.Execute(nil)
    84  	})
    85  
    86  	assert.Equal(t, 3, network.downloadCalled)
    87  }
    88  
    89  func TestArtifactsDownloaderSucceeded(t *testing.T) {
    90  	network := &testNetwork{
    91  		downloadState: common.DownloadSucceeded,
    92  	}
    93  	cmd := ArtifactsDownloaderCommand{
    94  		JobCredentials: downloaderCredentials,
    95  		network:        network,
    96  	}
    97  
    98  	os.Remove(artifactsTestArchivedFile)
    99  	fi, _ := os.Stat(artifactsTestArchivedFile)
   100  	assert.Nil(t, fi)
   101  	cmd.Execute(nil)
   102  	assert.Equal(t, 1, network.downloadCalled)
   103  	fi, _ = os.Stat(artifactsTestArchivedFile)
   104  	assert.NotNil(t, fi)
   105  }