Skip to content

Commit 6caa3da

Browse files
authored
Tsdk 430 create j unit tests for grant (#101)
Tsdk 430 create j unit tests for grant
1 parent 321f9ff commit 6caa3da

1 file changed

Lines changed: 292 additions & 0 deletions

File tree

Lines changed: 292 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,292 @@
1+
package com.nylas;
2+
3+
import com.squareup.moshi.JsonAdapter;
4+
import com.squareup.moshi.JsonReader;
5+
import com.squareup.moshi.Moshi;
6+
import okio.Buffer;
7+
import okio.BufferedSource;
8+
import okio.Okio;
9+
import okio.Timeout;
10+
import org.junit.jupiter.api.Test;
11+
12+
import java.io.IOException;
13+
import java.lang.reflect.Field;
14+
import java.lang.reflect.Type;
15+
import java.nio.channels.ReadableByteChannel;
16+
import java.util.ArrayList;
17+
import java.util.HashMap;
18+
import java.util.List;
19+
import java.util.Map;
20+
21+
import static org.junit.jupiter.api.Assertions.*;;
22+
23+
public class GrantTest {
24+
25+
@Test
26+
public void testConstructor() {
27+
Map<String, String> settings = new HashMap<>();
28+
settings.put("setting1", "value1");
29+
30+
Grant grant = new Grant(Authentication.Provider.valueOf("GOOGLE"), settings);
31+
32+
assertEquals(grant.getProvider(), Authentication.Provider.GOOGLE);
33+
assertEquals(grant.getProviderString(), "google");
34+
assertEquals(grant.getSettings(), settings);
35+
}
36+
37+
@Test
38+
public void testDeserializeConstructor() {
39+
Grant grant = new Grant();
40+
41+
assertNotNull(grant);
42+
}
43+
44+
@Test
45+
public void testSetsProvider() {
46+
Grant grant = new Grant();
47+
grant.setProvider(Authentication.Provider.GOOGLE);
48+
49+
assertEquals(grant.getProviderString(), "google");
50+
assertEquals(grant.getProvider(), Authentication.Provider.GOOGLE);
51+
}
52+
53+
@Test
54+
public void testSetState() {
55+
Grant grant = new Grant();
56+
grant.setState("VALID");
57+
58+
assertEquals(grant.getState(), "VALID");
59+
}
60+
61+
@Test
62+
public void testSetScope() {
63+
Grant grant = new Grant();
64+
List<String> scopes = new ArrayList<>();
65+
scopes.add("CALENDAR");
66+
scopes.add("EMAIL");
67+
68+
grant.setScope(scopes);
69+
70+
assertEquals(grant.getScope(), scopes);
71+
72+
grant.addScope("EMAIL_SEND");
73+
74+
assertEquals(grant.getScope().size(), 3);
75+
}
76+
77+
@Test
78+
public void testSetSettings() {
79+
Grant grant = new Grant();
80+
Map<String, String> settings = new HashMap<>();
81+
settings.put("setting1", "value1");
82+
83+
grant.setSettings(settings);
84+
85+
assertEquals(grant.getSettings(), settings);
86+
87+
grant.addSetting("setting2", "param2");
88+
89+
assertEquals(grant.getSettings().size(), 2);
90+
}
91+
92+
@Test
93+
public void testSetMetadata() {
94+
Grant grant = new Grant();
95+
Map<String, Object> metadata = new HashMap<>();
96+
metadata.put("meta", "value1");
97+
98+
grant.setMetadata(metadata);
99+
100+
assertEquals(grant.getMetadata(), metadata);
101+
102+
grant.addMetadata("meta2", "value2");
103+
104+
assertEquals(grant.getMetadata().size(), 2);
105+
}
106+
107+
@Test
108+
public void testGetWritableFields_creationFalse() {
109+
Map<String, String> settings = new HashMap<>();
110+
settings.put("setting1", "value1");
111+
112+
Map<String, Object> metadata = new HashMap<>();
113+
metadata.put("meta", "value1");
114+
115+
List<String> scopes = new ArrayList<>();
116+
scopes.add("CALENDAR");
117+
scopes.add("EMAIL");
118+
119+
Grant grant = new Grant();
120+
grant.setSettings(settings);
121+
grant.setMetadata(metadata);
122+
grant.setScope(scopes);
123+
124+
Map<String, Object> writeableFields = grant.getWritableFields(false);
125+
126+
127+
assertNotNull(writeableFields);
128+
assertEquals(writeableFields.get("settings"), settings);
129+
assertEquals(writeableFields.get("metadata"), metadata);
130+
assertEquals(writeableFields.get("scope"), scopes);
131+
}
132+
133+
@Test
134+
public void testGetWritableFields_creationTrue() {
135+
Map<String, String> settings = new HashMap<>();
136+
settings.put("setting1", "value1");
137+
138+
Map<String, Object> metadata = new HashMap<>();
139+
metadata.put("meta", "value1");
140+
141+
List<String> scopes = new ArrayList<>();
142+
scopes.add("CALENDAR");
143+
scopes.add("EMAIL");
144+
145+
Grant grant = new Grant();
146+
grant.setSettings(settings);
147+
grant.setMetadata(metadata);
148+
grant.setScope(scopes);
149+
grant.setProvider(Authentication.Provider.GOOGLE);
150+
grant.setState("VALID");
151+
152+
Map<String, Object> writeableFields = grant.getWritableFields(true);
153+
154+
155+
assertNotNull(writeableFields);
156+
assertEquals(writeableFields.get("settings"), settings);
157+
assertEquals(writeableFields.get("metadata"), metadata);
158+
assertEquals(writeableFields.get("scope"), scopes);
159+
assertEquals(writeableFields.get("provider"), "google");
160+
assertEquals(writeableFields.get("state"), "VALID");
161+
}
162+
163+
@Test
164+
public void testToString() {
165+
Grant grant = new Grant();
166+
167+
assertEquals(grant.toString(), "Grant [id='null', provider='null', state='null', email='null', ip='null', grant_status='null', user_agent='null', created_at=null, updated_at=null, scope=[], settings={}, metadata={}]");
168+
}
169+
170+
@Test
171+
public void testValidate() {
172+
Map<String, String> settings = new HashMap<>();
173+
settings.put("setting1", "value1");
174+
175+
Grant grant = new Grant();
176+
grant.setProvider(Authentication.Provider.GOOGLE);
177+
grant.setSettings(settings);
178+
179+
assertDoesNotThrow(grant::validate);
180+
}
181+
182+
@Test
183+
public void testNonWriteableFields() throws NoSuchFieldException, IllegalAccessException {
184+
Grant grant = new Grant();
185+
186+
setField("email", "noreply@nylas.com", grant);
187+
setField("ip", "192.168.72.11", grant);
188+
setField("grant_status", "GRANTED", grant);
189+
setField("user_agent", "X-Nylas-SDK", grant);
190+
setField("created_at", 1664987122L, grant);
191+
setField("updated_at", 1664987123L, grant);
192+
193+
assertEquals(grant.getEmail(), "noreply@nylas.com");
194+
assertEquals(grant.getIp(), "192.168.72.11");
195+
assertEquals(grant.getGrantStatus(), "GRANTED");
196+
assertEquals(grant.getUserAgent(), "X-Nylas-SDK");
197+
assertEquals(grant.getCreatedAt(), 1664987122L);
198+
assertEquals(grant.getUpdatedAt(), 1664987123L);
199+
}
200+
201+
@Test
202+
public void testGrantCustomAdapter() throws IOException {
203+
final String jsonGrant = "{" +
204+
"\"provider\": \"google\", " +
205+
"\"settings\": {}" +
206+
"}";
207+
208+
Moshi moshi = new Moshi.Builder().build();
209+
JsonAdapter<Grant> jsonAdapter = moshi.adapter(Grant.class);
210+
211+
ReadableByteChannel channel = new Buffer().writeUtf8(jsonGrant);
212+
BufferedSource source = Okio.buffer(new ByteChannelSource(channel, Timeout.NONE));
213+
JsonReader jsonReader = JsonReader.of(source);
214+
215+
Grant.GrantCustomAdapter grantCustomAdapter = new Grant.GrantCustomAdapter();
216+
217+
Grant theGrant = grantCustomAdapter.fromJson(jsonReader, jsonAdapter);
218+
219+
assertNotNull(theGrant);
220+
assertEquals(theGrant.getProvider(), Authentication.Provider.GOOGLE);
221+
}
222+
223+
@Test
224+
public void testGrantCustomAdapter_dataField() throws IOException {
225+
final String jsonGrant = "{" +
226+
"\"data\": {" +
227+
"\"provider\": \"google\", " +
228+
"\"settings\": {}" +
229+
"}}";
230+
231+
Moshi moshi = new Moshi.Builder().build();
232+
JsonAdapter<Grant> jsonAdapter = moshi.adapter(Grant.class);
233+
234+
ReadableByteChannel channel = new Buffer().writeUtf8(jsonGrant);
235+
BufferedSource source = Okio.buffer(new ByteChannelSource(channel, Timeout.NONE));
236+
JsonReader jsonReader = JsonReader.of(source);
237+
238+
Grant.GrantCustomAdapter grantCustomAdapter = new Grant.GrantCustomAdapter();
239+
240+
Grant theGrant = grantCustomAdapter.fromJson(jsonReader, jsonAdapter);
241+
242+
assertNotNull(theGrant);
243+
assertEquals(theGrant.getProvider(), Authentication.Provider.GOOGLE);
244+
}
245+
246+
@Test
247+
public void testGrantListCustomAdapter() throws IOException {
248+
final String jsonGrant = "{ \"data\": [{" +
249+
"\"provider\": \"google\", " +
250+
"\"settings\": {}" +
251+
"}]}";
252+
253+
Moshi moshi = new Moshi.Builder().build();
254+
JsonAdapter<List<Grant>> jsonAdapter = moshi.adapter((Type) List.class);
255+
256+
ReadableByteChannel channel = new Buffer().writeUtf8(jsonGrant);
257+
BufferedSource source = Okio.buffer(new ByteChannelSource(channel, Timeout.NONE));
258+
JsonReader jsonReader = JsonReader.of(source);
259+
260+
Grant.GrantListCustomAdapter grantListCustomAdapter = new Grant.GrantListCustomAdapter();
261+
262+
List<Grant> theGrants = grantListCustomAdapter.fromJson(jsonReader, jsonAdapter);
263+
264+
assertNotNull(theGrants);
265+
assertEquals(theGrants.size(), 1);
266+
}
267+
268+
@Test
269+
public void testGrantListCustomAdapter_empty() throws IOException {
270+
final String jsonGrant = "{ \"not\": \"found?\"}";
271+
272+
Moshi moshi = new Moshi.Builder().build();
273+
JsonAdapter<List<Grant>> jsonAdapter = moshi.adapter((Type) List.class);
274+
275+
ReadableByteChannel channel = new Buffer().writeUtf8(jsonGrant);
276+
BufferedSource source = Okio.buffer(new ByteChannelSource(channel, Timeout.NONE));
277+
JsonReader jsonReader = JsonReader.of(source);
278+
279+
Grant.GrantListCustomAdapter grantListCustomAdapter = new Grant.GrantListCustomAdapter();
280+
281+
List<Grant> theGrants = grantListCustomAdapter.fromJson(jsonReader, jsonAdapter);
282+
283+
assertNotNull(theGrants);
284+
assertEquals(theGrants.size(), 0);
285+
}
286+
287+
private void setField(String fieldName, Object fieldValue, Object o) throws NoSuchFieldException, IllegalAccessException {
288+
Field codeField = o.getClass().getDeclaredField(fieldName);
289+
codeField.setAccessible(true);
290+
codeField.set(o, fieldValue);
291+
}
292+
}

0 commit comments

Comments
 (0)