Skip to content

Commit 1aacf8e

Browse files
committed
Simplify test data
Signed-off-by: Cody Soyland <[email protected]>
1 parent 5008d5c commit 1aacf8e

File tree

9 files changed

+160
-103
lines changed

9 files changed

+160
-103
lines changed

pkg/fulcio/certificate/summarize_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
)
2424

2525
func TestSummarizeCertificateWithActionsBundle(t *testing.T) {
26-
entity := data.SigstoreJS200ProvenanceBundle(t)
26+
entity := data.Bundle(t, "[email protected]")
2727

2828
vc, err := entity.VerificationContent()
2929
if err != nil {
@@ -72,7 +72,7 @@ func TestSummarizeCertificateWithActionsBundle(t *testing.T) {
7272
}
7373

7474
func TestSummarizeCertificateWithOauthBundle(t *testing.T) {
75-
entity := data.SigstoreBundle(t)
75+
entity := data.Bundle(t, "dsse.sigstore.json")
7676

7777
vc, err := entity.VerificationContent()
7878
if err != nil {
@@ -102,7 +102,7 @@ func TestSummarizeCertificateWithOauthBundle(t *testing.T) {
102102
}
103103

104104
func TestSummarizeCertificateWithOtherNameSAN(t *testing.T) {
105-
entity := data.OthernameBundle(t)
105+
entity := data.Bundle(t, "othername.sigstore.json")
106106
vc, err := entity.VerificationContent()
107107
if err != nil {
108108
t.Fatalf("failed to get verification content: %v", err)

pkg/testing/data/data.go

Lines changed: 17 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -15,94 +15,37 @@
1515
package data
1616

1717
import (
18+
"embed"
1819
_ "embed"
19-
"encoding/json"
20-
"os"
20+
"path/filepath"
2121
"testing"
2222

23-
protobundle "github.com/sigstore/protobuf-specs/gen/pb-go/bundle/v1"
2423
"github.com/sigstore/sigstore-go/pkg/bundle"
2524
"github.com/sigstore/sigstore-go/pkg/root"
2625
"github.com/stretchr/testify/assert"
27-
"google.golang.org/protobuf/encoding/protojson"
2826
)
2927

30-
// Unmarshal returns the Go value for the given bytes
31-
func Unmarshal[T any](t *testing.T, data []byte) T {
32-
var v T
33-
err := json.Unmarshal(data, &v)
34-
if err != nil {
35-
t.Fatal(err)
36-
}
37-
return v
38-
}
39-
40-
//go:embed sigstoreBundle.json
41-
var SigstoreBundleRaw []byte
42-
43-
//go:embed sigstoreBundle2Sig.json
44-
var SigstoreBundle2SigRaw []byte
45-
46-
47-
var SigstoreJS200ProvenanceBundleRaw []byte
48-
49-
//go:embed othernameBundle.json
50-
var OthernameBundleRaw []byte
51-
52-
// TestBundle creates *bundle.Bundle from a raw byte stream
53-
// containing a JSON encoded protobuf bundle.
54-
func TestBundle(t *testing.T, raw []byte) *bundle.Bundle {
55-
var b protobundle.Bundle
56-
err := protojson.Unmarshal(raw, &b)
57-
if err != nil {
58-
t.Fatal(err)
59-
}
60-
bun, err := bundle.NewBundle(&b)
61-
if err != nil {
62-
t.Fatal(err)
63-
}
64-
return bun
65-
}
66-
67-
// SigstoreBundle returns a test *sigstore.Bundle.
68-
func SigstoreBundle(t *testing.T) *bundle.Bundle {
69-
return TestBundle(t, SigstoreBundleRaw)
70-
}
71-
72-
// SigstoreBundle2Sig returns a test *sigstore.Bundle with two signatures.
73-
func SigstoreBundle2Sig(t *testing.T) *bundle.Bundle {
74-
return TestBundle(t, SigstoreBundle2SigRaw)
75-
}
76-
77-
// SigstoreJS200ProvenanceBundle returns a test *sigstore.Bundle that
78-
// contains a complete sigstore-js build provenance.
79-
func SigstoreJS200ProvenanceBundle(t *testing.T) *bundle.Bundle {
80-
return TestBundle(t, SigstoreJS200ProvenanceBundleRaw)
81-
}
82-
83-
// OthernameBundle returns a test *sigstore.Bundle that contains verification
84-
// content for an artifact signed with an Othername identity.
85-
func OthernameBundle(t *testing.T) *bundle.Bundle {
86-
return TestBundle(t, OthernameBundleRaw)
87-
}
28+
//go:embed bundles/*.json trusted-roots/*.json
29+
var embedded embed.FS
8830

89-
// PublicGoodTrustedMaterialRoot returns a *root.TrustedRoot for PGI.
90-
func PublicGoodTrustedMaterialRoot(t *testing.T) *root.TrustedRoot {
91-
trustedrootJSON, _ := os.ReadFile("../../examples/trusted-root-public-good.json")
92-
trustedRoot, _ := root.NewTrustedRootFromJSON(trustedrootJSON)
31+
// Bundle reads a file from the embedded file system and returns a *bundle.Bundle
32+
func Bundle(t *testing.T, filename string) (b *bundle.Bundle) {
33+
data, err := embedded.ReadFile(filepath.Join("bundles", filename))
34+
assert.NoError(t, err)
9335

94-
assert.NotNil(t, trustedRoot)
36+
err = b.UnmarshalJSON(data)
37+
assert.NoError(t, err)
9538

96-
return trustedRoot
39+
return b
9740
}
9841

99-
// ScaffoldingTrustedMaterialRoot returns a *root.TrustedRoot for a private
100-
// sigstore deployment.
101-
func ScaffoldingTrustedMaterialRoot(t *testing.T) *root.TrustedRoot {
102-
trustedrootJSON, _ := os.ReadFile("../testing/data/trusted-root-scaffolding.json")
103-
trustedRoot, _ := root.NewTrustedRootFromJSON(trustedrootJSON)
42+
// TrustedRoot reads a file from the embedded file system and returns a *root.TrustedRoot
43+
func TrustedRoot(t *testing.T, filename string) *root.TrustedRoot {
44+
data, err := embedded.ReadFile(filepath.Join("trusted-roots", filename))
45+
assert.NoError(t, err)
10446

105-
assert.NotNil(t, trustedRoot)
47+
trustedRoot, _ := root.NewTrustedRootFromJSON(data)
48+
assert.NoError(t, err)
10649

10750
return trustedRoot
10851
}
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
{
2+
"mediaType": "application/vnd.dev.sigstore.trustedroot+json;version=0.1",
3+
"tlogs": [
4+
{
5+
"baseUrl": "https://rekor.sigstore.dev",
6+
"hashAlgorithm": "SHA2_256",
7+
"publicKey": {
8+
"rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2G2Y+2tabdTV5BcGiBIx0a9fAFwrkBbmLSGtks4L3qX6yYY0zufBnhC8Ur/iy55GhWP/9A/bY2LhC30M9+RYtw==",
9+
"keyDetails": "PKIX_ECDSA_P256_SHA_256",
10+
"validFor": {
11+
"start": "2021-01-12T11:53:27.000Z"
12+
}
13+
},
14+
"logId": {
15+
"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="
16+
}
17+
}
18+
],
19+
"certificateAuthorities": [
20+
{
21+
"subject": {
22+
"organization": "sigstore.dev",
23+
"commonName": "sigstore"
24+
},
25+
"uri": "https://fulcio.sigstore.dev",
26+
"certChain": {
27+
"certificates": [
28+
{
29+
"rawBytes": "MIIB+DCCAX6gAwIBAgITNVkDZoCiofPDsy7dfm6geLbuhzAKBggqhkjOPQQDAzAqMRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxETAPBgNVBAMTCHNpZ3N0b3JlMB4XDTIxMDMwNzAzMjAyOVoXDTMxMDIyMzAzMjAyOVowKjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MREwDwYDVQQDEwhzaWdzdG9yZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABLSyA7Ii5k+pNO8ZEWY0ylemWDowOkNa3kL+GZE5Z5GWehL9/A9bRNA3RbrsZ5i0JcastaRL7Sp5fp/jD5dxqc/UdTVnlvS16an+2Yfswe/QuLolRUCrcOE2+2iA5+tzd6NmMGQwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0OBBYEFMjFHQBBmiQpMlEk6w2uSu1KBtPsMB8GA1UdIwQYMBaAFMjFHQBBmiQpMlEk6w2uSu1KBtPsMAoGCCqGSM49BAMDA2gAMGUCMH8liWJfMui6vXXBhjDgY4MwslmN/TJxVe/83WrFomwmNf056y1X48F9c4m3a3ozXAIxAKjRay5/aj/jsKKGIkmQatjI8uupHr/+CxFvaJWmpYqNkLDGRU+9orzh5hI2RrcuaQ=="
30+
}
31+
]
32+
},
33+
"validFor": {
34+
"start": "2021-03-07T03:20:29.000Z",
35+
"end": "2022-12-31T23:59:59.999Z"
36+
}
37+
},
38+
{
39+
"subject": {
40+
"organization": "sigstore.dev",
41+
"commonName": "sigstore"
42+
},
43+
"uri": "https://fulcio.sigstore.dev",
44+
"certChain": {
45+
"certificates": [
46+
{
47+
"rawBytes": "MIICGjCCAaGgAwIBAgIUALnViVfnU0brJasmRkHrn/UnfaQwCgYIKoZIzj0EAwMwKjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MREwDwYDVQQDEwhzaWdzdG9yZTAeFw0yMjA0MTMyMDA2MTVaFw0zMTEwMDUxMzU2NThaMDcxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEeMBwGA1UEAxMVc2lnc3RvcmUtaW50ZXJtZWRpYXRlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE8RVS/ysH+NOvuDZyPIZtilgUF9NlarYpAd9HP1vBBH1U5CV77LSS7s0ZiH4nE7Hv7ptS6LvvR/STk798LVgMzLlJ4HeIfF3tHSaexLcYpSASr1kS0N/RgBJz/9jWCiXno3sweTAOBgNVHQ8BAf8EBAMCAQYwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU39Ppz1YkEZb5qNjpKFWixi4YZD8wHwYDVR0jBBgwFoAUWMAeX5FFpWapesyQoZMi0CrFxfowCgYIKoZIzj0EAwMDZwAwZAIwPCsQK4DYiZYDPIaDi5HFKnfxXx6ASSVmERfsynYBiX2X6SJRnZU84/9DZdnFvvxmAjBOt6QpBlc4J/0DxvkTCqpclvziL6BCCPnjdlIB3Pu3BxsPmygUY7Ii2zbdCdliiow="
48+
},
49+
{
50+
"rawBytes": "MIIB9zCCAXygAwIBAgIUALZNAPFdxHPwjeDloDwyYChAO/4wCgYIKoZIzj0EAwMwKjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MREwDwYDVQQDEwhzaWdzdG9yZTAeFw0yMTEwMDcxMzU2NTlaFw0zMTEwMDUxMzU2NThaMCoxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjERMA8GA1UEAxMIc2lnc3RvcmUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT7XeFT4rb3PQGwS4IajtLk3/OlnpgangaBclYpsYBr5i+4ynB07ceb3LP0OIOZdxexX69c5iVuyJRQ+Hz05yi+UF3uBWAlHpiS5sh0+H2GHE7SXrk1EC5m1Tr19L9gg92jYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRYwB5fkUWlZql6zJChkyLQKsXF+jAfBgNVHSMEGDAWgBRYwB5fkUWlZql6zJChkyLQKsXF+jAKBggqhkjOPQQDAwNpADBmAjEAj1nHeXZp+13NWBNa+EDsDP8G1WWg1tCMWP/WHPqpaVo0jhsweNFZgSs0eE7wYI4qAjEA2WB9ot98sIkoF3vZYdd3/VtWB5b9TNMea7Ix/stJ5TfcLLeABLE4BNJOsQ4vnBHJ"
51+
}
52+
]
53+
},
54+
"validFor": {
55+
"start": "2022-04-13T20:06:15.000Z"
56+
}
57+
}
58+
],
59+
"ctlogs": [
60+
{
61+
"baseUrl": "https://ctfe.sigstore.dev/test",
62+
"hashAlgorithm": "SHA2_256",
63+
"publicKey": {
64+
"rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbfwR+RJudXscgRBRpKX1XFDy3PyudDxz/SfnRi1fT8ekpfBd2O1uoz7jr3Z8nKzxA69EUQ+eFCFI3zeubPWU7w==",
65+
"keyDetails": "PKIX_ECDSA_P256_SHA_256",
66+
"validFor": {
67+
"start": "2021-03-14T00:00:00.000Z",
68+
"end": "2022-10-31T23:59:59.999Z"
69+
}
70+
},
71+
"logId": {
72+
"keyId": "CGCS8ChS/2hF0dFrJ4ScRWcYrBY9wzjSbea8IgY2b3I="
73+
}
74+
},
75+
{
76+
"baseUrl": "https://ctfe.sigstore.dev/2022",
77+
"hashAlgorithm": "SHA2_256",
78+
"publicKey": {
79+
"rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiPSlFi0CmFTfEjCUqF9HuCEcYXNKAaYalIJmBZ8yyezPjTqhxrKBpMnaocVtLJBI1eM3uXnQzQGAJdJ4gs9Fyw==",
80+
"keyDetails": "PKIX_ECDSA_P256_SHA_256",
81+
"validFor": {
82+
"start": "2022-10-20T00:00:00.000Z"
83+
}
84+
},
85+
"logId": {
86+
"keyId": "3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4="
87+
}
88+
}
89+
],
90+
"timestampAuthorities": [
91+
{
92+
"subject": {
93+
"organization": "GitHub, Inc.",
94+
"commonName": "Internal Services Root"
95+
},
96+
"certChain": {
97+
"certificates": [
98+
{
99+
"rawBytes": "MIIB3DCCAWKgAwIBAgIUchkNsH36Xa04b1LqIc+qr9DVecMwCgYIKoZIzj0EAwMwMjEVMBMGA1UEChMMR2l0SHViLCBJbmMuMRkwFwYDVQQDExBUU0EgaW50ZXJtZWRpYXRlMB4XDTIzMDQxNDAwMDAwMFoXDTI0MDQxMzAwMDAwMFowMjEVMBMGA1UEChMMR2l0SHViLCBJbmMuMRkwFwYDVQQDExBUU0EgVGltZXN0YW1waW5nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUD5ZNbSqYMd6r8qpOOEX9ibGnZT9GsuXOhr/f8U9FJugBGExKYp40OULS0erjZW7xV9xV52NnJf5OeDq4e5ZKqNWMFQwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMIMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUaW1RudOgVt0leqY0WKYbuPr47wAwCgYIKoZIzj0EAwMDaAAwZQIwbUH9HvD4ejCZJOWQnqAlkqURllvu9M8+VqLbiRK+zSfZCZwsiljRn8MQQRSkXEE5AjEAg+VxqtojfVfu8DhzzhCx9GKETbJHb19iV72mMKUbDAFmzZ6bQ8b54Zb8tidy5aWe"
100+
},
101+
{
102+
"rawBytes": "MIICEDCCAZWgAwIBAgIUX8ZO5QXP7vN4dMQ5e9sU3nub8OgwCgYIKoZIzj0EAwMwODEVMBMGA1UEChMMR2l0SHViLCBJbmMuMR8wHQYDVQQDExZJbnRlcm5hbCBTZXJ2aWNlcyBSb290MB4XDTIzMDQxNDAwMDAwMFoXDTI4MDQxMjAwMDAwMFowMjEVMBMGA1UEChMMR2l0SHViLCBJbmMuMRkwFwYDVQQDExBUU0EgaW50ZXJtZWRpYXRlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEvMLY/dTVbvIJYANAuszEwJnQE1llftynyMKIMhh48HmqbVr5ygybzsLRLVKbBWOdZ21aeJz+gZiytZetqcyF9WlER5NEMf6JV7ZNojQpxHq4RHGoGSceQv/qvTiZxEDKo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaW1RudOgVt0leqY0WKYbuPr47wAwHwYDVR0jBBgwFoAU9NYYlobnAG4c0/qjxyH/lq/wz+QwCgYIKoZIzj0EAwMDaQAwZgIxAK1B185ygCrIYFlIs3GjswjnwSMG6LY8woLVdakKDZxVa8f8cqMs1DhcxJ0+09w95QIxAO+tBzZk7vjUJ9iJgD4R6ZWTxQWKqNm74jO99o+o9sv4FI/SZTZTFyMn0IJEHdNmyA=="
103+
},
104+
{
105+
"rawBytes": "MIIB9DCCAXqgAwIBAgIUa/JAkdUjK4JUwsqtaiRJGWhqLSowCgYIKoZIzj0EAwMwODEVMBMGA1UEChMMR2l0SHViLCBJbmMuMR8wHQYDVQQDExZJbnRlcm5hbCBTZXJ2aWNlcyBSb290MB4XDTIzMDQxNDAwMDAwMFoXDTMzMDQxMTAwMDAwMFowODEVMBMGA1UEChMMR2l0SHViLCBJbmMuMR8wHQYDVQQDExZJbnRlcm5hbCBTZXJ2aWNlcyBSb290MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEf9jFAXxz4kx68AHRMOkFBhflDcMTvzaXz4x/FCcXjJ/1qEKon/qPIGnaURskDtyNbNDOpeJTDDFqt48iMPrnzpx6IZwqemfUJN4xBEZfza+pYt/iyod+9tZr20RRWSv/o0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4EFgQU9NYYlobnAG4c0/qjxyH/lq/wz+QwCgYIKoZIzj0EAwMDaAAwZQIxALZLZ8BgRXzKxLMMN9VIlO+e4hrBnNBgF7tz7Hnrowv2NetZErIACKFymBlvWDvtMAIwZO+ki6ssQ1bsZo98O8mEAf2NZ7iiCgDDU0Vwjeco6zyeh0zBTs9/7gV6AHNQ53xD"
106+
}
107+
]
108+
},
109+
"validFor": {
110+
"start": "2023-04-14T00:00:00.000Z"
111+
}
112+
}
113+
]
114+
}

0 commit comments

Comments
 (0)