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 }