github.com/hernad/nomad@v1.6.112/command/acl_binding_rule_delete_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/ci" 10 "github.com/hernad/nomad/command/agent" 11 "github.com/hernad/nomad/helper/uuid" 12 "github.com/hernad/nomad/nomad/structs" 13 "github.com/hernad/nomad/testutil" 14 "github.com/mitchellh/cli" 15 "github.com/shoenig/test/must" 16 ) 17 18 func TestACLBindingRuleDeleteCommand_Run(t *testing.T) { 19 ci.Parallel(t) 20 21 // Build a test server with ACLs enabled. 22 srv, _, url := testServer(t, false, func(c *agent.Config) { 23 c.ACL.Enabled = true 24 }) 25 defer srv.Shutdown() 26 27 // Wait for the server to start fully and ensure we have a bootstrap token. 28 testutil.WaitForLeader(t, srv.Agent.RPC) 29 rootACLToken := srv.RootToken 30 must.NotNil(t, rootACLToken) 31 32 ui := cli.NewMockUi() 33 cmd := &ACLBindingRuleDeleteCommand{ 34 Meta: Meta{ 35 Ui: ui, 36 flagAddress: url, 37 }, 38 } 39 40 // Try and delete more than one ACL binding rules. 41 code := cmd.Run([]string{"-address=" + url, "acl-binding-rule-1", "acl-binding-rule-2"}) 42 must.Eq(t, 1, code) 43 must.StrContains(t, ui.ErrorWriter.String(), "This command takes one argument") 44 45 ui.OutputWriter.Reset() 46 ui.ErrorWriter.Reset() 47 48 // Try deleting a binding rule that does not exist. 49 must.Eq(t, 1, cmd.Run([]string{"-address=" + url, "-token=" + rootACLToken.SecretID, "acl-binding-rule-1"})) 50 must.StrContains(t, ui.ErrorWriter.String(), "ACL binding rule not found") 51 52 ui.OutputWriter.Reset() 53 ui.ErrorWriter.Reset() 54 55 // Create an ACL binding rule. 56 aclBindingRule := structs.ACLBindingRule{ 57 ID: uuid.Generate(), 58 AuthMethod: "auth0", 59 BindType: "role", 60 BindName: "engineering", 61 } 62 err := srv.Agent.Server().State().UpsertACLBindingRules(10, 63 []*structs.ACLBindingRule{&aclBindingRule}, true) 64 must.NoError(t, err) 65 66 // Delete the existing ACL binding rule. 67 must.Eq(t, 0, cmd.Run([]string{"-address=" + url, "-token=" + rootACLToken.SecretID, aclBindingRule.ID})) 68 must.StrContains(t, ui.OutputWriter.String(), "successfully deleted") 69 }