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  }