github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/command/quota_apply_test.go (about) 1 // +build ent 2 3 package command 4 5 import ( 6 "io/ioutil" 7 "os" 8 "strings" 9 "testing" 10 11 "github.com/mitchellh/cli" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestQuotaApplyCommand_Implements(t *testing.T) { 16 t.Parallel() 17 var _ cli.Command = &QuotaApplyCommand{} 18 } 19 20 func TestQuotaApplyCommand_Fails(t *testing.T) { 21 t.Parallel() 22 ui := new(cli.MockUi) 23 cmd := &QuotaApplyCommand{Meta: Meta{Ui: ui}} 24 25 // Fails on misuse 26 if code := cmd.Run([]string{"some", "bad", "args"}); code != 1 { 27 t.Fatalf("expected exit code 1, got: %d", code) 28 } 29 if out := ui.ErrorWriter.String(); !strings.Contains(out, cmd.Help()) { 30 t.Fatalf("expected help output, got: %s", out) 31 } 32 ui.ErrorWriter.Reset() 33 34 if code := cmd.Run([]string{"-address=nope"}); code != 1 { 35 t.Fatalf("expected exit code 1, got: %d", code) 36 } 37 if out := ui.ErrorWriter.String(); !strings.Contains(out, cmd.Help()) { 38 t.Fatalf("name required error, got: %s", out) 39 } 40 ui.ErrorWriter.Reset() 41 } 42 43 func TestQuotaApplyCommand_Good_HCL(t *testing.T) { 44 t.Parallel() 45 46 // Create a server 47 srv, client, url := testServer(t, true, nil) 48 defer srv.Shutdown() 49 50 ui := new(cli.MockUi) 51 cmd := &QuotaApplyCommand{Meta: Meta{Ui: ui}} 52 53 fh1, err := ioutil.TempFile("", "nomad") 54 if err != nil { 55 t.Fatalf("err: %s", err) 56 } 57 defer os.Remove(fh1.Name()) 58 if _, err := fh1.WriteString(defaultHclQuotaSpec); err != nil { 59 t.Fatalf("err: %s", err) 60 } 61 62 // Create a quota spec 63 if code := cmd.Run([]string{"-address=" + url, fh1.Name()}); code != 0 { 64 t.Fatalf("expected exit 0, got: %d; %v", code, ui.ErrorWriter.String()) 65 } 66 67 quotas, _, err := client.Quotas().List(nil) 68 assert.Nil(t, err) 69 assert.Len(t, quotas, 1) 70 } 71 72 func TestQuotaApplyCommand_Good_JSON(t *testing.T) { 73 t.Parallel() 74 75 // Create a server 76 srv, client, url := testServer(t, true, nil) 77 defer srv.Shutdown() 78 79 ui := new(cli.MockUi) 80 cmd := &QuotaApplyCommand{Meta: Meta{Ui: ui}} 81 82 fh1, err := ioutil.TempFile("", "nomad") 83 if err != nil { 84 t.Fatalf("err: %s", err) 85 } 86 defer os.Remove(fh1.Name()) 87 if _, err := fh1.WriteString(defaultJsonQuotaSpec); err != nil { 88 t.Fatalf("err: %s", err) 89 } 90 91 // Create a quota spec 92 if code := cmd.Run([]string{"-address=" + url, "-json", fh1.Name()}); code != 0 { 93 t.Fatalf("expected exit 0, got: %d; %v", code, ui.ErrorWriter.String()) 94 } 95 96 quotas, _, err := client.Quotas().List(nil) 97 assert.Nil(t, err) 98 assert.Len(t, quotas, 1) 99 }