Files
go-github/github/orgs_artifacts_test.go

252 lines
7.9 KiB
Go

// Copyright 2026 The go-github AUTHORS. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package github
import (
"fmt"
"net/http"
"testing"
"github.com/google/go-cmp/cmp"
)
func TestOrganizationsService_CreateArtifactDeploymentRecord(t *testing.T) {
t.Parallel()
client, mux, _ := setup(t)
input := CreateArtifactDeploymentRequest{
Name: "test-n",
Digest: "sha256:123",
Version: new("v1.0.0"),
Status: "deployed",
LogicalEnvironment: "prod",
DeploymentName: "dep-1",
RuntimeRisks: []DeploymentRuntimeRisk{DeploymentRuntimeRiskCriticalResource, DeploymentRuntimeRiskInternetExposed},
GithubRepository: new("octo-org/octo-repo"),
Tags: map[string]string{
"data-access": "sensitive",
},
}
mux.HandleFunc("/orgs/o/artifacts/metadata/deployment-record", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "POST")
testJSONBody(t, r, input)
fmt.Fprint(w, `{"total_count":1,"deployment_records":[{"id":1}]}`)
})
ctx := t.Context()
got, _, err := client.Organizations.CreateArtifactDeploymentRecord(ctx, "o", input)
if err != nil {
t.Errorf("CreateArtifactDeploymentRecord returned error: %v", err)
}
want := &ArtifactDeploymentResponse{
TotalCount: new(1),
DeploymentRecords: []*ArtifactDeploymentRecord{{ID: new(int64(1))}},
}
if !cmp.Equal(got, want) {
t.Errorf("CreateArtifactDeploymentRecord returned %+v, want %+v", got, want)
}
const methodName = "CreateArtifactDeploymentRecord"
testBadOptions(t, methodName, func() (err error) {
_, _, err = client.Organizations.CreateArtifactDeploymentRecord(ctx, "\n", input)
return err
})
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
got, resp, err := client.Organizations.CreateArtifactDeploymentRecord(ctx, "o", input)
if got != nil {
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
}
return resp, err
})
}
func TestOrganizationsService_SetClusterDeploymentRecords(t *testing.T) {
t.Parallel()
client, mux, _ := setup(t)
input := ClusterDeploymentRecordsRequest{
LogicalEnvironment: "prod",
PhysicalEnvironment: new("pacific-east"),
Deployments: []*ClusterArtifactDeployment{
{
Name: "awesome-image",
Digest: "sha256:abc",
DeploymentName: "dep-1",
Version: new("v2.0"),
Status: "deployed",
},
},
}
mux.HandleFunc("/orgs/o/artifacts/metadata/deployment-record/cluster/c1", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "POST")
testJSONBody(t, r, input)
fmt.Fprint(w, `{"total_count":1,"deployment_records":[{"id":2}]}`)
})
ctx := t.Context()
got, _, err := client.Organizations.SetClusterDeploymentRecords(ctx, "o", "c1", input)
if err != nil {
t.Errorf("SetClusterDeploymentRecords returned error: %v", err)
}
want := &ArtifactDeploymentResponse{
TotalCount: new(1),
DeploymentRecords: []*ArtifactDeploymentRecord{{ID: new(int64(2))}},
}
if !cmp.Equal(got, want) {
t.Errorf("SetClusterDeploymentRecords returned %+v, want %+v", got, want)
}
const methodName = "SetClusterDeploymentRecords"
testBadOptions(t, methodName, func() (err error) {
_, _, err = client.Organizations.SetClusterDeploymentRecords(ctx, "\n", "\n", input)
return err
})
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
got, resp, err := client.Organizations.SetClusterDeploymentRecords(ctx, "o", "c1", input)
if got != nil {
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
}
return resp, err
})
}
func TestOrganizationsService_CreateArtifactStorageRecord(t *testing.T) {
t.Parallel()
client, mux, _ := setup(t)
input := CreateArtifactStorageRequest{
Name: "libfoo",
Digest: "sha256:123",
Version: new("v1.2.3"),
Path: new("target/libs"),
GithubRepository: new("org/repo"),
RegistryURL: "https://reg.example.com",
Status: new("active"),
}
mux.HandleFunc("/orgs/o/artifacts/metadata/storage-record", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "POST")
testJSONBody(t, r, input)
fmt.Fprint(w, `{"total_count":1,"storage_records":[{"name":"libfoo"}]}`)
})
ctx := t.Context()
got, _, err := client.Organizations.CreateArtifactStorageRecord(ctx, "o", input)
if err != nil {
t.Errorf("CreateArtifactStorageRecord returned error: %v", err)
}
want := &ArtifactStorageResponse{
TotalCount: new(1),
StorageRecords: []*ArtifactStorageRecord{{Name: new("libfoo")}},
}
if !cmp.Equal(got, want) {
t.Errorf("CreateArtifactStorageRecord returned %+v, want %+v", got, want)
}
const methodName = "CreateArtifactStorageRecord"
testBadOptions(t, methodName, func() (err error) {
_, _, err = client.Organizations.CreateArtifactStorageRecord(ctx, "\n", input)
return err
})
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
got, resp, err := client.Organizations.CreateArtifactStorageRecord(ctx, "o", input)
if got != nil {
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
}
return resp, err
})
}
func TestOrganizationsService_ListArtifactDeploymentRecords(t *testing.T) {
t.Parallel()
client, mux, _ := setup(t)
mux.HandleFunc("/orgs/o/artifacts/sha256:abc/metadata/deployment-records", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "GET")
testFormValues(t, r, values{})
fmt.Fprint(w, `{"total_count":1,"deployment_records":[{"id":1, "runtime_risks": ["sensitive-data"]}]}`)
})
ctx := t.Context()
got, _, err := client.Organizations.ListArtifactDeploymentRecords(ctx, "o", "sha256:abc")
if err != nil {
t.Errorf("ListArtifactDeploymentRecords returned error: %v", err)
}
want := &ArtifactDeploymentResponse{
TotalCount: new(1),
DeploymentRecords: []*ArtifactDeploymentRecord{
{ID: new(int64(1)), RuntimeRisks: []DeploymentRuntimeRisk{DeploymentRuntimeRiskSensitiveData}},
},
}
if !cmp.Equal(got, want) {
t.Errorf("ListArtifactDeploymentRecords returned %+v, want %+v", got, want)
}
const methodName = "ListArtifactDeploymentRecords"
testBadOptions(t, methodName, func() (err error) {
_, _, err = client.Organizations.ListArtifactDeploymentRecords(ctx, "\n", "\n")
return err
})
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
got, resp, err := client.Organizations.ListArtifactDeploymentRecords(ctx, "o", "sha256:abc")
if got != nil {
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
}
return resp, err
})
}
func TestOrganizationsService_ListArtifactStorageRecords(t *testing.T) {
t.Parallel()
client, mux, _ := setup(t)
mux.HandleFunc("/orgs/o/artifacts/sha256:abc/metadata/storage-records", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "GET")
testFormValues(t, r, values{})
fmt.Fprint(w, `{"total_count":1,"storage_records":[{"name":"libfoo"}]}`)
})
ctx := t.Context()
got, _, err := client.Organizations.ListArtifactStorageRecords(ctx, "o", "sha256:abc")
if err != nil {
t.Errorf("ListArtifactStorageRecords returned error: %v", err)
}
want := &ArtifactStorageResponse{
TotalCount: new(1),
StorageRecords: []*ArtifactStorageRecord{{Name: new("libfoo")}},
}
if !cmp.Equal(got, want) {
t.Errorf("ListArtifactStorageRecords returned %+v, want %+v", got, want)
}
const methodName = "ListArtifactStorageRecords"
testBadOptions(t, methodName, func() (err error) {
_, _, err = client.Organizations.ListArtifactStorageRecords(ctx, "\n", "\n")
return err
})
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
got, resp, err := client.Organizations.ListArtifactStorageRecords(ctx, "o", "sha256:abc")
if got != nil {
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
}
return resp, err
})
}