github.com/drycc/workflow-cli@v1.5.3-0.20240322092846-d4ee25983af9/cmd/domains_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"net/http"
     7  	"testing"
     8  
     9  	"github.com/drycc/controller-sdk-go/api"
    10  	"github.com/drycc/workflow-cli/pkg/testutil"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestDomainsList(t *testing.T) {
    15  	t.Parallel()
    16  	cf, server, err := testutil.NewTestServerAndClient()
    17  	if err != nil {
    18  		t.Fatal(err)
    19  	}
    20  	defer server.Close()
    21  	var b bytes.Buffer
    22  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
    23  
    24  	server.Mux.HandleFunc("/v2/apps/foo/domains/", func(w http.ResponseWriter, _ *http.Request) {
    25  		testutil.SetHeaders(w)
    26  		fmt.Fprintf(w, `{
    27      "count": 2,
    28      "next": null,
    29      "previous": null,
    30      "results": [
    31          {
    32              "app": "foo",
    33              "created": "2014-01-01T00:00:00UTC",
    34              "domain": "example.example.com",
    35              "owner": "test",
    36              "updated": "2014-01-01T00:00:00UTC"
    37          },
    38          {
    39              "app": "foo",
    40              "created": "2014-01-01T00:00:00UTC",
    41              "domain": "foo",
    42              "owner": "test",
    43              "updated": "2014-01-01T00:00:00UTC"
    44          }
    45      ]
    46  }`)
    47  	})
    48  
    49  	err = cmdr.DomainsList("foo", -1)
    50  	assert.NoError(t, err)
    51  
    52  	assert.Equal(t, b.String(), `APP    OWNER    CREATED                   UPDATED                   DOMAIN              
    53  foo    test     2014-01-01T00:00:00UTC    2014-01-01T00:00:00UTC    example.example.com    
    54  foo    test     2014-01-01T00:00:00UTC    2014-01-01T00:00:00UTC    foo                    
    55  `, "output")
    56  }
    57  
    58  func TestDomainsListLimit(t *testing.T) {
    59  	t.Parallel()
    60  	cf, server, err := testutil.NewTestServerAndClient()
    61  	if err != nil {
    62  		t.Fatal(err)
    63  	}
    64  	defer server.Close()
    65  	var b bytes.Buffer
    66  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
    67  
    68  	server.Mux.HandleFunc("/v2/apps/foo/domains/", func(w http.ResponseWriter, _ *http.Request) {
    69  		testutil.SetHeaders(w)
    70  		fmt.Fprintf(w, `{
    71      "count": 2,
    72      "next": null,
    73      "previous": null,
    74      "results": [
    75          {
    76              "app": "foo",
    77              "created": "2014-01-01T00:00:00UTC",
    78              "domain": "example.example.com",
    79              "owner": "test",
    80              "updated": "2014-01-01T00:00:00UTC"
    81          }
    82      ]
    83  }`)
    84  	})
    85  
    86  	err = cmdr.DomainsList("foo", 1)
    87  	assert.NoError(t, err)
    88  
    89  	assert.Equal(t, b.String(), `APP    OWNER    CREATED                   UPDATED                   DOMAIN              
    90  foo    test     2014-01-01T00:00:00UTC    2014-01-01T00:00:00UTC    example.example.com    
    91  `, "output")
    92  }
    93  
    94  func TestDomainsAdd(t *testing.T) {
    95  	t.Parallel()
    96  	cf, server, err := testutil.NewTestServerAndClient()
    97  	if err != nil {
    98  		t.Fatal(err)
    99  	}
   100  	defer server.Close()
   101  	var b bytes.Buffer
   102  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
   103  
   104  	server.Mux.HandleFunc("/v2/apps/foo/domains/", func(w http.ResponseWriter, r *http.Request) {
   105  		testutil.AssertBody(t, api.DomainCreateRequest{Domain: "example.example.com"}, r)
   106  		testutil.SetHeaders(w)
   107  		w.WriteHeader(http.StatusCreated)
   108  		// Body isn't used by CLI, so it isn't set.
   109  		w.Write([]byte("{}"))
   110  	})
   111  
   112  	err = cmdr.DomainsAdd("foo", "example.example.com")
   113  	assert.NoError(t, err)
   114  
   115  	assert.Equal(t, testutil.StripProgress(b.String()), "Adding example.example.com to foo... done\n", "output")
   116  }
   117  
   118  func TestDomainsDelete(t *testing.T) {
   119  	t.Parallel()
   120  	cf, server, err := testutil.NewTestServerAndClient()
   121  	if err != nil {
   122  		t.Fatal(err)
   123  	}
   124  	defer server.Close()
   125  	var b bytes.Buffer
   126  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
   127  
   128  	server.Mux.HandleFunc("/v2/apps/foo/domains/example.example.com", func(w http.ResponseWriter, _ *http.Request) {
   129  		testutil.SetHeaders(w)
   130  		w.WriteHeader(http.StatusNoContent)
   131  	})
   132  
   133  	err = cmdr.DomainsRemove("foo", "example.example.com")
   134  	assert.NoError(t, err)
   135  
   136  	assert.Equal(t, testutil.StripProgress(b.String()), "Removing example.example.com from foo... done\n", "output")
   137  }