1
1
package au.org.ala.ecodata.forms
2
2
3
3
import au.org.ala.web.UserDetails
4
- import au.org.ala.ws.security.client.AlaOidcClient
5
- import au.org.ala.ws.security.profile.AlaOidcUserProfile
6
4
import grails.testing.services.ServiceUnitTest
7
5
import grails.testing.web.GrailsWebUnitTest
6
+ import org.pac4j.core.client.DirectClient
8
7
import org.pac4j.core.config.Config
9
- import org.pac4j.core.credentials.AnonymousCredentials
8
+ import org.pac4j.core.context.WebContextFactory
9
+ import org.pac4j.core.context.session.SessionStoreFactory
10
10
import org.pac4j.core.credentials.Credentials
11
- import org.pac4j.core.profile.UserProfile
11
+ import org.pac4j.core.credentials.TokenCredentials
12
+ import org.pac4j.http.client.direct.DirectBearerAuthClient
13
+ import org.pac4j.jwt.profile.JwtProfile
12
14
import spock.lang.Specification
13
15
14
16
/*
@@ -31,7 +33,7 @@ import spock.lang.Specification
31
33
class UserInfoServiceSpec extends Specification implements ServiceUnitTest<UserInfoService > , GrailsWebUnitTest {
32
34
EcpWebService webService = Mock (EcpWebService )
33
35
def authService = Mock (AuthService )
34
- AlaOidcClient alaOidcClient
36
+ DirectClient alaOidcClient
35
37
Config pack4jConfig
36
38
37
39
def user
@@ -79,22 +81,26 @@ class UserInfoServiceSpec extends Specification implements ServiceUnitTest<UserI
79
81
void " getUserFromJWT returns user when Authorization header is passed" () {
80
82
setup :
81
83
def result
82
- alaOidcClient = GroovyMock ([global : true ], AlaOidcClient )
84
+ alaOidcClient = GroovyMock ([global : true ], DirectBearerAuthClient )
83
85
pack4jConfig = GroovyMock ([global : true ], Config )
84
86
service. alaOidcClient = alaOidcClient
85
87
service. config = pack4jConfig
86
- AlaOidcUserProfile person = new AlaOidcUserProfile (user. userId)
87
- Optional<Credentials > credentials = new Optional<Credentials > (AnonymousCredentials . INSTANCE )
88
- Optional<UserProfile > userProfile = new Optional<UserProfile > (person)
88
+ pack4jConfig. getWebContextFactory() >> Mock (WebContextFactory )
89
+ pack4jConfig. getSessionStoreFactory() >> Mock (SessionStoreFactory )
90
+ Credentials tokenCredentials = Mock (TokenCredentials )
91
+ JwtProfile profile = Mock (JwtProfile )
92
+ Optional<Credentials > credentials = Optional . of(tokenCredentials)
89
93
90
94
when :
91
95
request. addHeader(' Authorization' , ' Bearer abcdef' )
92
96
result = service. getUserFromJWT()
93
97
94
98
then :
95
- alaOidcClient. getCredentials(* _) >> credentials
96
- alaOidcClient. getUserProfile(* _) >> userProfile
97
- authService. getUserForUserId(user. userId) >> userDetails
99
+ 1 * alaOidcClient. getCredentials(* _) >> credentials
100
+ 1 * alaOidcClient. validateCredentials(_, _) >> credentials
101
+ 1 * tokenCredentials. userProfile >> profile
102
+ 1 * profile. getAttribute(" username" ) >> user. userId
103
+ 1 * authService. getUserForUserId(user. userId) >> userDetails
98
104
result. userName == user. userName
99
105
result. displayName == " ${ user.firstName} ${ user.lastName} "
100
106
result. userId == user. userId
@@ -103,13 +109,15 @@ class UserInfoServiceSpec extends Specification implements ServiceUnitTest<UserI
103
109
void " getCurrentUser should get current user from CAS" () {
104
110
setup :
105
111
def result
106
- alaOidcClient = GroovyMock ([global : true ], AlaOidcClient )
112
+ alaOidcClient = GroovyMock ([global : true ], DirectBearerAuthClient )
107
113
pack4jConfig = GroovyMock ([global : true ], Config )
108
114
service. alaOidcClient = alaOidcClient
109
115
service. config = pack4jConfig
110
- AlaOidcUserProfile person = new AlaOidcUserProfile (user. userId)
111
- Optional<Credentials > credentials = new Optional<Credentials > (AnonymousCredentials . INSTANCE )
112
- Optional<UserProfile > userProfile = new Optional<UserProfile > (person)
116
+ pack4jConfig. getWebContextFactory() >> Mock (WebContextFactory )
117
+ pack4jConfig. getSessionStoreFactory() >> Mock (SessionStoreFactory )
118
+ Credentials tokenCredentials = Mock (TokenCredentials )
119
+ JwtProfile profile = Mock (JwtProfile )
120
+ Optional<Credentials > credentials = Optional . of(tokenCredentials)
113
121
114
122
when :
115
123
result = service. getCurrentUserFromSupportedMethods()
@@ -124,9 +132,11 @@ class UserInfoServiceSpec extends Specification implements ServiceUnitTest<UserI
124
132
result = service. getCurrentUserFromSupportedMethods()
125
133
126
134
then :
127
- alaOidcClient. getCredentials(* _) >> credentials
128
- alaOidcClient. getUserProfile(* _) >> userProfile
129
- 1 * authService. getUserForUserId(user. userId) >> userDetails
135
+ 1 * alaOidcClient. getCredentials(* _) >> credentials
136
+ 1 * alaOidcClient. validateCredentials(_, _) >> credentials
137
+ 1 * tokenCredentials. userProfile >> profile
138
+ 1 * profile. getAttribute(" username" ) >> user. userId
139
+ 1 * authService. getUserForUserId(user. userId) >> userDetails
130
140
1 * authService. userDetails() >> null
131
141
result. userName == user. userName
132
142
result. displayName == " first last"
0 commit comments