github.com/hernad/nomad@v1.6.112/command/namespace_delete_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package command 5 6 import ( 7 "strings" 8 "testing" 9 10 "github.com/hernad/nomad/api" 11 "github.com/hernad/nomad/ci" 12 "github.com/mitchellh/cli" 13 "github.com/posener/complete" 14 "github.com/stretchr/testify/assert" 15 ) 16 17 func TestNamespaceDeleteCommand_Implements(t *testing.T) { 18 ci.Parallel(t) 19 var _ cli.Command = &NamespaceDeleteCommand{} 20 } 21 22 func TestNamespaceDeleteCommand_Fails(t *testing.T) { 23 ci.Parallel(t) 24 ui := cli.NewMockUi() 25 cmd := &NamespaceDeleteCommand{Meta: Meta{Ui: ui}} 26 27 // Fails on misuse 28 if code := cmd.Run([]string{"some", "bad", "args"}); code != 1 { 29 t.Fatalf("expected exit code 1, got: %d", code) 30 } 31 if out := ui.ErrorWriter.String(); !strings.Contains(out, commandErrorText(cmd)) { 32 t.Fatalf("expected help output, got: %s", out) 33 } 34 ui.ErrorWriter.Reset() 35 36 if code := cmd.Run([]string{"-address=nope", "foo"}); code != 1 { 37 t.Fatalf("expected exit code 1, got: %d", code) 38 } 39 if out := ui.ErrorWriter.String(); !strings.Contains(out, "deleting namespace") { 40 t.Fatalf("connection error, got: %s", out) 41 } 42 ui.ErrorWriter.Reset() 43 } 44 45 func TestNamespaceDeleteCommand_Good(t *testing.T) { 46 ci.Parallel(t) 47 48 // Create a server 49 srv, client, url := testServer(t, true, nil) 50 defer srv.Shutdown() 51 52 ui := cli.NewMockUi() 53 cmd := &NamespaceDeleteCommand{Meta: Meta{Ui: ui}} 54 55 // Create a namespace to delete 56 ns := &api.Namespace{ 57 Name: "foo", 58 } 59 _, err := client.Namespaces().Register(ns, nil) 60 assert.Nil(t, err) 61 62 // Delete a namespace 63 if code := cmd.Run([]string{"-address=" + url, ns.Name}); code != 0 { 64 t.Fatalf("expected exit 0, got: %d; %v", code, ui.ErrorWriter.String()) 65 } 66 67 namespaces, _, err := client.Namespaces().List(nil) 68 assert.Nil(t, err) 69 assert.Len(t, namespaces, 1) 70 } 71 72 func TestNamespaceDeleteCommand_AutocompleteArgs(t *testing.T) { 73 ci.Parallel(t) 74 assert := assert.New(t) 75 76 srv, client, url := testServer(t, true, nil) 77 defer srv.Shutdown() 78 79 ui := cli.NewMockUi() 80 cmd := &NamespaceDeleteCommand{Meta: Meta{Ui: ui, flagAddress: url}} 81 82 // Create a namespace other than default 83 ns := &api.Namespace{ 84 Name: "diddo", 85 } 86 _, err := client.Namespaces().Register(ns, nil) 87 assert.Nil(err) 88 89 args := complete.Args{Last: "d"} 90 predictor := cmd.AutocompleteArgs() 91 92 res := predictor.Predict(args) 93 assert.Equal(1, len(res)) 94 assert.Equal(ns.Name, res[0]) 95 }