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  }