github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/client/secret_inspect_test.go (about) 1 package client // import "github.com/docker/docker/client" 2 3 import ( 4 "bytes" 5 "context" 6 "encoding/json" 7 "fmt" 8 "io" 9 "net/http" 10 "strings" 11 "testing" 12 13 "github.com/docker/docker/api/types/swarm" 14 "github.com/docker/docker/errdefs" 15 "github.com/pkg/errors" 16 "gotest.tools/v3/assert" 17 is "gotest.tools/v3/assert/cmp" 18 ) 19 20 func TestSecretInspectUnsupported(t *testing.T) { 21 client := &Client{ 22 version: "1.24", 23 client: &http.Client{}, 24 } 25 _, _, err := client.SecretInspectWithRaw(context.Background(), "nothing") 26 assert.Check(t, is.Error(err, `"secret inspect" requires API version 1.25, but the Docker daemon API version is 1.24`)) 27 } 28 29 func TestSecretInspectError(t *testing.T) { 30 client := &Client{ 31 version: "1.25", 32 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 33 } 34 35 _, _, err := client.SecretInspectWithRaw(context.Background(), "nothing") 36 if !errdefs.IsSystem(err) { 37 t.Fatalf("expected a Server Error, got %[1]T: %[1]v", err) 38 } 39 } 40 41 func TestSecretInspectSecretNotFound(t *testing.T) { 42 client := &Client{ 43 version: "1.25", 44 client: newMockClient(errorMock(http.StatusNotFound, "Server error")), 45 } 46 47 _, _, err := client.SecretInspectWithRaw(context.Background(), "unknown") 48 if err == nil || !IsErrNotFound(err) { 49 t.Fatalf("expected a secretNotFoundError error, got %v", err) 50 } 51 } 52 53 func TestSecretInspectWithEmptyID(t *testing.T) { 54 client := &Client{ 55 client: newMockClient(func(req *http.Request) (*http.Response, error) { 56 return nil, errors.New("should not make request") 57 }), 58 } 59 _, _, err := client.SecretInspectWithRaw(context.Background(), "") 60 if !IsErrNotFound(err) { 61 t.Fatalf("Expected NotFoundError, got %v", err) 62 } 63 } 64 65 func TestSecretInspect(t *testing.T) { 66 expectedURL := "/v1.25/secrets/secret_id" 67 client := &Client{ 68 version: "1.25", 69 client: newMockClient(func(req *http.Request) (*http.Response, error) { 70 if !strings.HasPrefix(req.URL.Path, expectedURL) { 71 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 72 } 73 content, err := json.Marshal(swarm.Secret{ 74 ID: "secret_id", 75 }) 76 if err != nil { 77 return nil, err 78 } 79 return &http.Response{ 80 StatusCode: http.StatusOK, 81 Body: io.NopCloser(bytes.NewReader(content)), 82 }, nil 83 }), 84 } 85 86 secretInspect, _, err := client.SecretInspectWithRaw(context.Background(), "secret_id") 87 if err != nil { 88 t.Fatal(err) 89 } 90 if secretInspect.ID != "secret_id" { 91 t.Fatalf("expected `secret_id`, got %s", secretInspect.ID) 92 } 93 }