github.com/drycc/workflow-cli@v1.5.3-0.20240322092846-d4ee25983af9/cmd/routing_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 TestRoutingInfo(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/rivendell/settings/", func(w http.ResponseWriter, _ *http.Request) { 25 testutil.SetHeaders(w) 26 fmt.Fprintf(w, `{ 27 "owner": "elrond", 28 "app": "rivendell", 29 "routable": true, 30 "created": "2014-01-01T00:00:00UTC", 31 "updated": "2014-01-01T00:00:00UTC", 32 "uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75" 33 }`) 34 }) 35 36 err = cmdr.RoutingInfo("rivendell") 37 assert.NoError(t, err) 38 assert.Equal(t, b.String(), "Routing is enabled.\n", "output") 39 40 server.Mux.HandleFunc("/v2/apps/mordor/settings/", func(w http.ResponseWriter, _ *http.Request) { 41 testutil.SetHeaders(w) 42 fmt.Fprintf(w, `{ 43 "owner": "sauron", 44 "app": "mordor", 45 "routable": false, 46 "created": "2014-01-01T00:00:00UTC", 47 "updated": "2014-01-01T00:00:00UTC", 48 "uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75" 49 }`) 50 }) 51 b.Reset() 52 53 err = cmdr.RoutingInfo("mordor") 54 assert.NoError(t, err) 55 assert.Equal(t, b.String(), "Routing is disabled.\n", "output") 56 57 // test that no routable field doesn't trigger a panic 58 server.Mux.HandleFunc("/v2/apps/gondor/settings/", func(w http.ResponseWriter, _ *http.Request) { 59 testutil.SetHeaders(w) 60 fmt.Fprintf(w, `{ 61 "owner": "aragorn", 62 "app": "gondor", 63 "created": "2014-01-01T00:00:00UTC", 64 "updated": "2014-01-01T00:00:00UTC", 65 "uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75" 66 }`) 67 }) 68 b.Reset() 69 70 err = cmdr.RoutingInfo("gondor") 71 assert.NoError(t, err) 72 assert.Equal(t, b.String(), "Routing is enabled.\n", "output") 73 } 74 75 func TestRoutingEnable(t *testing.T) { 76 t.Parallel() 77 cf, server, err := testutil.NewTestServerAndClient() 78 if err != nil { 79 t.Fatal(err) 80 } 81 defer server.Close() 82 var b bytes.Buffer 83 cmdr := DryccCmd{WOut: &b, ConfigFile: cf} 84 85 server.Mux.HandleFunc("/v2/apps/lothlorien/settings/", func(w http.ResponseWriter, r *http.Request) { 86 testutil.SetHeaders(w) 87 testutil.AssertBody(t, api.AppSettings{Routable: api.NewRoutable()}, r) 88 fmt.Fprintf(w, `{}`) 89 }) 90 91 err = cmdr.RoutingEnable("lothlorien") 92 assert.NoError(t, err) 93 assert.Equal(t, testutil.StripProgress(b.String()), "Enabling routing for lothlorien... done\n", "output") 94 } 95 96 func TestRoutingDisable(t *testing.T) { 97 t.Parallel() 98 cf, server, err := testutil.NewTestServerAndClient() 99 if err != nil { 100 t.Fatal(err) 101 } 102 defer server.Close() 103 var b bytes.Buffer 104 cmdr := DryccCmd{WOut: &b, ConfigFile: cf} 105 106 server.Mux.HandleFunc("/v2/apps/bree/settings/", func(w http.ResponseWriter, r *http.Request) { 107 testutil.SetHeaders(w) 108 routable := false 109 testutil.AssertBody(t, api.AppSettings{Routable: &routable}, r) 110 fmt.Fprintf(w, `{}`) 111 }) 112 113 err = cmdr.RoutingDisable("bree") 114 assert.NoError(t, err) 115 assert.Equal(t, testutil.StripProgress(b.String()), "Disabling routing for bree... done\n", "output") 116 }