github.com/anuvu/nomad@v0.8.7-atom1/command/quota_status_test.go (about) 1 // +build ent 2 3 package command 4 5 import ( 6 "strings" 7 "testing" 8 9 "github.com/mitchellh/cli" 10 "github.com/posener/complete" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestQuotaStatusCommand_Implements(t *testing.T) { 15 t.Parallel() 16 var _ cli.Command = &QuotaStatusCommand{} 17 } 18 19 func 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 42 func 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 74 func 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 }