Setup
+
Populate registry with test manifest
Expected
<*url.Error | 0xc000396ea0>: {
Op: "Put",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/tagtest0",
Err: <*net.OpError | 0xc0002eb400>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc0002feac0>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
Get tag name from environment
you have skipped this test.
Pull blobs
+
HEAD request to nonexistent blob should result in 404 response
Expected
<*url.Error | 0xc000397a10>: {
Op: "Head",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
Err: <*net.OpError | 0xc0002eb900>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000366540>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
HEAD request to existing blob should yield 200
Expected
<*url.Error | 0xc000460270>: {
Op: "Head",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:355be271ea6c8b35afb5b3a7d9653092ce9fc63145e6eb6229b698dfc297a84e",
Err: <*net.OpError | 0xc0002ebd10>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc0002ff280>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
GET nonexistent blob should result in 404 response
Expected
<*url.Error | 0xc000460990>: {
Op: "Get",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
Err: <*net.OpError | 0xc0004740f0>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000366600>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
GET request to existing blob URL should yield 200
Expected
<*url.Error | 0xc00036ede0>: {
Op: "Get",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:355be271ea6c8b35afb5b3a7d9653092ce9fc63145e6eb6229b698dfc297a84e",
Err: <*net.OpError | 0xc000368690>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000366680>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
Pull manifests
+
HEAD request to nonexistent manifest should return 404
Expected
<*url.Error | 0xc00036e7b0>: {
Op: "Head",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
Err: <*net.OpError | 0xc000368320>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000366140>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
HEAD request to manifest path (digest) should yield 200 response
Expected
<*url.Error | 0xc00036f020>: {
Op: "Head",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:ffc93cbc6bfe775954a98988c75be33aa17936d7208e30f72e47a197c95f64b6",
Err: <*net.OpError | 0xc000368780>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000366580>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
HEAD request to manifest path (tag) should yield 200 response
Expected
<string>:
not to be empty
+
GET nonexistent manifest should return 404
Expected
<*url.Error | 0xc000087ce0>: {
Op: "Get",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/.INVALID_MANIFEST_NAME",
Err: <*net.OpError | 0xc0000c2320>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000082240>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
GET request to manifest path (digest) should yield 200 response
Expected
<*url.Error | 0xc00036f950>: {
Op: "Get",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:ffc93cbc6bfe775954a98988c75be33aa17936d7208e30f72e47a197c95f64b6",
Err: <*net.OpError | 0xc000368c80>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000082e00>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
GET request to manifest path (tag) should yield 200 response
Expected
<string>:
not to be empty
Error codes
+
400 response body should contain OCI-conforming JSON message
Expected
<*url.Error | 0xc000154c30>: {
Op: "Put",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:totallywrong",
Err: <*net.OpError | 0xc0000c27d0>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc0003670c0>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
Teardown
+
Delete config blob created in setup
Expected
<*url.Error | 0xc0001555c0>: {
Op: "Delete",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:355be271ea6c8b35afb5b3a7d9653092ce9fc63145e6eb6229b698dfc297a84e",
Err: <*net.OpError | 0xc0000c2cd0>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000083940>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
Delete layer blob created in setup
Expected
<*url.Error | 0xc00029a570>: {
Op: "Delete",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/blobs/sha256:48acff1d91752e957527c1b5416e7376d910bcacf01b9441175f8c270e35c183",
Err: <*net.OpError | 0xc000369220>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000083cc0>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil
+
Delete manifest created in setup
Expected
<*url.Error | 0xc00029aea0>: {
Op: "Delete",
URL: "https://registry-intl.REPLACEME.aliyuncs.com/v2/REPLACEME/REPLACEME/manifests/sha256:ffc93cbc6bfe775954a98988c75be33aa17936d7208e30f72e47a197c95f64b6",
Err: <*net.OpError | 0xc0003695e0>{
Op: "dial",
Net: "tcp",
Source: nil,
Addr: nil,
Err: <*net.DNSError | 0xc000367580>{
Err: "no such host",
Name: "registry-intl.REPLACEME.aliyuncs.com",
Server: "168.63.129.16:53",
IsTimeout: false,
IsTemporary: false,
IsNotFound: true,
},
},
}
to be nil