Skip to content

Commit

Permalink
New 'applicationSid' filter value for IncomingPhoneNumbersFilter, uni…
Browse files Browse the repository at this point in the history
…t test and mybatis layer update (for test only)

Refers #2608
  • Loading branch information
otsakir committed Nov 9, 2017
1 parent 166694f commit 9271de5
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@ public class IncomingPhoneNumberFilter {
private final String accountSid;
private final String friendlyName;
private final String phoneNumber;
private final String applicationSid;
private final String sortBy;
private final String sortDirection;
private final Integer limit;
private final Integer offset;

public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String sortBy,
String sortDirection, Integer limit, Integer offset) {
public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String applicationSid, String sortBy,
String sortDirection, Integer limit, Integer offset) {
this.accountSid = accountSid;
this.friendlyName = friendlyName;
// The LIKE keyword uses '%' to match any (including 0) number of characters, and '_' to match exactly one character
Expand All @@ -48,13 +49,14 @@ public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String
}

this.phoneNumber = phoneNumber;
this.applicationSid = applicationSid;
this.sortBy = sortBy;
this.sortDirection = sortDirection;
this.limit = limit;
this.offset = offset;
}

public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber) {
public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String applicationSid) {
super();
this.accountSid = accountSid;
this.friendlyName = friendlyName;
Expand All @@ -65,6 +67,7 @@ public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String
phoneNumber = phoneNumber.replaceAll("\\*", "_");
}
this.phoneNumber = phoneNumber;
this.applicationSid = applicationSid;
this.sortBy = null;
this.sortDirection = null;
this.offset = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ public void createReadUpdateDelete() {
@Test
public void applicationFriendlyNameReturned() {
final IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
IncomingPhoneNumberFilter incomingPhoneNumberFilter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null,"phone_number","ASC",50,0);
IncomingPhoneNumberFilter incomingPhoneNumberFilter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, null, "phone_number","ASC",50,0);
List<IncomingPhoneNumber> phoneNumbers = dao.getIncomingPhoneNumbersByFilter(incomingPhoneNumberFilter);
Assert.assertEquals("Only a single phone number expected",1, phoneNumbers.size());
IncomingPhoneNumber number = phoneNumbers.get(0);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/*
* TeleStax, Open Source Cloud Communications
* Copyright 2011-2014, Telestax Inc and individual contributors
* by the @authors tag.
*
* This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/

package org.restcomm.connect.dao.mybatis;

import junit.framework.Assert;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.restcomm.connect.dao.IncomingPhoneNumbersDao;
import org.restcomm.connect.dao.entities.IncomingPhoneNumber;
import org.restcomm.connect.dao.entities.IncomingPhoneNumberFilter;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;

/**
* @author otsakir@gmail.com - Orestis Tsakiridis
*/
public class IncomingPhoneNumbersRetrievalTest extends DaoTest {
private static MybatisDaoManager manager;

@Before
public void before() throws Exception {
sandboxRoot = createTempDir("IncomingPhoneNumbersRetrievalTest");
String mybatisFilesPath = getClass().getResource("/applicationsDao").getFile();
setupSandbox(mybatisFilesPath, sandboxRoot);

String mybatisXmlPath = sandboxRoot.getPath() + "/mybatis_updated.xml";
final InputStream data = new FileInputStream(mybatisXmlPath);
final SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
final SqlSessionFactory factory = builder.build(data);
manager = new MybatisDaoManager();
manager.start(factory);
}

@After
public void after() throws Exception {
manager.shutdown();
removeTempDir(sandboxRoot.getAbsolutePath());
}

@Test
public void retrieveNumbersForApplication() {
IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
// application AP73926e7113fa4d95981aa96b76eca854 is bound with 3 numbers
IncomingPhoneNumberFilter filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP73926e7113fa4d95981aa96b76eca854", null, null, 100, 0);
List<IncomingPhoneNumber> numbers = dao.getIncomingPhoneNumbersByFilter(filter);
Assert.assertEquals(3, numbers.size());
// application AP00000000000000000000000000000004 is bound with no numbers
filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP00000000000000000000000000000004", null, null, 100, 0);
numbers = dao.getIncomingPhoneNumbersByFilter(filter);
Assert.assertEquals(0, numbers.size());
}

@Test
public void countTotalNumbersForApplication() {
IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
IncomingPhoneNumberFilter filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP73926e7113fa4d95981aa96b76eca854", null, null, 100, 0);
int total = dao.getTotalIncomingPhoneNumbers(filter);
Assert.assertEquals(3, total);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@
<if test="phoneNumber != null">
AND "n"."phone_number" like #{phoneNumber}
</if>
<if test="applicationSid != null">
AND ("n"."voice_application_sid" = #{applicationSid} OR "n"."sms_application_sid" = #{applicationSid} OR "n"."ussd_application_sid" = #{applicationSid} OR "n"."refer_application_sid" = #{applicationSid})
</if>
<choose>
<when test="sortBy == 'phone_number'">
order by "n"."phone_number" ${sortDirection}
Expand All @@ -112,6 +115,9 @@
<if test="phoneNumber != null">
AND "phone_number" like #{phoneNumber}
</if>
<if test="applicationSid != null">
AND ("voice_application_sid" = #{applicationSid} OR "sms_application_sid" = #{applicationSid} OR "ussd_application_sid" = #{applicationSid} OR "refer_application_sid" = #{applicationSid})
</if>

</select>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ protected Response getIncomingPhoneNumbers(final String accountSid, final PhoneN
return status(javax.ws.rs.core.Response.Status.BAD_REQUEST).build();
}

incomingPhoneNumberFilter = new IncomingPhoneNumberFilter(accountSid, friendlyNameFilter, phoneNumberFilter, sortBy,
incomingPhoneNumberFilter = new IncomingPhoneNumberFilter(accountSid, friendlyNameFilter, phoneNumberFilter, null, sortBy,
reverse, limit, offset);

final List<IncomingPhoneNumber> incomingPhoneNumbers = dao.getIncomingPhoneNumbersByFilter(incomingPhoneNumberFilter);
Expand Down

0 comments on commit 9271de5

Please sign in to comment.