github.com/hernad/nomad@v1.6.112/command/acl_token_self_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package command 5 6 import ( 7 "testing" 8 9 "github.com/hernad/nomad/acl" 10 "github.com/hernad/nomad/command/agent" 11 "github.com/hernad/nomad/nomad/mock" 12 "github.com/hernad/nomad/nomad/structs" 13 "github.com/mitchellh/cli" 14 "github.com/shoenig/test/must" 15 ) 16 17 func TestACLTokenSelfCommand_ViaEnvVar(t *testing.T) { 18 config := func(c *agent.Config) { 19 c.ACL.Enabled = true 20 } 21 22 srv, _, url := testServer(t, true, config) 23 defer srv.Shutdown() 24 25 state := srv.Agent.Server().State() 26 27 // Bootstrap an initial ACL token 28 token := srv.RootToken 29 must.NotNil(t, token) 30 31 ui := cli.NewMockUi() 32 cmd := &ACLTokenSelfCommand{Meta: Meta{Ui: ui, flagAddress: url}} 33 34 // Create a valid token 35 mockToken := mock.ACLToken() 36 mockToken.Policies = []string{acl.PolicyWrite} 37 mockToken.SetHash() 38 must.NoError(t, state.UpsertACLTokens(structs.MsgTypeTestSetup, 1000, []*structs.ACLToken{mockToken})) 39 40 // Attempt to fetch info on a token without providing a valid management 41 // token 42 invalidToken := mock.ACLToken() 43 t.Setenv("NOMAD_TOKEN", invalidToken.SecretID) 44 code := cmd.Run([]string{"-address=" + url}) 45 must.One(t, code) 46 47 // Fetch info on a token with a valid token 48 t.Setenv("NOMAD_TOKEN", mockToken.SecretID) 49 code = cmd.Run([]string{"-address=" + url}) 50 must.Zero(t, code) 51 52 // Check the output 53 out := ui.OutputWriter.String() 54 must.StrContains(t, out, mockToken.AccessorID) 55 }