Skip to content

Commit 7d52c1b

Browse files
authored
Merge pull request #249 from bloodorangeio/unique-blobs
Use unique blobs for each workflow category
2 parents 2fa3dfc + 08ec6bb commit 7d52c1b

File tree

5 files changed

+133
-83
lines changed

5 files changed

+133
-83
lines changed

conformance/01_pull_test.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package conformance
22

33
import (
4-
"fmt"
54
"net/http"
65
"os"
76

@@ -22,10 +21,10 @@ var test01Pull = func() {
2221
req := client.NewRequest(reggie.POST, "/v2/<name>/blobs/uploads/")
2322
resp, _ := client.Do(req)
2423
req = client.NewRequest(reggie.PUT, resp.GetRelativeLocation()).
25-
SetQueryParam("digest", configBlobDigest).
24+
SetQueryParam("digest", configs[0].Digest).
2625
SetHeader("Content-Type", "application/octet-stream").
27-
SetHeader("Content-Length", fmt.Sprintf("%d", len(configBlobContent))).
28-
SetBody(configBlobContent)
26+
SetHeader("Content-Length", configs[0].ContentLength).
27+
SetBody(configs[0].Content)
2928
resp, err := client.Do(req)
3029
Expect(err).To(BeNil())
3130
Expect(resp.StatusCode()).To(SatisfyAll(
@@ -57,7 +56,7 @@ var test01Pull = func() {
5756
req := client.NewRequest(reggie.PUT, "/v2/<name>/manifests/<reference>",
5857
reggie.WithReference(tag)).
5958
SetHeader("Content-Type", "application/vnd.oci.image.manifest.v1+json").
60-
SetBody(manifestContent)
59+
SetBody(manifests[0].Content)
6160
resp, err := client.Do(req)
6261
Expect(err).To(BeNil())
6362
Expect(resp.StatusCode()).To(SatisfyAll(
@@ -71,6 +70,13 @@ var test01Pull = func() {
7170
req := client.NewRequest(reggie.GET, "/v2/<name>/tags/list")
7271
resp, _ := client.Do(req)
7372
tag = getTagNameFromResponse(resp)
73+
74+
// attempt to forcibly overwrite this tag with the unique manifest for this run
75+
req = client.NewRequest(reggie.PUT, "/v2/<name>/manifests/<reference>",
76+
reggie.WithReference(tag)).
77+
SetHeader("Content-Type", "application/vnd.oci.image.manifest.v1+json").
78+
SetBody(manifests[0].Content)
79+
_, _ = client.Do(req)
7480
})
7581

7682
g.Specify("Get tag name from environment", func() {
@@ -93,12 +99,12 @@ var test01Pull = func() {
9399
g.Specify("HEAD request to existing blob should yield 200", func() {
94100
SkipIfDisabled(pull)
95101
req := client.NewRequest(reggie.HEAD, "/v2/<name>/blobs/<digest>",
96-
reggie.WithDigest(configBlobDigest))
102+
reggie.WithDigest(configs[0].Digest))
97103
resp, err := client.Do(req)
98104
Expect(err).To(BeNil())
99105
Expect(resp.StatusCode()).To(Equal(http.StatusOK))
100106
if h := resp.Header().Get("Docker-Content-Digest"); h != "" {
101-
Expect(h).To(Equal(configBlobDigest))
107+
Expect(h).To(Equal(configs[0].Digest))
102108
}
103109
})
104110

@@ -113,7 +119,7 @@ var test01Pull = func() {
113119

114120
g.Specify("GET request to existing blob URL should yield 200", func() {
115121
SkipIfDisabled(pull)
116-
req := client.NewRequest(reggie.GET, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configBlobDigest))
122+
req := client.NewRequest(reggie.GET, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configs[0].Digest))
117123
resp, err := client.Do(req)
118124
Expect(err).To(BeNil())
119125
Expect(resp.StatusCode()).To(Equal(http.StatusOK))
@@ -132,13 +138,13 @@ var test01Pull = func() {
132138

133139
g.Specify("HEAD request to manifest path (digest) should yield 200 response", func() {
134140
SkipIfDisabled(pull)
135-
req := client.NewRequest(reggie.HEAD, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest)).
141+
req := client.NewRequest(reggie.HEAD, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[0].Digest)).
136142
SetHeader("Accept", "application/vnd.oci.image.manifest.v1+json")
137143
resp, err := client.Do(req)
138144
Expect(err).To(BeNil())
139145
Expect(resp.StatusCode()).To(Equal(http.StatusOK))
140146
if h := resp.Header().Get("Docker-Content-Digest"); h != "" {
141-
Expect(h).To(Equal(manifestDigest))
147+
Expect(h).To(Equal(manifests[0].Digest))
142148
}
143149
})
144150

@@ -151,7 +157,7 @@ var test01Pull = func() {
151157
Expect(err).To(BeNil())
152158
Expect(resp.StatusCode()).To(Equal(http.StatusOK))
153159
if h := resp.Header().Get("Docker-Content-Digest"); h != "" {
154-
Expect(h).To(Equal(manifestDigest))
160+
Expect(h).To(Equal(manifests[0].Digest))
155161
}
156162
})
157163

@@ -166,7 +172,7 @@ var test01Pull = func() {
166172

167173
g.Specify("GET request to manifest path (digest) should yield 200 response", func() {
168174
SkipIfDisabled(pull)
169-
req := client.NewRequest(reggie.GET, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest)).
175+
req := client.NewRequest(reggie.GET, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[0].Digest)).
170176
SetHeader("Accept", "application/vnd.oci.image.manifest.v1+json")
171177
resp, err := client.Do(req)
172178
Expect(err).To(BeNil())
@@ -211,7 +217,7 @@ var test01Pull = func() {
211217
g.Specify("Delete manifest created in setup", func() {
212218
SkipIfDisabled(pull)
213219
RunOnlyIf(runPullSetup)
214-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest))
220+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[0].Digest))
215221
resp, err := client.Do(req)
216222
Expect(err).To(BeNil())
217223
Expect(resp.StatusCode()).To(SatisfyAny(
@@ -227,7 +233,7 @@ var test01Pull = func() {
227233
g.Specify("Delete config blob created in setup", func() {
228234
SkipIfDisabled(pull)
229235
RunOnlyIf(runPullSetup)
230-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configBlobDigest))
236+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configs[0].Digest))
231237
resp, err := client.Do(req)
232238
Expect(err).To(BeNil())
233239
Expect(resp.StatusCode()).To(SatisfyAny(
@@ -258,7 +264,7 @@ var test01Pull = func() {
258264
g.Specify("Delete manifest created in setup", func() {
259265
SkipIfDisabled(pull)
260266
RunOnlyIf(runPullSetup)
261-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest))
267+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[0].Digest))
262268
resp, err := client.Do(req)
263269
Expect(err).To(BeNil())
264270
Expect(resp.StatusCode()).To(SatisfyAny(

conformance/02_push_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ var test02Push = func() {
6363
g.Specify("POST request with digest and blob should yield a 201", func() {
6464
SkipIfDisabled(push)
6565
req := client.NewRequest(reggie.POST, "/v2/<name>/blobs/uploads/").
66-
SetHeader("Content-Length", configBlobContentLength).
66+
SetHeader("Content-Length", configs[1].ContentLength).
6767
SetHeader("Content-Type", "application/octet-stream").
68-
SetQueryParam("digest", configBlobDigest).
69-
SetBody(configBlobContent)
68+
SetQueryParam("digest", configs[1].Digest).
69+
SetBody(configs[1].Content)
7070
resp, err := client.Do(req)
7171
Expect(err).To(BeNil())
7272
location := resp.Header().Get("Location")
@@ -76,7 +76,7 @@ var test02Push = func() {
7676

7777
g.Specify("GET request to blob URL from prior request should yield 200", func() {
7878
SkipIfDisabled(push)
79-
req := client.NewRequest(reggie.GET, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configBlobDigest))
79+
req := client.NewRequest(reggie.GET, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configs[1].Digest))
8080
resp, err := client.Do(req)
8181
Expect(err).To(BeNil())
8282
Expect(resp.StatusCode()).To(Equal(http.StatusOK))
@@ -94,10 +94,10 @@ var test02Push = func() {
9494
g.Specify("PUT upload of a blob should yield a 201 Response", func() {
9595
SkipIfDisabled(push)
9696
req := client.NewRequest(reggie.PUT, lastResponse.GetRelativeLocation()).
97-
SetHeader("Content-Length", configBlobContentLength).
97+
SetHeader("Content-Length", configs[1].ContentLength).
9898
SetHeader("Content-Type", "application/octet-stream").
99-
SetQueryParam("digest", configBlobDigest).
100-
SetBody(configBlobContent)
99+
SetQueryParam("digest", configs[1].Digest).
100+
SetBody(configs[1].Content)
101101
resp, err := client.Do(req)
102102
Expect(err).To(BeNil())
103103
location := resp.Header().Get("Location")
@@ -107,7 +107,7 @@ var test02Push = func() {
107107

108108
g.Specify("GET request to existing blob should yield 200 response", func() {
109109
SkipIfDisabled(push)
110-
req := client.NewRequest(reggie.GET, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configBlobDigest))
110+
req := client.NewRequest(reggie.GET, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configs[1].Digest))
111111
resp, err := client.Do(req)
112112
Expect(err).To(BeNil())
113113
Expect(resp.StatusCode()).To(Equal(http.StatusOK))
@@ -249,7 +249,7 @@ var test02Push = func() {
249249
req := client.NewRequest(reggie.PUT, "/v2/<name>/manifests/<reference>",
250250
reggie.WithReference(tag)).
251251
SetHeader("Content-Type", "application/vnd.oci.image.manifest.v1+json").
252-
SetBody(manifestContent)
252+
SetBody(manifests[1].Content)
253253
resp, err := client.Do(req)
254254
Expect(err).To(BeNil())
255255
location := resp.Header().Get("Location")
@@ -274,7 +274,7 @@ var test02Push = func() {
274274

275275
g.Specify("GET request to manifest URL (digest) should yield 200 response", func() {
276276
SkipIfDisabled(push)
277-
req := client.NewRequest(reggie.GET, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest)).
277+
req := client.NewRequest(reggie.GET, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[1].Digest)).
278278
SetHeader("Accept", "application/vnd.oci.image.manifest.v1+json")
279279
resp, err := client.Do(req)
280280
Expect(err).To(BeNil())
@@ -287,7 +287,7 @@ var test02Push = func() {
287287
g.Specify("Delete manifest created in tests", func() {
288288
SkipIfDisabled(push)
289289
RunOnlyIf(runPushSetup)
290-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest))
290+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[1].Digest))
291291
resp, err := client.Do(req)
292292
Expect(err).To(BeNil())
293293
Expect(resp.StatusCode()).To(SatisfyAny(
@@ -303,7 +303,7 @@ var test02Push = func() {
303303
g.Specify("Delete config blob created in tests", func() {
304304
SkipIfDisabled(push)
305305
RunOnlyIf(runPushSetup)
306-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configBlobDigest))
306+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configs[1].Digest))
307307
resp, err := client.Do(req)
308308
Expect(err).To(BeNil())
309309
Expect(resp.StatusCode()).To(SatisfyAny(
@@ -334,7 +334,7 @@ var test02Push = func() {
334334
g.Specify("Delete manifest created in tests", func() {
335335
SkipIfDisabled(push)
336336
RunOnlyIf(runPushSetup)
337-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest))
337+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[1].Digest))
338338
resp, err := client.Do(req)
339339
Expect(err).To(BeNil())
340340
Expect(resp.StatusCode()).To(SatisfyAny(

conformance/03_discovery_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ var test03ContentDiscovery = func() {
2626
resp, err := client.Do(req)
2727
Expect(err).To(BeNil())
2828
req = client.NewRequest(reggie.PUT, resp.GetRelativeLocation()).
29-
SetQueryParam("digest", configBlobDigest).
29+
SetQueryParam("digest", configs[2].Digest).
3030
SetHeader("Content-Type", "application/octet-stream").
31-
SetHeader("Content-Length", fmt.Sprintf("%d", len(configBlobContent))).
32-
SetBody(configBlobContent)
31+
SetHeader("Content-Length", configs[2].ContentLength).
32+
SetBody(configs[2].Content)
3333
resp, err = client.Do(req)
3434
Expect(err).To(BeNil())
3535
Expect(resp.StatusCode()).To(SatisfyAll(
@@ -64,7 +64,7 @@ var test03ContentDiscovery = func() {
6464
req := client.NewRequest(reggie.PUT, "/v2/<name>/manifests/<reference>",
6565
reggie.WithReference(tag)).
6666
SetHeader("Content-Type", "application/vnd.oci.image.manifest.v1+json").
67-
SetBody(manifestContent)
67+
SetBody(manifests[2].Content)
6868
resp, err := client.Do(req)
6969
Expect(err).To(BeNil())
7070
Expect(resp.StatusCode()).To(SatisfyAll(
@@ -132,7 +132,7 @@ var test03ContentDiscovery = func() {
132132
g.Specify("Delete created manifest & associated tags", func() {
133133
SkipIfDisabled(contentDiscovery)
134134
RunOnlyIf(runContentDiscoverySetup)
135-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest))
135+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[2].Digest))
136136
resp, err := client.Do(req)
137137
Expect(err).To(BeNil())
138138
Expect(resp.StatusCode()).To(SatisfyAny(
@@ -148,7 +148,7 @@ var test03ContentDiscovery = func() {
148148
g.Specify("Delete config blob created in tests", func() {
149149
SkipIfDisabled(contentDiscovery)
150150
RunOnlyIf(runContentDiscoverySetup)
151-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configBlobDigest))
151+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configs[2].Digest))
152152
resp, err := client.Do(req)
153153
Expect(err).To(BeNil())
154154
Expect(resp.StatusCode()).To(SatisfyAny(
@@ -179,7 +179,7 @@ var test03ContentDiscovery = func() {
179179
g.Specify("Delete created manifest & associated tags", func() {
180180
SkipIfDisabled(contentDiscovery)
181181
RunOnlyIf(runContentDiscoverySetup)
182-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest))
182+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[2].Digest))
183183
resp, err := client.Do(req)
184184
Expect(err).To(BeNil())
185185
Expect(resp.StatusCode()).To(SatisfyAny(

conformance/04_management_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ var test04ContentManagement = func() {
2424
resp, err := client.Do(req)
2525
Expect(err).To(BeNil())
2626
req = client.NewRequest(reggie.PUT, resp.GetRelativeLocation()).
27-
SetHeader("Content-Length", configBlobContentLength).
27+
SetHeader("Content-Length", configs[3].ContentLength).
2828
SetHeader("Content-Type", "application/octet-stream").
29-
SetQueryParam("digest", configBlobDigest).
30-
SetBody(configBlobContent)
29+
SetQueryParam("digest", configs[3].Digest).
30+
SetBody(configs[3].Content)
3131
resp, err = client.Do(req)
3232
Expect(err).To(BeNil())
3333
Expect(resp.StatusCode()).To(SatisfyAll(
@@ -60,7 +60,7 @@ var test04ContentManagement = func() {
6060
req := client.NewRequest(reggie.PUT, "/v2/<name>/manifests/<reference>",
6161
reggie.WithReference(tagToDelete)).
6262
SetHeader("Content-Type", "application/vnd.oci.image.manifest.v1+json").
63-
SetBody(manifestContent)
63+
SetBody(manifests[3].Content)
6464
resp, err := client.Do(req)
6565
Expect(err).To(BeNil())
6666
Expect(resp.StatusCode()).To(SatisfyAll(
@@ -104,7 +104,7 @@ var test04ContentManagement = func() {
104104

105105
g.Specify("DELETE request to manifest (digest) should yield 202 response unless already deleted", func() {
106106
SkipIfDisabled(contentManagement)
107-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest))
107+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[3].Digest))
108108
resp, err := client.Do(req)
109109
Expect(err).To(BeNil())
110110
// In the case that the previous request was accepted, this may or may not fail (which is ok)
@@ -116,7 +116,7 @@ var test04ContentManagement = func() {
116116

117117
g.Specify("GET request to deleted manifest URL should yield 404 response, unless delete is disallowed", func() {
118118
SkipIfDisabled(contentManagement)
119-
req := client.NewRequest(reggie.GET, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifestDigest))
119+
req := client.NewRequest(reggie.GET, "/v2/<name>/manifests/<digest>", reggie.WithDigest(manifests[3].Digest))
120120
resp, err := client.Do(req)
121121
Expect(err).To(BeNil())
122122
Expect(resp.StatusCode()).To(SatisfyAny(
@@ -144,7 +144,7 @@ var test04ContentManagement = func() {
144144
SkipIfDisabled(contentManagement)
145145
RunOnlyIf(runContentManagementSetup)
146146
// config blob
147-
req := client.NewRequest(reggie.DELETE, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configBlobDigest))
147+
req := client.NewRequest(reggie.DELETE, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configs[3].Digest))
148148
resp, err := client.Do(req)
149149
Expect(err).To(BeNil())
150150
Expect(resp.StatusCode()).To(Equal(http.StatusAccepted))
@@ -159,7 +159,7 @@ var test04ContentManagement = func() {
159159
g.Specify("GET request to deleted blob URL should yield 404 response", func() {
160160
SkipIfDisabled(contentManagement)
161161
RunOnlyIf(runContentManagementSetup)
162-
req := client.NewRequest(reggie.GET, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configBlobDigest))
162+
req := client.NewRequest(reggie.GET, "/v2/<name>/blobs/<digest>", reggie.WithDigest(configs[3].Digest))
163163
resp, err := client.Do(req)
164164
Expect(err).To(BeNil())
165165
Expect(resp.StatusCode()).To(Equal(http.StatusNotFound))

0 commit comments

Comments
 (0)