Skip to content

Commit

Permalink
Add upload/download links to provider versions
Browse files Browse the repository at this point in the history
  • Loading branch information
joekarl committed Mar 25, 2022
1 parent 1b3369e commit a26c40e
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
44 changes: 44 additions & 0 deletions registry_provider_version.go
Expand Up @@ -49,6 +49,50 @@ type RegistryProviderVersion struct {
Links map[string]interface{} `jsonapi:"links,omitempty"`
}

func (v RegistryProviderVersion) ShasumsUploadURL() (string, error) {
uploadURL, ok := v.Links["shasums-upload"].(string)
if !ok {
return uploadURL, fmt.Errorf("the Registry Provider Version does not contain a shasums upload link")
}
if uploadURL == "" {
return uploadURL, fmt.Errorf("the Registry Provider Version shasums upload URL is empty")
}
return uploadURL, nil
}

func (v RegistryProviderVersion) ShasumsSigUploadURL() (string, error) {
uploadURL, ok := v.Links["shasums-sig-upload"].(string)
if !ok {
return uploadURL, fmt.Errorf("the Registry Provider Version does not contain a shasums sig upload link")
}
if uploadURL == "" {
return uploadURL, fmt.Errorf("the Registry Provider Version shasums sig upload URL is empty")
}
return uploadURL, nil
}

func (v RegistryProviderVersion) ShasumsDownloadURL() (string, error) {
downloadURL, ok := v.Links["shasums-download"].(string)
if !ok {
return downloadURL, fmt.Errorf("the Registry Provider Version does not contain a shasums download link")
}
if downloadURL == "" {
return downloadURL, fmt.Errorf("the Registry Provider Version shasums download URL is empty")
}
return downloadURL, nil
}

func (v RegistryProviderVersion) ShasumsSigDownloadURL() (string, error) {
downloadURL, ok := v.Links["shasums-sig-download"].(string)
if !ok {
return downloadURL, fmt.Errorf("the Registry Provider Version does not contain a shasums sig download link")
}
if downloadURL == "" {
return downloadURL, fmt.Errorf("the Registry Provider Version shasums sig download URL is empty")
}
return downloadURL, nil
}

// RegistryProviderID is the multi key ID for addressing a provider
type RegistryProviderVersionID struct {
RegistryProviderID
Expand Down
33 changes: 33 additions & 0 deletions registry_provider_version_integration_test.go
Expand Up @@ -120,6 +120,10 @@ func TestRegistryProviderVersionsCreate(t *testing.T) {
})

t.Run("includes upload links", func(t *testing.T) {
_, err := prvv.ShasumsUploadURL()
assert.NoError(t, err)
_, err = prvv.ShasumsSigUploadURL()
assert.NoError(t, err)
expectedLinks := []string{
"shasums-upload",
"shasums-sig-upload",
Expand All @@ -129,6 +133,13 @@ func TestRegistryProviderVersionsCreate(t *testing.T) {
assert.True(t, ok, "Expect upload link: %s", l)
}
})

t.Run("doesn't include download links", func(t *testing.T) {
_, err := prvv.ShasumsDownloadURL()
assert.Error(t, err)
_, err = prvv.ShasumsSigDownloadURL()
assert.Error(t, err)
})
})

t.Run("with invalid options", func(t *testing.T) {
Expand Down Expand Up @@ -349,6 +360,28 @@ func TestRegistryProviderVersionsRead(t *testing.T) {
readVersion, err := client.RegistryProviderVersions.Read(ctx, versionId, nil)
assert.NoError(t, err)
assert.Equal(t, version.ID, readVersion.ID)
assert.Equal(t, version.Version, readVersion.Version)
assert.Equal(t, version.KeyID, readVersion.KeyID)

t.Run("relationships are properly decoded", func(t *testing.T) {
assert.Equal(t, version.RegistryProvider.ID, readVersion.RegistryProvider.ID)
})

t.Run("timestamps are properly decoded", func(t *testing.T) {
assert.NotEmpty(t, readVersion.CreatedAt)
assert.NotEmpty(t, readVersion.UpdatedAt)
})

t.Run("includes upload links", func(t *testing.T) {
expectedLinks := []string{
"shasums-upload",
"shasums-sig-upload",
}
for _, l := range expectedLinks {
_, ok := readVersion.Links[l].(string)
assert.True(t, ok, "Expect upload link: %s", l)
}
})
})

t.Run("with non existing version", func(t *testing.T) {
Expand Down

0 comments on commit a26c40e

Please sign in to comment.