github.com/toplink-cn/moby@v0.0.0-20240305205811-460b4aebdf81/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 assert.Check(t, is.ErrorType(err, errdefs.IsSystem)) 37 } 38 39 func TestSecretInspectSecretNotFound(t *testing.T) { 40 client := &Client{ 41 version: "1.25", 42 client: newMockClient(errorMock(http.StatusNotFound, "Server error")), 43 } 44 45 _, _, err := client.SecretInspectWithRaw(context.Background(), "unknown") 46 assert.Check(t, is.ErrorType(err, errdefs.IsNotFound)) 47 } 48 49 func TestSecretInspectWithEmptyID(t *testing.T) { 50 client := &Client{ 51 client: newMockClient(func(req *http.Request) (*http.Response, error) { 52 return nil, errors.New("should not make request") 53 }), 54 } 55 _, _, err := client.SecretInspectWithRaw(context.Background(), "") 56 assert.Check(t, is.ErrorType(err, errdefs.IsNotFound)) 57 } 58 59 func TestSecretInspect(t *testing.T) { 60 expectedURL := "/v1.25/secrets/secret_id" 61 client := &Client{ 62 version: "1.25", 63 client: newMockClient(func(req *http.Request) (*http.Response, error) { 64 if !strings.HasPrefix(req.URL.Path, expectedURL) { 65 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 66 } 67 content, err := json.Marshal(swarm.Secret{ 68 ID: "secret_id", 69 }) 70 if err != nil { 71 return nil, err 72 } 73 return &http.Response{ 74 StatusCode: http.StatusOK, 75 Body: io.NopCloser(bytes.NewReader(content)), 76 }, nil 77 }), 78 } 79 80 secretInspect, _, err := client.SecretInspectWithRaw(context.Background(), "secret_id") 81 if err != nil { 82 t.Fatal(err) 83 } 84 if secretInspect.ID != "secret_id" { 85 t.Fatalf("expected `secret_id`, got %s", secretInspect.ID) 86 } 87 }