Skip to content

Commit 80cca56

Browse files
committed
Add fixture for artifacts v4
1 parent 2c0784c commit 80cca56

File tree

9 files changed

+64
-19
lines changed

9 files changed

+64
-19
lines changed

models/fixtures/action_artifact.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,21 @@
5151
created_unix: 1712348022
5252
updated_unix: 1712348022
5353
expired_unix: 1720124022
54+
55+
-
56+
id: 22
57+
run_id: 792
58+
runner_id: 1
59+
repo_id: 4
60+
owner_id: 1
61+
commit_sha: c2d72f548424103f01ee1dc02889c1e2bff816b0
62+
storage_path: "27/5/1730330775594233150.chunk"
63+
file_size: 1024
64+
file_compressed_size: 1024
65+
content_encoding: "application/zip"
66+
artifact_path: "artifact-v4-download.zip"
67+
artifact_name: "artifact-v4-download"
68+
status: 2
69+
created_unix: 1730330775
70+
updated_unix: 1730330775
71+
expired_unix: 1738106775

modules/storage/storage.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ var (
131131
ActionsArtifacts ObjectStorage = uninitializedStorage
132132
)
133133

134-
// Init init the stoarge
134+
// Init init the storage
135135
func Init() error {
136136
for _, f := range []func() error{
137137
initAttachments,

tests/integration/api_actions_artifact_test.go

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,23 +116,33 @@ func TestActionsArtifactDownload(t *testing.T) {
116116
var listResp listArtifactsResponse
117117
DecodeJSON(t, resp, &listResp)
118118
assert.Equal(t, int64(2), listResp.Count)
119-
assert.Equal(t, "artifact-download", listResp.Value[0].Name)
120-
assert.Contains(t, listResp.Value[0].FileContainerResourceURL, "/api/actions_pipeline/_apis/pipelines/workflows/791/artifacts")
121119

122-
idx := strings.Index(listResp.Value[0].FileContainerResourceURL, "/api/actions_pipeline/_apis/pipelines/")
123-
url := listResp.Value[0].FileContainerResourceURL[idx+1:] + "?itemPath=artifact-download"
120+
// Return list might be in any order. Get one file.
121+
artifact_idx := -1
122+
for i, artifact := range listResp.Value {
123+
if artifact.Name == "artifact-download" {
124+
artifact_idx = i
125+
break
126+
}
127+
}
128+
assert.True(t, artifact_idx >= 0)
129+
assert.Equal(t, listResp.Value[artifact_idx].Name, "artifact-download")
130+
assert.Contains(t, listResp.Value[artifact_idx].FileContainerResourceURL, "/api/actions_pipeline/_apis/pipelines/workflows/791/artifacts")
131+
132+
idx := strings.Index(listResp.Value[artifact_idx].FileContainerResourceURL, "/api/actions_pipeline/_apis/pipelines/")
133+
url := listResp.Value[artifact_idx].FileContainerResourceURL[idx+1:] + "?itemPath=artifact-download"
124134
req = NewRequest(t, "GET", url).
125135
AddTokenAuth("8061e833a55f6fc0157c98b883e91fcfeeb1a71a")
126136
resp = MakeRequest(t, req, http.StatusOK)
127137
var downloadResp downloadArtifactResponse
128138
DecodeJSON(t, resp, &downloadResp)
129139
assert.Len(t, downloadResp.Value, 1)
130-
assert.Equal(t, "artifact-download/abc.txt", downloadResp.Value[0].Path)
131-
assert.Equal(t, "file", downloadResp.Value[0].ItemType)
132-
assert.Contains(t, downloadResp.Value[0].ContentLocation, "/api/actions_pipeline/_apis/pipelines/workflows/791/artifacts")
140+
assert.Equal(t, "artifact-download/abc.txt", downloadResp.Value[artifact_idx].Path)
141+
assert.Equal(t, "file", downloadResp.Value[artifact_idx].ItemType)
142+
assert.Contains(t, downloadResp.Value[artifact_idx].ContentLocation, "/api/actions_pipeline/_apis/pipelines/workflows/791/artifacts")
133143

134-
idx = strings.Index(downloadResp.Value[0].ContentLocation, "/api/actions_pipeline/_apis/pipelines/")
135-
url = downloadResp.Value[0].ContentLocation[idx:]
144+
idx = strings.Index(downloadResp.Value[artifact_idx].ContentLocation, "/api/actions_pipeline/_apis/pipelines/")
145+
url = downloadResp.Value[artifact_idx].ContentLocation[idx:]
136146
req = NewRequest(t, "GET", url).
137147
AddTokenAuth("8061e833a55f6fc0157c98b883e91fcfeeb1a71a")
138148
resp = MakeRequest(t, req, http.StatusOK)

tests/integration/api_actions_artifact_v4_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ func TestActionsArtifactV4DownloadSingle(t *testing.T) {
308308

309309
// acquire artifact upload url
310310
req := NewRequestWithBody(t, "POST", "/twirp/github.actions.results.api.v1.ArtifactService/ListArtifacts", toProtoJSON(&actions.ListArtifactsRequest{
311-
NameFilter: wrapperspb.String("artifact"),
311+
NameFilter: wrapperspb.String("artifact-v4-download"),
312312
WorkflowRunBackendId: "792",
313313
WorkflowJobRunBackendId: "193",
314314
})).AddTokenAuth(token)
@@ -319,7 +319,7 @@ func TestActionsArtifactV4DownloadSingle(t *testing.T) {
319319

320320
// confirm artifact upload
321321
req = NewRequestWithBody(t, "POST", "/twirp/github.actions.results.api.v1.ArtifactService/GetSignedArtifactURL", toProtoJSON(&actions.GetSignedArtifactURLRequest{
322-
Name: "artifact",
322+
Name: "artifact-v4-download",
323323
WorkflowRunBackendId: "792",
324324
WorkflowJobRunBackendId: "193",
325325
})).
@@ -331,8 +331,8 @@ func TestActionsArtifactV4DownloadSingle(t *testing.T) {
331331

332332
req = NewRequest(t, "GET", finalizeResp.SignedUrl)
333333
resp = MakeRequest(t, req, http.StatusOK)
334-
body := strings.Repeat("A", 1024)
335-
assert.Equal(t, resp.Body.String(), body)
334+
body := strings.Repeat("D", 1024)
335+
assert.Equal(t, body, resp.Body.String())
336336
}
337337

338338
func TestActionsArtifactV4Delete(t *testing.T) {
@@ -343,7 +343,7 @@ func TestActionsArtifactV4Delete(t *testing.T) {
343343

344344
// delete artifact by name
345345
req := NewRequestWithBody(t, "POST", "/twirp/github.actions.results.api.v1.ArtifactService/DeleteArtifact", toProtoJSON(&actions.DeleteArtifactRequest{
346-
Name: "artifact",
346+
Name: "artifact-v4-download",
347347
WorkflowRunBackendId: "792",
348348
WorkflowJobRunBackendId: "193",
349349
})).AddTokenAuth(token)

tests/test_utils.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,20 @@ func PrepareAttachmentsStorage(t testing.TB) {
192192
}))
193193
}
194194

195+
func PrepareArtifactsStorage(t testing.TB) {
196+
// prepare actions artifacts directory and files
197+
assert.NoError(t, storage.Clean(storage.ActionsArtifacts))
198+
199+
s, err := storage.NewStorage(setting.LocalStorageType, &setting.Storage{
200+
Path: filepath.Join(filepath.Dir(setting.AppPath), "tests", "testdata", "data", "artifacts"),
201+
})
202+
assert.NoError(t, err)
203+
assert.NoError(t, s.IterateObjects("", func(p string, obj storage.Object) error {
204+
_, err = storage.Copy(storage.ActionsArtifacts, p, s, p)
205+
return err
206+
}))
207+
}
208+
195209
func PrepareTestEnv(t testing.TB, skip ...int) func() {
196210
t.Helper()
197211
ourSkip := 1
@@ -207,10 +221,6 @@ func PrepareTestEnv(t testing.TB, skip ...int) func() {
207221
assert.NoError(t, util.RemoveAll(setting.RepoRootPath))
208222
assert.NoError(t, unittest.CopyDir(path.Join(filepath.Dir(setting.AppPath), "tests/gitea-repositories-meta"), setting.RepoRootPath))
209223

210-
// load actions artifact fixtures
211-
assert.NoError(t, util.RemoveAll(setting.Actions.ArtifactStorage.Path))
212-
assert.NoError(t, unittest.CopyDir(path.Join(filepath.Dir(setting.AppPath), "tests/gitea-artifacts-meta"), setting.Actions.ArtifactStorage.Path))
213-
214224
ownerDirs, err := os.ReadDir(setting.RepoRootPath)
215225
if err != nil {
216226
assert.NoError(t, err, "unable to read the new repo root: %v\n", err)
@@ -232,6 +242,9 @@ func PrepareTestEnv(t testing.TB, skip ...int) func() {
232242
}
233243
}
234244

245+
// Initialize actions artifact data
246+
PrepareArtifactsStorage(t)
247+
235248
// load LFS object fixtures
236249
// (LFS storage can be on any of several backends, including remote servers, so we init it with the storage API)
237250
lfsFixtures, err := storage.NewStorage(setting.LocalStorageType, &setting.Storage{
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

0 commit comments

Comments
 (0)