@@ -9,40 +9,57 @@ import (
99 "github.com/stretchr/testify/assert"
1010)
1111
12- func TestNewMultiAuthenticatorWithClientID_EmptyClientID (t * testing.T ) {
12+ func TestNewMultiAuthenticator_EmptyAuthenticators (t * testing.T ) {
1313 // Given.
14- jwtAuth , err := NewJwtAuthenticator ( & JwtAuthConfig {
15- SharedSecret : [] byte ( "my-secret" ),
16- UsernameClaim : UsernameClaimTypeSubject ,
14+
15+ m , err := NewMultiAuthenticator ( map [ string ][] Authenticator {
16+ "issuer-1" : [] Authenticator {} ,
1717 })
18- assert .NoError (t , err )
19- m , err := NewMultiAuthenticatorWithClientID (map [IssuerWithClientID ]Authenticator {IssuerWithClientID {"issuer-1" , "" }: jwtAuth })
2018 assert .Error (t , err )
21- assert .Nil (t , m )
19+
20+ // When.
21+ authenticators := m .GetAuthenticators ("issuer-1" )
22+
23+ // Then.
24+ assert .Equal (t , 0 , len (authenticators ))
2225}
2326
24- func TestNewMultiAuthenticatorWithClientID_EmptyIssuer (t * testing.T ) {
27+ func TestNewMultiAuthenticator_ListIssuers (t * testing.T ) {
2528 // Given.
2629 jwtAuth , err := NewJwtAuthenticator (& JwtAuthConfig {
2730 SharedSecret : []byte ("my-secret" ),
2831 UsernameClaim : UsernameClaimTypeSubject ,
2932 })
3033 assert .NoError (t , err )
31- m , err := NewMultiAuthenticatorWithClientID (map [IssuerWithClientID ]Authenticator {IssuerWithClientID {"" , "1" }: jwtAuth })
32- assert .Error (t , err )
33- assert .Nil (t , m )
34- }
34+ m , err := NewMultiAuthenticator (map [string ][]Authenticator {
35+ "issuer-1" : []Authenticator {jwtAuth },
36+ // TODO: MultiAuthenticator does not check for duplicate authenticators across issuers.
37+ "issuer-2" : []Authenticator {jwtAuth },
38+ })
39+ assert .NoError (t , err )
3540
36- func TestMultiAuthenticatorWithClientID_GetAuthenticators_Ok (t * testing.T ) {
41+ // When.
42+ issuers := m .ListIssuers ()
43+
44+ // Then.
45+ assert .Equal (t , 2 , len (issuers ))
46+ }
47+ func TestMultiAuthenticator_GetAuthenticators_Ok (t * testing.T ) {
3748 // Given.
38- jwtAuth , err := NewJwtAuthenticator (& JwtAuthConfig {
39- SharedSecret : []byte ("my-secret " ),
49+ jwtAuth1 , err := NewJwtAuthenticator (& JwtAuthConfig {
50+ SharedSecret : []byte ("my-secret1 " ),
4051 UsernameClaim : UsernameClaimTypeSubject ,
4152 })
4253 assert .NoError (t , err )
43- m , err := NewMultiAuthenticatorWithClientID (map [IssuerWithClientID ]Authenticator {
44- IssuerWithClientID {"issuer-1" , "1" }: jwtAuth ,
45- IssuerWithClientID {"issuer-1" , "2" }: jwtAuth ,
54+
55+ jwtAuth2 , err := NewJwtAuthenticator (& JwtAuthConfig {
56+ SharedSecret : []byte ("my-secret2" ),
57+ UsernameClaim : UsernameClaimTypeSubject ,
58+ })
59+ assert .NoError (t , err )
60+
61+ m , err := NewMultiAuthenticator (map [string ][]Authenticator {
62+ "issuer-1" : []Authenticator {jwtAuth1 , jwtAuth2 },
4663 })
4764 assert .NoError (t , err )
4865
@@ -53,9 +70,9 @@ func TestMultiAuthenticatorWithClientID_GetAuthenticators_Ok(t *testing.T) {
5370 assert .Equal (t , 2 , len (authenticators ))
5471}
5572
56- func TestMultiAuthenticatorWithClientID_GetAuthenticator_FailNoIssuer (t * testing.T ) {
73+ func TestMultiAuthenticator_GetAuthenticator_FailNoIssuer (t * testing.T ) {
5774 // Given.
58- m , err := NewMultiAuthenticatorWithClientID (map [IssuerWithClientID ]Authenticator {})
75+ m , err := NewMultiAuthenticator (map [string ][ ]Authenticator {})
5976 assert .NoError (t , err )
6077
6178 // When.
@@ -65,21 +82,26 @@ func TestMultiAuthenticatorWithClientID_GetAuthenticator_FailNoIssuer(t *testing
6582 assert .Empty (t , authenticators )
6683}
6784
68- func TestMultiAuthenticatorWithClientID_AuthenticateToken_Ok (t * testing.T ) {
85+ func TestMultiAuthenticator_AuthenticateToken_Ok (t * testing.T ) {
6986 // Given.
7087 jwtAuth1 , err := NewJwtAuthenticator (& JwtAuthConfig {
7188 SharedSecret : []byte ("my-secret-1" ),
7289 UsernameClaim : UsernameClaimTypeSubject ,
7390 })
7491 assert .NoError (t , err )
7592
76- m , err := NewMultiAuthenticatorWithClientID ( map [ IssuerWithClientID ] Authenticator {
77- IssuerWithClientID { "issuer-1" , "1" }: jwtAuth1 ,
78- IssuerWithClientID { "issuer-1" , "2" }: jwtAuth1 ,
93+ jwtAuth2 , err := NewJwtAuthenticator ( & JwtAuthConfig {
94+ SharedSecret : [] byte ( "my-secret-2" ) ,
95+ UsernameClaim : UsernameClaimTypeSubject ,
7996 })
8097 assert .NoError (t , err )
8198
82- rawToken , err := Token (& Claims {
99+ m , err := NewMultiAuthenticator (map [string ][]Authenticator {
100+ "issuer-1" : []Authenticator {jwtAuth1 , jwtAuth2 },
101+ })
102+ assert .NoError (t , err )
103+
104+ rawToken1 , err := Token (& Claims {
83105 Audience : "1" ,
84106 Issuer : "issuer-1" ,
85107@@ -88,20 +110,89 @@ func TestMultiAuthenticatorWithClientID_AuthenticateToken_Ok(t *testing.T) {
88110 Roles : []string {"tester" },
89111 }, & Signature {
90112 Type : jwt .SigningMethodHS256 ,
91- Key : []byte ("my-secret-1 " ),
113+ Key : []byte ("my-secret-2 " ),
92114 }, & Options {
93115 Expiration : time .Now ().Add (time .Minute * 10 ).Unix (),
94116 })
95117 assert .NoError (t , err )
96- assert .NotEmpty (t , rawToken )
118+ assert .NotEmpty (t , rawToken1 )
97119
98120 // When.
99- authenticateClaims , err := m .AuthenticateToken (context .Background (), rawToken )
121+ authenticateClaims , err := m .AuthenticateToken (context .Background (), rawToken1 )
100122
101123 // Then.
102124 assert .NoError (t , err )
103125 assert .Equal (t , "issuer-1" , authenticateClaims .Issuer )
104126 assert .
Equal (
t ,
"[email protected] " ,
authenticateClaims .
Email )
105127 assert .Equal (t , "my-name" , authenticateClaims .Name )
106128 assert .Equal (t , []string {"tester" }, authenticateClaims .Roles )
129+
130+ rawToken2 , err := Token (& Claims {
131+ Audience : "1" ,
132+ Issuer : "issuer-1" ,
133+ 134+ Name : "my-name" ,
135+ Subject : "my-sub" ,
136+ Roles : []string {"tester" },
137+ }, & Signature {
138+ Type : jwt .SigningMethodHS256 ,
139+ Key : []byte ("my-secret-2" ),
140+ }, & Options {
141+ Expiration : time .Now ().Add (time .Minute * 10 ).Unix (),
142+ })
143+ assert .NoError (t , err )
144+ assert .NotEmpty (t , rawToken2 )
145+
146+ // When.
147+ authenticateClaims , err = m .AuthenticateToken (context .Background (), rawToken2 )
148+
149+ // Then.
150+ assert .NoError (t , err )
151+ assert .Equal (t , "issuer-1" , authenticateClaims .Issuer )
152+ assert .
Equal (
t ,
"[email protected] " ,
authenticateClaims .
Email )
153+ assert .Equal (t , "my-name" , authenticateClaims .Name )
154+ assert .Equal (t , []string {"tester" }, authenticateClaims .Roles )
155+ }
156+
157+ func TestMultiAuthenticator_AuthenticateToken_Fail (t * testing.T ) {
158+ // Given.
159+ jwtAuth1 , err := NewJwtAuthenticator (& JwtAuthConfig {
160+ SharedSecret : []byte ("my-secret-1" ),
161+ UsernameClaim : UsernameClaimTypeSubject ,
162+ })
163+ assert .NoError (t , err )
164+
165+ jwtAuth2 , err := NewJwtAuthenticator (& JwtAuthConfig {
166+ SharedSecret : []byte ("my-secret-2" ),
167+ UsernameClaim : UsernameClaimTypeSubject ,
168+ })
169+ assert .NoError (t , err )
170+
171+ m , err := NewMultiAuthenticator (map [string ][]Authenticator {
172+ "issuer-1" : []Authenticator {jwtAuth1 , jwtAuth2 },
173+ })
174+ assert .NoError (t , err )
175+
176+ rawToken1 , err := Token (& Claims {
177+ Audience : "1" ,
178+ Issuer : "issuer-1" ,
179+ 180+ Name : "my-name" ,
181+ Subject : "my-sub" ,
182+ Roles : []string {"tester" },
183+ }, & Signature {
184+ Type : jwt .SigningMethodHS256 ,
185+ Key : []byte ("my-secret-3" ),
186+ }, & Options {
187+ Expiration : time .Now ().Add (time .Minute * 10 ).Unix (),
188+ })
189+ assert .NoError (t , err )
190+ assert .NotEmpty (t , rawToken1 )
191+
192+ // When.
193+ authenticateClaims , err := m .AuthenticateToken (context .Background (), rawToken1 )
194+
195+ // Then.
196+ assert .Error (t , err )
197+ assert .Nil (t , authenticateClaims )
107198}
0 commit comments