github.imxd.top/hashicorp/consul@v1.4.5/agent/token/store_test.go (about) 1 package token 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestStore_RegularTokens(t *testing.T) { 10 t.Parallel() 11 12 type tokens struct { 13 userSource TokenSource 14 user string 15 agent string 16 agentSource TokenSource 17 master string 18 masterSource TokenSource 19 repl string 20 replSource TokenSource 21 } 22 23 tests := []struct { 24 name string 25 set tokens 26 raw tokens 27 effective tokens 28 }{ 29 { 30 name: "set user - config", 31 set: tokens{user: "U", userSource: TokenSourceConfig}, 32 raw: tokens{user: "U", userSource: TokenSourceConfig}, 33 effective: tokens{user: "U", agent: "U"}, 34 }, 35 { 36 name: "set user - api", 37 set: tokens{user: "U", userSource: TokenSourceAPI}, 38 raw: tokens{user: "U", userSource: TokenSourceAPI}, 39 effective: tokens{user: "U", agent: "U"}, 40 }, 41 { 42 name: "set agent - config", 43 set: tokens{agent: "A", agentSource: TokenSourceConfig}, 44 raw: tokens{agent: "A", agentSource: TokenSourceConfig}, 45 effective: tokens{agent: "A"}, 46 }, 47 { 48 name: "set agent - api", 49 set: tokens{agent: "A", agentSource: TokenSourceAPI}, 50 raw: tokens{agent: "A", agentSource: TokenSourceAPI}, 51 effective: tokens{agent: "A"}, 52 }, 53 { 54 name: "set user and agent", 55 set: tokens{agent: "A", user: "U"}, 56 raw: tokens{agent: "A", user: "U"}, 57 effective: tokens{agent: "A", user: "U"}, 58 }, 59 { 60 name: "set repl - config", 61 set: tokens{repl: "R", replSource: TokenSourceConfig}, 62 raw: tokens{repl: "R", replSource: TokenSourceConfig}, 63 effective: tokens{repl: "R"}, 64 }, 65 { 66 name: "set repl - api", 67 set: tokens{repl: "R", replSource: TokenSourceAPI}, 68 raw: tokens{repl: "R", replSource: TokenSourceAPI}, 69 effective: tokens{repl: "R"}, 70 }, 71 { 72 name: "set master - config", 73 set: tokens{master: "M", masterSource: TokenSourceConfig}, 74 raw: tokens{master: "M", masterSource: TokenSourceConfig}, 75 effective: tokens{master: "M"}, 76 }, 77 { 78 name: "set master - api", 79 set: tokens{master: "M", masterSource: TokenSourceAPI}, 80 raw: tokens{master: "M", masterSource: TokenSourceAPI}, 81 effective: tokens{master: "M"}, 82 }, 83 { 84 name: "set all", 85 set: tokens{user: "U", agent: "A", repl: "R", master: "M"}, 86 raw: tokens{user: "U", agent: "A", repl: "R", master: "M"}, 87 effective: tokens{user: "U", agent: "A", repl: "R", master: "M"}, 88 }, 89 } 90 for _, tt := range tests { 91 t.Run(tt.name, func(t *testing.T) { 92 t.Parallel() 93 94 s := new(Store) 95 s.UpdateUserToken(tt.set.user, tt.set.userSource) 96 s.UpdateAgentToken(tt.set.agent, tt.set.agentSource) 97 s.UpdateReplicationToken(tt.set.repl, tt.set.replSource) 98 s.UpdateAgentMasterToken(tt.set.master, tt.set.masterSource) 99 100 require.Equal(t, tt.effective.user, s.UserToken()) 101 require.Equal(t, tt.effective.agent, s.AgentToken()) 102 require.Equal(t, tt.effective.master, s.AgentMasterToken()) 103 require.Equal(t, tt.effective.repl, s.ReplicationToken()) 104 105 tok, src := s.UserTokenAndSource() 106 require.Equal(t, tt.raw.user, tok) 107 require.Equal(t, tt.raw.userSource, src) 108 109 tok, src = s.AgentTokenAndSource() 110 require.Equal(t, tt.raw.agent, tok) 111 require.Equal(t, tt.raw.agentSource, src) 112 113 tok, src = s.AgentMasterTokenAndSource() 114 require.Equal(t, tt.raw.master, tok) 115 require.Equal(t, tt.raw.masterSource, src) 116 117 tok, src = s.ReplicationTokenAndSource() 118 require.Equal(t, tt.raw.repl, tok) 119 require.Equal(t, tt.raw.replSource, src) 120 }) 121 } 122 } 123 124 func TestStore_AgentMasterToken(t *testing.T) { 125 t.Parallel() 126 s := new(Store) 127 128 verify := func(want bool, toks ...string) { 129 for _, tok := range toks { 130 require.Equal(t, want, s.IsAgentMasterToken(tok)) 131 } 132 } 133 134 verify(false, "", "nope") 135 136 s.UpdateAgentMasterToken("master", TokenSourceConfig) 137 verify(true, "master") 138 verify(false, "", "nope") 139 140 s.UpdateAgentMasterToken("another", TokenSourceConfig) 141 verify(true, "another") 142 verify(false, "", "nope", "master") 143 144 s.UpdateAgentMasterToken("", TokenSourceConfig) 145 verify(false, "", "nope", "master", "another") 146 }