This repository has been archived by the owner on Apr 14, 2020. It is now read-only.
/
PatchValueFilterUserTest.java
140 lines (109 loc) · 4.46 KB
/
PatchValueFilterUserTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
* SCIM-Client is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2017, Gluu
*/
package gluu.scim2.client.patch;
import gluu.scim2.client.UserBaseTest;
import org.gluu.oxtrust.model.scim2.patch.PatchOperation;
import org.gluu.oxtrust.model.scim2.patch.PatchRequest;
import org.gluu.oxtrust.model.scim2.user.Address;
import org.gluu.oxtrust.model.scim2.user.Email;
import org.gluu.oxtrust.model.scim2.user.PhoneNumber;
import org.gluu.oxtrust.model.scim2.user.UserResource;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;
import static javax.ws.rs.core.Response.Status.*;
import static org.testng.Assert.*;
/**
* Created by jgomer on 2017-12-16.
*/
public class PatchValueFilterUserTest extends UserBaseTest {
private UserResource user;
@Test
public void create(){
user=getDummyUser();
Response response=client.createUser(user, "id", null);
assertEquals(response.getStatus(), CREATED.getStatusCode());
user=response.readEntity(usrClass);
logger.debug("User created with id {}", user.getId());
}
@Parameters("user_patch_valuefilter")
@Test(dependsOnMethods = "create")
public void patch(String json){
Response response=client.patchUser(json, user.getId(), null, null);
assertEquals(response.getStatus(), OK.getStatusCode());
user=response.readEntity(usrClass);
//Verify changes: emails
assertTrue(user.getEmails().stream().allMatch(email -> email.getDisplay().equals("bjane")));
assertTrue(user.getEmails().stream().allMatch(email -> email.getType().equals("hobby")));
//phone numbers
assertTrue(user.getPhoneNumbers().stream().allMatch(pn -> pn.getValue().equals("+1 1234 56789")));
}
@Test(dependsOnMethods = "patch")
public void objectPatch(){
PatchRequest request=new PatchRequest();
request.setOperations(new ArrayList<>());
PatchOperation del=new PatchOperation();
del.setOperation("remove");
del.setPath("emails[type sw \"hobby\"]");
request.getOperations().add(del);
del=new PatchOperation();
del.setOperation("remove");
del.setPath("phoneNumbers[primary pr or value co \" \"].type");
request.getOperations().add(del);
del=new PatchOperation();
del.setOperation("remove");
del.setPath("addresses[region eq \"somewhere\" and primary ne true].locality");
request.getOperations().add(del);
Response response = client.patchUser(request, user.getId(), null, null);
assertEquals(response.getStatus(), OK.getStatusCode());
user=response.readEntity(usrClass);
assertNull(user.getEmails());
assertTrue(user.getPhoneNumbers().stream().allMatch(ph -> ph.getType()==null));
assertEquals(user.getAddresses().size(), 1); //No change in addresses
assertNull(user.getAddresses().get(0).getLocality());
}
@Test(dependsOnMethods = "objectPatch", alwaysRun = true)
public void delete(){
deleteUser(user);
}
private UserResource getDummyUser() {
user = new UserResource();
user.setUserName("" + System.currentTimeMillis());
user.setEmails(new ArrayList<>());
user.setPhoneNumbers(new ArrayList<>());
Email email = new Email();
email.setValue("bjane@gluu.org");
email.setDisplay("bjane");
email.setPrimary(true);
email.setType("work");
user.getEmails().add(email);
email = new Email();
email.setValue("bjane@acme.org");
email.setDisplay("bjane acme");
email.setType("hobby");
user.getEmails().add(email);
PhoneNumber pn = new PhoneNumber();
pn.setValue("+57 1234 56789");
pn.setType("home");
user.getPhoneNumbers().add(pn);
pn = new PhoneNumber();
pn.setValue("+1 1234 56789");
pn.setType("work");
pn.setPrimary(true);
user.getPhoneNumbers().add(pn);
Address address = new Address();
address.setCountry("EG");
address.setPrimary(false);
address.setRegion("Somewhere");
address.setStreetAddress("59 Acacia avenue");
address.setLocality("Donington");
user.setAddresses(Collections.singletonList(address));
return user;
}
}