github.com/aminovpavel/nomad@v0.11.8/command/acl_token_delete_test.go (about) 1 package command 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 "testing" 8 9 "github.com/hashicorp/nomad/acl" 10 "github.com/hashicorp/nomad/command/agent" 11 "github.com/hashicorp/nomad/nomad/mock" 12 "github.com/hashicorp/nomad/nomad/structs" 13 "github.com/mitchellh/cli" 14 "github.com/stretchr/testify/assert" 15 ) 16 17 func TestACLTokenDeleteCommand_ViaEnvVariable(t *testing.T) { 18 assert := assert.New(t) 19 t.Parallel() 20 config := func(c *agent.Config) { 21 c.ACL.Enabled = true 22 } 23 24 srv, _, url := testServer(t, true, config) 25 defer srv.Shutdown() 26 27 // Bootstrap an initial ACL token 28 token := srv.RootToken 29 assert.NotNil(token, "failed to bootstrap ACL token") 30 31 ui := new(cli.MockUi) 32 cmd := &ACLTokenDeleteCommand{Meta: Meta{Ui: ui, flagAddress: url}} 33 state := srv.Agent.Server().State() 34 35 // Create a valid token 36 mockToken := mock.ACLToken() 37 mockToken.Policies = []string{acl.PolicyWrite} 38 mockToken.SetHash() 39 assert.Nil(state.UpsertACLTokens(1000, []*structs.ACLToken{mockToken})) 40 41 // Attempt to delete a token without providing a valid token with delete 42 // permissions 43 os.Setenv("NOMAD_TOKEN", "foo") 44 code := cmd.Run([]string{"-address=" + url, mockToken.AccessorID}) 45 assert.Equal(1, code) 46 47 // Delete a token using a valid management token set via an environment 48 // variable 49 os.Setenv("NOMAD_TOKEN", token.SecretID) 50 code = cmd.Run([]string{"-address=" + url, mockToken.AccessorID}) 51 assert.Equal(0, code) 52 53 // Check the output 54 out := ui.OutputWriter.String() 55 if !strings.Contains(out, fmt.Sprintf("Token %s successfully deleted", mockToken.AccessorID)) { 56 t.Fatalf("bad: %v", out) 57 } 58 }