github.com/fastly/cli@v1.7.2-0.20240304164155-9d0f1d77c3bf/pkg/commands/tls/custom/domain/domain_test.go (about) 1 package domain_test 2 3 import ( 4 "bytes" 5 "io" 6 "testing" 7 8 "github.com/fastly/go-fastly/v9/fastly" 9 10 "github.com/fastly/cli/pkg/app" 11 "github.com/fastly/cli/pkg/global" 12 "github.com/fastly/cli/pkg/mock" 13 "github.com/fastly/cli/pkg/testutil" 14 ) 15 16 const ( 17 mockResponseID = "123" 18 validateAPIError = "validate API error" 19 validateAPISuccess = "validate API success" 20 ) 21 22 func TestList(t *testing.T) { 23 args := testutil.Args 24 scenarios := []testutil.TestScenario{ 25 { 26 Name: validateAPIError, 27 API: mock.API{ 28 ListTLSDomainsFn: func(_ *fastly.ListTLSDomainsInput) ([]*fastly.TLSDomain, error) { 29 return nil, testutil.Err 30 }, 31 }, 32 Args: args("tls-custom domain list"), 33 WantError: testutil.Err.Error(), 34 }, 35 { 36 Name: validateAPISuccess, 37 API: mock.API{ 38 ListTLSDomainsFn: func(_ *fastly.ListTLSDomainsInput) ([]*fastly.TLSDomain, error) { 39 return []*fastly.TLSDomain{ 40 { 41 ID: mockResponseID, 42 Type: "example", 43 }, 44 }, nil 45 }, 46 }, 47 Args: args("tls-custom domain list --verbose"), 48 WantOutput: "\nID: " + mockResponseID + "\nType: example\n\n", 49 }, 50 } 51 52 for testcaseIdx := range scenarios { 53 testcase := &scenarios[testcaseIdx] 54 t.Run(testcase.Name, func(t *testing.T) { 55 var stdout bytes.Buffer 56 app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { 57 opts := testutil.MockGlobalData(testcase.Args, &stdout) 58 opts.APIClientFactory = mock.APIClient(testcase.API) 59 return opts, nil 60 } 61 err := app.Run(testcase.Args, nil) 62 testutil.AssertErrorContains(t, err, testcase.WantError) 63 testutil.AssertStringContains(t, stdout.String(), testcase.WantOutput) 64 }) 65 } 66 }