Skip to content

Commit 06f8195

Browse files
committed
DX-2892 TnLookupApi Integration Tests
1 parent bed370b commit 06f8195

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
package org.openapitools.client.api;
2+
3+
import org.openapitools.client.ApiResponse;
4+
import org.openapitools.client.ApiException;
5+
import org.openapitools.client.ApiClient;
6+
import org.openapitools.client.auth.HttpBasicAuth;
7+
import org.openapitools.client.Configuration;
8+
import org.openapitools.client.model.LookupRequest;
9+
import org.openapitools.client.model.LookupStatus;
10+
import org.openapitools.client.model.LookupStatusEnum;
11+
import org.openapitools.client.model.CreateLookupResponse;
12+
import org.openapitools.client.model.LookupResult;
13+
import org.hamcrest.beans.HasProperty;
14+
import org.hamcrest.core.IsInstanceOf;
15+
import org.junit.Ignore;
16+
import org.junit.jupiter.api.Assertions;
17+
import org.junit.jupiter.api.Disabled;
18+
import org.junit.jupiter.api.Test;
19+
20+
import java.net.URI;
21+
import java.lang.Class;
22+
import java.util.List;
23+
import java.util.ArrayList;
24+
import java.util.concurrent.TimeUnit;
25+
26+
import javax.security.auth.AuthPermission;
27+
28+
import static org.hamcrest.MatcherAssert.assertThat;
29+
import static org.hamcrest.CoreMatchers.instanceOf;
30+
import static org.hamcrest.Matchers.hasProperty;
31+
import static org.hamcrest.Matchers.hasProperties;
32+
import static org.hamcrest.Matchers.greaterThan;
33+
import static org.hamcrest.Matchers.is;
34+
import static org.hamcrest.Matchers.matchesRegex;
35+
import static org.hamcrest.Matchers.contains;
36+
37+
import static org.openapitools.client.utils.TestingEnvironmentVariables.*;
38+
39+
public class PhoneNumberLookupApiTest {
40+
41+
ApiClient defaultClient = Configuration.getDefaultApiClient();
42+
HttpBasicAuth Basic = (HttpBasicAuth) defaultClient.getAuthentication("Basic");
43+
private final PhoneNumberLookupApi api = new PhoneNumberLookupApi(defaultClient);;
44+
LookupRequest lookupRequest = new LookupRequest();
45+
46+
private void validateResult(LookupResult result, String phoneNumber) {
47+
if (result.getMobileCountryCode() != null || result.getMobileNetworkCode() != null) {
48+
assertThat(result.getMobileCountryCode(), instanceOf(String.class));
49+
assertThat(result.getMobileNetworkCode(), instanceOf(String.class));
50+
}
51+
52+
assertThat(result, hasProperty("responseCode"));
53+
assertThat(result, hasProperty("message"));
54+
assertThat(result, hasProperty("e164Format"));
55+
assertThat(result, hasProperty("formatted"));
56+
assertThat(result, hasProperty("country"));
57+
assertThat(result, hasProperty("lineType"));
58+
assertThat(result, hasProperty("lineProvider"));
59+
assertThat(result, hasProperty("mobileCountryCode"));
60+
assertThat(result, hasProperty("mobileNetworkCode"));
61+
62+
assertThat(result.getE164Format(), is(phoneNumber));
63+
}
64+
65+
private LookupStatus pollLookupStatus(String requestId) throws Exception {
66+
int attempt = 1;
67+
LookupStatus lookupStatus = this.api.getLookupStatus(BW_ACCOUNT_ID, requestId);
68+
69+
do {
70+
try {
71+
lookupStatus = this.api.getLookupStatus(BW_ACCOUNT_ID, requestId);
72+
TimeUnit.SECONDS.sleep(2);
73+
attempt += 1;
74+
} catch (ApiException e) {
75+
throw new Exception(
76+
"Polling for TnLookup order status failed. \nStatus Code: " + String.valueOf(e.getCode())
77+
+ "\nMessage: " + e.getMessage());
78+
}
79+
} while (attempt <= 5 && lookupStatus.getStatus() != LookupStatusEnum.COMPLETE);
80+
return lookupStatus;
81+
}
82+
83+
@Test
84+
public void successfulPhoneNumberLookup() throws Exception, ApiException {
85+
Basic.setUsername(BW_USERNAME);
86+
Basic.setPassword(BW_PASSWORD);
87+
88+
lookupRequest.addTnsItem(BW_NUMBER);
89+
lookupRequest.addTnsItem(VZW_NUMBER);
90+
lookupRequest.addTnsItem(ATT_NUMBER);
91+
lookupRequest.addTnsItem(T_MOBILE_NUMBER);
92+
93+
// Create the lookup request and validate the response
94+
ApiResponse<CreateLookupResponse> response = api.createLookupWithHttpInfo(BW_ACCOUNT_ID, lookupRequest);
95+
CreateLookupResponse lookupResponse = response.getData();
96+
assertThat(response.getStatusCode(), is(202));
97+
assertThat(response.getData(), instanceOf(CreateLookupResponse.class));
98+
assertThat(lookupResponse.getStatus(), is(LookupStatusEnum.IN_PROGRESS));
99+
assertThat(lookupResponse.getRequestId(), instanceOf(String.class));
100+
assertThat(lookupResponse.getRequestId(),
101+
matchesRegex("^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"));
102+
103+
// Test GET LookupStatus Response
104+
ApiResponse<LookupStatus> lookupStatusResponse = api.getLookupStatusWithHttpInfo(BW_ACCOUNT_ID,
105+
lookupResponse.getRequestId());
106+
assertThat(lookupStatusResponse.getStatusCode(), is(200));
107+
108+
LookupStatus completedLookup = null;
109+
try {
110+
completedLookup = pollLookupStatus(lookupStatusResponse.getData().getRequestId());
111+
} catch (Exception e) {
112+
throw e;
113+
}
114+
assertThat(lookupStatusResponse.getData().getRequestId(), is(completedLookup.getRequestId()));
115+
116+
for (LookupResult result : completedLookup.getResult()) {
117+
assertThat(result, instanceOf(LookupResult.class));
118+
}
119+
120+
LookupResult bwLookupResult = completedLookup.getResult().get(0);
121+
validateResult(bwLookupResult, BW_NUMBER);
122+
123+
LookupResult vzwLookupResult = completedLookup.getResult().get(1);
124+
validateResult(vzwLookupResult, VZW_NUMBER);
125+
126+
LookupResult attLookupResult = completedLookup.getResult().get(2);
127+
validateResult(attLookupResult, ATT_NUMBER);
128+
129+
LookupResult tMobileLookupResult = completedLookup.getResult().get(3);
130+
validateResult(tMobileLookupResult, T_MOBILE_NUMBER);
131+
132+
}
133+
134+
@Test
135+
public void failedPhoneNumberLookup() throws ApiException {
136+
Basic.setUsername(BW_USERNAME);
137+
Basic.setPassword(BW_PASSWORD);
138+
139+
lookupRequest.addTnsItem("not a number");
140+
141+
ApiException exception = Assertions.assertThrows(ApiException.class,
142+
() -> api.createLookup(BW_ACCOUNT_ID, lookupRequest));
143+
assertThat(exception.getCode(), is(400));
144+
}
145+
146+
@Test
147+
public void duplicatePhoneNumberLookup() throws ApiException {
148+
Basic.setUsername(BW_USERNAME);
149+
Basic.setPassword(BW_PASSWORD);
150+
151+
lookupRequest.addTnsItem(BW_NUMBER);
152+
lookupRequest.addTnsItem(BW_NUMBER);
153+
154+
ApiException exception = Assertions.assertThrows(ApiException.class,
155+
() -> api.createLookup(BW_ACCOUNT_ID, lookupRequest));
156+
assertThat(exception.getCode(), is(400));
157+
}
158+
159+
@Test
160+
public void unauthorizedRequest() throws ApiException {
161+
Basic.setUsername("bad_username");
162+
Basic.setPassword("bad_password");
163+
164+
lookupRequest.addTnsItem(BW_NUMBER);
165+
166+
ApiException exception = Assertions.assertThrows(ApiException.class,
167+
() -> api.createLookup(BW_ACCOUNT_ID, lookupRequest));
168+
assertThat(exception.getCode(), is(401));
169+
}
170+
171+
@Disabled(("403 Response is not implemented in the API"))
172+
@Test
173+
public void forbiddenRequest() throws ApiException {
174+
Basic.setUsername(FORBIDDEN_USERNAME);
175+
Basic.setPassword(FORBIDDEN_PASSWORD);
176+
177+
lookupRequest.addTnsItem(BW_NUMBER);
178+
179+
ApiException exception = Assertions.assertThrows(ApiException.class,
180+
() -> api.createLookup(BW_ACCOUNT_ID, lookupRequest));
181+
assertThat(exception.getCode(), is(403));
182+
}
183+
}

0 commit comments

Comments
 (0)