Skip to content

Commit 2e936e6

Browse files
authored
Tsdk 425 create j unit tests for nylas account (#90)
Tsdk 425 create j unit tests for nylas account
1 parent c959750 commit 2e936e6

4 files changed

Lines changed: 127 additions & 2 deletions

File tree

src/main/java/com/nylas/NylasAccount.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ public AccountDetail fetchAccountByAccessToken() throws IOException, RequestFail
9090
HttpUrl.Builder accountUrl = client.newUrlBuilder().addPathSegment("account");
9191
return client.executeGet(accessToken, accountUrl, AccountDetail.class);
9292
}
93-
93+
94+
// TODO: Revoking an access token seems like an important op. We should return the result of the revoke operation.
9495
public void revokeAccessToken() throws IOException, RequestFailedException {
9596
HttpUrl.Builder revokeUrl = client.newUrlBuilder().addPathSegments("oauth/revoke");
9697
client.executePost(accessToken, revokeUrl, null, null);
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.nylas;
2+
3+
import okhttp3.Request;
4+
import okhttp3.RequestBody;
5+
import org.junit.jupiter.api.BeforeEach;
6+
import org.junit.jupiter.api.Test;
7+
8+
import java.io.IOException;
9+
import java.lang.reflect.Field;
10+
11+
import static org.junit.jupiter.api.Assertions.assertEquals;
12+
import static org.mockito.Mockito.mock;
13+
import static org.mockito.Mockito.when;
14+
15+
public class AccessTokenTest {
16+
public static String TEST_ACCESS_TOKEN = "d964023b-4c66-42ed-abd4-8bd139087136";
17+
public static String TEST_ACCOUNT_ID = "ls0d9v8adfvbjasdofb90dvlsdv";
18+
public static String TEST_EMAIL_ADDRESS = "test@nylas.com";
19+
public static String TEST_PROVIDER = "google";
20+
21+
private NylasClient nylasClient;
22+
23+
@BeforeEach
24+
private void init() {
25+
nylasClient = mock(NylasClient.class);
26+
}
27+
28+
@Test
29+
public void testAccessTokenFields() throws NoSuchFieldException, IllegalAccessException, RequestFailedException, IOException {
30+
RequestBody body = RequestBody.create(JsonHelper.jsonType(), "{code: asdf1234}");
31+
Request request = new Request.Builder().url("https://test.nylas.com/auth/access_token").post(body).build();
32+
33+
AccessToken accessToken = new AccessToken();
34+
setField("access_token", TEST_ACCESS_TOKEN, accessToken);
35+
setField("account_id", TEST_ACCOUNT_ID, accessToken);
36+
setField("email_address", TEST_EMAIL_ADDRESS, accessToken);
37+
setField("provider", TEST_PROVIDER, accessToken);
38+
39+
when(nylasClient.executeRequest(request, AccessToken.class)).thenReturn(accessToken);
40+
AccessToken result = nylasClient.executeRequest(request, AccessToken.class);
41+
42+
assertEquals(result.getAccessToken(), TEST_ACCESS_TOKEN);
43+
assertEquals(result.getAccountId(), TEST_ACCOUNT_ID);
44+
assertEquals(result.getEmailAddress(), TEST_EMAIL_ADDRESS);
45+
assertEquals(result.getProvider(), TEST_PROVIDER);
46+
}
47+
48+
private void setField(String fieldName, String fieldValue, AccessToken accessToken) throws NoSuchFieldException, IllegalAccessException {
49+
Field codeField = accessToken.getClass().getDeclaredField(fieldName);
50+
codeField.setAccessible(true);
51+
codeField.set(accessToken, fieldValue);
52+
}
53+
}

src/test/java/com/nylas/AuthorizationCodeTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ public void testAuthorizationCodeDeserialization() throws RequestFailedException
3333
when(nylasClient.executeRequest(request, AuthorizationCode.class)).thenReturn(authorizationCode);
3434
AuthorizationCode result = nylasClient.executeRequest(request, AuthorizationCode.class);
3535

36-
assertEquals(authorizationCode.getCode(), "asdf1234");
36+
assertEquals(result.getCode(), "asdf1234");
3737
}
3838
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.nylas;
2+
3+
import okhttp3.HttpUrl;
4+
import org.junit.jupiter.api.BeforeEach;
5+
import org.junit.jupiter.api.Test;
6+
7+
import java.io.IOException;
8+
9+
import static com.nylas.AccessTokenTest.TEST_ACCESS_TOKEN;
10+
import static org.junit.jupiter.api.Assertions.assertEquals;
11+
import static org.junit.jupiter.api.Assertions.assertNotNull;
12+
import static org.mockito.ArgumentMatchers.any;
13+
import static org.mockito.Mockito.*;
14+
15+
public class NylasAccountTest {
16+
private NylasClient nylasClient;
17+
18+
@BeforeEach
19+
private void init() {
20+
nylasClient = mock(NylasClient.class);
21+
}
22+
23+
@Test
24+
public void testNylasAccountBootstraping() {
25+
final NylasAccount nylasAccount = new NylasAccount(nylasClient, TEST_ACCESS_TOKEN);
26+
27+
assertEquals(nylasAccount.getAccessToken(), TEST_ACCESS_TOKEN);
28+
assertEquals(nylasAccount.getClient(), nylasClient);
29+
assertNotNull(nylasAccount.threads());
30+
assertNotNull(nylasAccount.messages());
31+
assertNotNull(nylasAccount.folders());
32+
assertNotNull(nylasAccount.labels());
33+
assertNotNull(nylasAccount.drafts());
34+
assertNotNull(nylasAccount.outbox());
35+
assertNotNull(nylasAccount.calendars());
36+
assertNotNull(nylasAccount.files());
37+
assertNotNull(nylasAccount.contacts());
38+
assertNotNull(nylasAccount.contactGroups());
39+
assertNotNull(nylasAccount.deltas());
40+
assertNotNull(nylasAccount.events());
41+
assertNotNull(nylasAccount.jobStatuses());
42+
assertNotNull(nylasAccount.roomResources());
43+
assertNotNull(nylasAccount.neural());
44+
assertNotNull(nylasAccount.schedulers());
45+
}
46+
47+
@Test
48+
public void testFetchAccountByAccessToken() throws RequestFailedException, IOException {
49+
final NylasAccount nylasAccount = new NylasAccount(nylasClient, TEST_ACCESS_TOKEN);
50+
final AccountDetail expectedAccountDetail = new AccountDetail();
51+
52+
when(nylasClient.newUrlBuilder()).thenReturn(new HttpUrl.Builder());
53+
when(nylasClient.executeGet(anyString(), any(), any())).thenReturn(expectedAccountDetail);
54+
55+
AccountDetail actualAccountDetail = nylasAccount.fetchAccountByAccessToken();
56+
57+
verify(nylasClient).executeGet(anyString(), any(), any());
58+
assertNotNull(actualAccountDetail);
59+
}
60+
61+
@Test
62+
public void testRevokeAccessToken() throws RequestFailedException, IOException {
63+
final NylasAccount nylasAccount = new NylasAccount(nylasClient, TEST_ACCESS_TOKEN);
64+
65+
when(nylasClient.newUrlBuilder()).thenReturn(new HttpUrl.Builder());
66+
67+
nylasAccount.revokeAccessToken();
68+
69+
verify(nylasClient).executePost(anyString(), any(), any(), any());
70+
}
71+
}

0 commit comments

Comments
 (0)