1818
1919import org .cloudfoundry .AbstractIntegrationTest ;
2020import org .cloudfoundry .uaa .users .ChangeUserPasswordRequest ;
21+ import org .cloudfoundry .uaa .users .ChangeUserPasswordResponse ;
2122import org .cloudfoundry .uaa .users .CreateUserRequest ;
2223import org .cloudfoundry .uaa .users .CreateUserResponse ;
2324import org .cloudfoundry .uaa .users .DeleteUserRequest ;
2425import org .cloudfoundry .uaa .users .DeleteUserResponse ;
2526import org .cloudfoundry .uaa .users .Email ;
2627import org .cloudfoundry .uaa .users .GetUserVerificationLinkRequest ;
28+ import org .cloudfoundry .uaa .users .GetUserVerificationLinkResponse ;
29+ import org .cloudfoundry .uaa .users .Invite ;
2730import org .cloudfoundry .uaa .users .InviteUsersRequest ;
31+ import org .cloudfoundry .uaa .users .InviteUsersResponse ;
2832import org .cloudfoundry .uaa .users .ListUsersRequest ;
2933import org .cloudfoundry .uaa .users .ListUsersResponse ;
3034import org .cloudfoundry .uaa .users .LookupUserIdsRequest ;
35+ import org .cloudfoundry .uaa .users .LookupUserIdsResponse ;
3136import org .cloudfoundry .uaa .users .Name ;
3237import org .cloudfoundry .uaa .users .UpdateUserRequest ;
3338import org .cloudfoundry .uaa .users .User ;
39+ import org .cloudfoundry .uaa .users .UserId ;
3440import org .cloudfoundry .uaa .users .VerifyUserRequest ;
3541import org .cloudfoundry .uaa .users .VerifyUserResponse ;
36- import org .junit .Ignore ;
3742import org .junit .Test ;
3843import org .springframework .beans .factory .annotation .Autowired ;
3944import reactor .core .publisher .Flux ;
4045import reactor .core .publisher .Mono ;
4146
4247import static org .junit .Assert .assertEquals ;
48+ import static org .junit .Assert .assertTrue ;
4349
4450public final class UsersTest extends AbstractIntegrationTest {
4551
52+ @ Autowired
53+ private String password ;
54+
4655 @ Autowired
4756 private UaaClient uaaClient ;
4857
49- @ Ignore ("TODO: finish story https://www.pivotaltracker.com/projects/816799/stories/122457091 to grant password.write scope" )
58+ @ Autowired
59+ private String username ;
60+
5061 @ Test
5162 public void changePassword () {
52- String userName = getUserName ();
5363
54- createUserId (this .uaaClient , userName )
64+ getUserIdByUsername (this .uaaClient , this . username )
5565 .then (userId -> this .uaaClient .users ()
5666 .changePassword (ChangeUserPasswordRequest .builder ()
57- .oldPassword ("test- password" )
67+ .oldPassword (this . password )
5868 .password ("test-new-password" )
5969 .userId (userId )
6070 .build ()))
61- .subscribe (this .testSubscriber ());
71+ .subscribe (this .<ChangeUserPasswordResponse >testSubscriber ()
72+ .assertThat (response -> {
73+ assertEquals ("password updated" , response .getMessage ());
74+ assertEquals ("ok" , response .getStatus ());
75+ }));
6276 }
6377
6478 @ Test
@@ -102,7 +116,6 @@ public void delete() {
102116 .assertEquals (0 ));
103117 }
104118
105- @ Ignore ("TODO: finish story https://www.pivotaltracker.com/projects/816799/stories/122457091 to grant scim.create, zones.uaa.admin scopes" )
106119 @ Test
107120 public void getVerificationLink () {
108121 String userName = getUserName ();
@@ -113,18 +126,25 @@ public void getVerificationLink() {
113126 .redirectUri ("test-redirect-uri" )
114127 .userId (userId )
115128 .build ()))
116- .subscribe (this .testSubscriber ());
129+ .map (GetUserVerificationLinkResponse ::getVerifyLink )
130+ .subscribe (this .<String >testSubscriber ()
131+ .assertThat (location -> assertTrue (location .contains ("/verify_user?code=" ))));
117132 }
118133
119- @ Ignore ("TODO: finish story https://www.pivotaltracker.com/projects/816799/stories/122457091 to grant scim.invite scope" )
120134 @ Test
121135 public void invite () {
122136 this .uaaClient .users ()
123137 .invite (InviteUsersRequest .builder ()
124138 .email ("test-email-address" )
125139 .redirectUri ("test-redirect-uri" )
126140 .build ())
127- .subscribe (this .testSubscriber ());
141+ .flatMapIterable (InviteUsersResponse ::getFailedInvites )
142+ .single ()
143+ .subscribe (this .<Invite >testSubscriber ()
144+ .assertThat (invite -> {
145+ assertEquals ("test-email-address" , invite .getEmail ());
146+ assertEquals ("provider.ambiguous" , invite .getErrorCode ());
147+ }));
128148 }
129149
130150 @ Test
@@ -136,14 +156,12 @@ public void list() {
136156 .list (ListUsersRequest .builder ()
137157 .filter (String .format ("id eq \" %s\" " , userId ))
138158 .build ()))
139- .map (ListUsersResponse ::getResources )
140- .flatMap (Flux ::fromIterable )
159+ .flatMapIterable (ListUsersResponse ::getResources )
141160 .map (User ::getUserName )
142161 .subscribe (this .testSubscriber ()
143162 .assertEquals (userName ));
144163 }
145164
146- @ Ignore ("TODO: finish story https://www.pivotaltracker.com/projects/816799/stories/122457091 to grant scim.userids scope" )
147165 @ Test
148166 public void lookup () {
149167 String userName = getUserName ();
@@ -153,7 +171,10 @@ public void lookup() {
153171 .lookup (LookupUserIdsRequest .builder ()
154172 .filter (String .format ("id eq \" %s\" " , userId ))
155173 .build ()))
156- .subscribe (this .testSubscriber ());
174+ .flatMapIterable (LookupUserIdsResponse ::getResources )
175+ .map (UserId ::getUserName )
176+ .subscribe (this .testSubscriber ()
177+ .assertEquals (userName ));
157178 }
158179
159180 @ Test
@@ -200,6 +221,13 @@ private static Mono<String> createUserId(UaaClient uaaClient, String userName) {
200221 .map (CreateUserResponse ::getId );
201222 }
202223
224+ private static Mono <String > getUserIdByUsername (UaaClient uaaClient , String username ) {
225+ return requestLookupByUsername (uaaClient , username )
226+ .flatMapIterable (LookupUserIdsResponse ::getResources )
227+ .map (UserId ::getId )
228+ .single ();
229+ }
230+
203231 private static Mono <CreateUserResponse > requestCreateUser (UaaClient uaaClient , String userName ) {
204232 return uaaClient .users ()
205233 .create (CreateUserRequest .builder ()
@@ -212,6 +240,7 @@ private static Mono<CreateUserResponse> requestCreateUser(UaaClient uaaClient, S
212240 .givenName ("test-given-name" )
213241 .build ())
214242 .password ("test-password" )
243+ .verified (false )
215244 .userName (userName )
216245 .build ());
217246 }
@@ -223,4 +252,11 @@ private static Mono<ListUsersResponse> requestListUsers(UaaClient uaaClient, Str
223252 .build ());
224253 }
225254
255+ private static Mono <LookupUserIdsResponse > requestLookupByUsername (UaaClient uaaClient , String username ) {
256+ return uaaClient .users ()
257+ .lookup (LookupUserIdsRequest .builder ()
258+ .filter (String .format ("userName eq \" %s\" " , username ))
259+ .build ());
260+ }
261+
226262}
0 commit comments