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 }