Skip to content

Commit 58e6643

Browse files
committed
BS-701 Started adding support for Available Phone Numbers. Detected problems with serializing POJO from JSON response
1 parent 409df32 commit 58e6643

File tree

4 files changed

+139
-0
lines changed

4 files changed

+139
-0
lines changed

src/main/java/org/restcomm/sdk/RestcommClient.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import org.restcomm.sdk.domain.Account;
77
import org.restcomm.sdk.domain.Application;
8+
import org.restcomm.sdk.domain.AvailablePhoneNumber;
89
import org.restcomm.sdk.domain.CallPage;
910
import org.restcomm.sdk.domain.Client;
1011
import org.restcomm.sdk.domain.ExtensionData;
@@ -104,6 +105,19 @@ private RestEndpoints<Application> getApplicationsEndpoints(String endpoint, Str
104105
Application.class);
105106
}
106107

108+
public RestEndpoints<AvailablePhoneNumber> getAvailablePhoneNumbersEndpoints() {
109+
return getAvailablePhoneNumbersEndpoints("available-phone-numbers", this.accountSid);
110+
}
111+
112+
public RestEndpoints<AvailablePhoneNumber> getAvailablePhoneNumbersEndpoints(String accountSid) {
113+
return getAvailablePhoneNumbersEndpoints("available-phone-numbers-" + accountSid, accountSid);
114+
}
115+
116+
private RestEndpoints<AvailablePhoneNumber> getAvailablePhoneNumbersEndpoints(String endpoint, String accountSid) {
117+
// FIXME Hard-coded U.S. country ISO in URL
118+
return getEndpoints(endpoint, baseRestcommUrlWithoutAccount + "/" + accountSid + "/AvailablePhoneNumbers/US/Local.json", AvailablePhoneNumber.class);
119+
}
120+
107121
public RestEndpoints<IncomingPhoneNumber> getIncomingPhoneNumbersEndpoints() {
108122
return getIncomingPhoneNumbersEndpoints("incoming-phone-numbers", this.accountSid);
109123
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.restcomm.sdk.domain;
2+
3+
import lombok.Builder;
4+
import lombok.Getter;
5+
import lombok.Setter;
6+
7+
/**
8+
* @author Henrique Rosa ([email protected]) created on 27/08/2018
9+
*/
10+
@Builder(toBuilder = true)
11+
@Getter
12+
@Setter
13+
public class AvailablePhoneNumber {
14+
15+
private String friendlyName;
16+
private String phoneNumber;
17+
private String isoCountry;
18+
private String cost;
19+
private Boolean voiceCapable;
20+
private Boolean smsCapable;
21+
22+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package org.restcomm.sdk.endpoints;
2+
3+
import com.github.tomakehurst.wiremock.junit.WireMockRule;
4+
import org.junit.Assert;
5+
import org.junit.Rule;
6+
import org.junit.Test;
7+
import org.restcomm.sdk.RestcommClient;
8+
import org.restcomm.sdk.RestcommClientConfiguration;
9+
import org.restcomm.sdk.domain.AvailablePhoneNumber;
10+
11+
import java.io.File;
12+
import java.io.IOException;
13+
import java.nio.file.Files;
14+
import java.util.List;
15+
16+
import static com.github.tomakehurst.wiremock.client.WireMock.get;
17+
import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
18+
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
19+
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
20+
import static org.junit.Assert.assertEquals;
21+
import static org.junit.Assert.assertFalse;
22+
import static org.junit.Assert.assertNotNull;
23+
import static org.junit.Assert.assertTrue;
24+
25+
/**
26+
* @author Henrique Rosa ([email protected]) created on 27/08/2018
27+
*/
28+
public class AvailablePhoneNumbersEndpointTest {
29+
30+
@Rule
31+
public WireMockRule wireMock = new WireMockRule();
32+
33+
@Test
34+
public void testGetAvailablePhoneNumbersFromUS() throws IOException {
35+
// given
36+
final String username = "username";
37+
final String password = "password";
38+
final String baseUrl = "http://localhost:" + wireMock.port();
39+
final RestcommClient client = new RestcommClient(RestcommClientConfiguration.builder().accountSid(username).accountToken(password).baseUrl(baseUrl).build());
40+
final RestEndpoints<AvailablePhoneNumber> endpoint = client.getAvailablePhoneNumbersEndpoints();
41+
42+
final File file = new File("src/test/resources/responses/available-phone-numbers-response.json");
43+
final String response = new String(Files.readAllBytes(file.toPath()));
44+
stubFor(get(urlPathEqualTo("/restcomm/2012-04-24/Accounts/" + username + "/AvailablePhoneNumbers/US/Local.json"))
45+
.withBasicAuth(username, password)
46+
.willReturn(okJson(response)));
47+
48+
// when
49+
final List<AvailablePhoneNumber> availablePhoneNumbers = endpoint.getAll();
50+
51+
// then
52+
assertNotNull(availablePhoneNumbers);
53+
assertEquals(3, availablePhoneNumbers.size());
54+
assertEquals("+11111111111", availablePhoneNumbers.get(0).getFriendlyName());
55+
assertEquals("11111111111", availablePhoneNumbers.get(0).getPhoneNumber());
56+
assertEquals("US", availablePhoneNumbers.get(0).getIsoCountry());
57+
assertEquals("0.67", availablePhoneNumbers.get(0).getCost());
58+
assertTrue(availablePhoneNumbers.get(0).getVoiceCapable());
59+
assertTrue(availablePhoneNumbers.get(0).getSmsCapable());
60+
61+
assertEquals("+12222222222", availablePhoneNumbers.get(1).getFriendlyName());
62+
assertEquals("12222222222", availablePhoneNumbers.get(1).getPhoneNumber());
63+
assertEquals("US", availablePhoneNumbers.get(1).getIsoCountry());
64+
assertEquals("0.67", availablePhoneNumbers.get(1).getCost());
65+
assertTrue(availablePhoneNumbers.get(1).getVoiceCapable());
66+
assertFalse(availablePhoneNumbers.get(1).getSmsCapable());
67+
68+
assertEquals("+13333333333", availablePhoneNumbers.get(2).getFriendlyName());
69+
assertEquals("13333333333", availablePhoneNumbers.get(2).getPhoneNumber());
70+
assertEquals("US", availablePhoneNumbers.get(2).getIsoCountry());
71+
assertEquals("0.67", availablePhoneNumbers.get(2).getCost());
72+
assertTrue(availablePhoneNumbers.get(2).getVoiceCapable());
73+
assertTrue(availablePhoneNumbers.get(2).getSmsCapable());
74+
75+
}
76+
77+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
[
2+
{
3+
"friendlyName": "11111111111",
4+
"phoneNumber": "11111111111",
5+
"isoCountry": "US",
6+
"cost": "0.67",
7+
"voiceCapable": true,
8+
"smsCapable": true
9+
},
10+
{
11+
"friendlyName": "12222222222",
12+
"phoneNumber": "12222222222",
13+
"isoCountry": "US",
14+
"cost": "0.67",
15+
"voiceCapable": true,
16+
"smsCapable": false
17+
},
18+
{
19+
"friendlyName": "13333333333",
20+
"phoneNumber": "13333333333",
21+
"isoCountry": "US",
22+
"cost": "0.67",
23+
"voiceCapable": true,
24+
"smsCapable": true
25+
}
26+
]

0 commit comments

Comments
 (0)