1// +build ent 2 3package command 4 5import ( 6 "strings" 7 "testing" 8 9 "github.com/mitchellh/cli" 10 "github.com/posener/complete" 11 "github.com/stretchr/testify/assert" 12) 13 14func TestQuotaStatusCommand_Implements(t *testing.T) { 15 t.Parallel() 16 var _ cli.Command = &QuotaStatusCommand{} 17} 18 19func TestQuotaStatusCommand_Fails(t *testing.T) { 20 t.Parallel() 21 ui := new(cli.MockUi) 22 cmd := &QuotaStatusCommand{Meta: Meta{Ui: ui}} 23 24 // Fails on misuse 25 if code := cmd.Run([]string{"some", "bad", "args"}); code != 1 { 26 t.Fatalf("expected exit code 1, got: %d", code) 27 } 28 if out := ui.ErrorWriter.String(); !strings.Contains(out, commandErrorText(cmd)) { 29 t.Fatalf("expected help output, got: %s", out) 30 } 31 ui.ErrorWriter.Reset() 32 33 if code := cmd.Run([]string{"-address=nope", "foo"}); code != 1 { 34 t.Fatalf("expected exit code 1, got: %d", code) 35 } 36 if out := ui.ErrorWriter.String(); !strings.Contains(out, "retrieving quota") { 37 t.Fatalf("connection error, got: %s", out) 38 } 39 ui.ErrorWriter.Reset() 40} 41 42func TestQuotaStatusCommand_Good(t *testing.T) { 43 t.Parallel() 44 45 // Create a server 46 srv, client, url := testServer(t, true, nil) 47 defer srv.Shutdown() 48 49 ui := new(cli.MockUi) 50 cmd := &QuotaStatusCommand{Meta: Meta{Ui: ui}} 51 52 // Create a quota to delete 53 qs := testQuotaSpec() 54 _, err := client.Quotas().Register(qs, nil) 55 assert.Nil(t, err) 56 57 // Delete a namespace 58 if code := cmd.Run([]string{"-address=" + url, qs.Name}); code != 0 { 59 t.Fatalf("expected exit 0, got: %d; %v", code, ui.ErrorWriter.String()) 60 } 61 62 // Check for basic spec 63 out := ui.OutputWriter.String() 64 if !strings.Contains(out, "= test") { 65 t.Fatalf("expected quota, got: %s", out) 66 } 67 68 // Check for usage 69 if !strings.Contains(out, "0 / 100") { 70 t.Fatalf("expected quota, got: %s", out) 71 } 72} 73 74func TestQuotaStatusCommand_AutocompleteArgs(t *testing.T) { 75 assert := assert.New(t) 76 t.Parallel() 77 78 srv, client, url := testServer(t, true, nil) 79 defer srv.Shutdown() 80 81 ui := new(cli.MockUi) 82 cmd := &QuotaStatusCommand{Meta: Meta{Ui: ui, flagAddress: url}} 83 84 // Create a quota 85 qs := testQuotaSpec() 86 _, err := client.Quotas().Register(qs, nil) 87 assert.Nil(err) 88 89 args := complete.Args{Last: "t"} 90 predictor := cmd.AutocompleteArgs() 91 92 res := predictor.Predict(args) 93 assert.Equal(1, len(res)) 94 assert.Equal(qs.Name, res[0]) 95} 96