From b7e0193151f7b153b0e82e2d41187b3b07024629 Mon Sep 17 00:00:00 2001 From: AMIT KUMAR <amit.kumar@tarento.com> Date: Fri, 20 Aug 2021 11:19:18 +0530 Subject: [PATCH] Issue #SC-2309 feat:Added requestcontext to sms provider methods (#916) * Issue #SC-2309 feat:Added requestcontext to sms provider methods * Issue #SC-2309 feat:Added requestcontext to sms provider methods * Issue #SC-2309 feat:Added requestcontext to sms provider methods --- .../sms/provider/ISmsProvider.java | 7 +- .../sms/providerimpl/Msg91SmsProvider.java | 83 ++++++++++--------- .../providerimpl/NICGatewaySmsProvider.java | 19 +++-- .../notification/sms/Message91GetSMSTest.java | 7 +- .../notification/sms/Message91Test.java | 62 +++++++------- .../notification/sms/Msg91PostMethodTest.java | 13 +-- .../sms/NICGatewaySmsProviderTest.java | 3 +- .../user/UserOnboardingNotificationActor.java | 2 +- .../notification/NotificationService.java | 2 +- .../src/main/java/org/sunbird/util/Util.java | 19 ++--- .../java/org/sunbird/util/otp/OTPUtil.java | 2 +- .../test/java/org/sunbird/util/UtilTest.java | 30 +++++++ .../org/sunbird/util/otp/OTPUtilTest.java | 6 +- 13 files changed, 145 insertions(+), 110 deletions(-) diff --git a/core/notification-utils/src/main/java/org/sunbird/notification/sms/provider/ISmsProvider.java b/core/notification-utils/src/main/java/org/sunbird/notification/sms/provider/ISmsProvider.java index 0d4c6dd1a..f76ff8d1a 100644 --- a/core/notification-utils/src/main/java/org/sunbird/notification/sms/provider/ISmsProvider.java +++ b/core/notification-utils/src/main/java/org/sunbird/notification/sms/provider/ISmsProvider.java @@ -3,6 +3,7 @@ package org.sunbird.notification.sms.provider; import java.util.List; import java.util.Map; import org.sunbird.notification.utils.SmsTemplateUtil; +import org.sunbird.request.RequestContext; public interface ISmsProvider { @@ -25,7 +26,7 @@ public interface ISmsProvider { * @param smsText Sms text * @return boolean */ - boolean send(String phoneNumber, String smsText); + boolean send(String phoneNumber, String smsText, RequestContext context); /** * This method will send SMS on user provider country code, basically it will override the value @@ -36,7 +37,7 @@ public interface ISmsProvider { * @param smsText * @return boolean */ - boolean send(String phoneNumber, String countryCode, String smsText); + boolean send(String phoneNumber, String countryCode, String smsText, RequestContext context); /** * This method will send the SMS to list of phone number at the same time. default country code @@ -46,5 +47,5 @@ public interface ISmsProvider { * @param smsText Sms text * @return boolean */ - boolean send(List<String> phoneNumber, String smsText); + boolean send(List<String> phoneNumber, String smsText, RequestContext context); } diff --git a/core/notification-utils/src/main/java/org/sunbird/notification/sms/providerimpl/Msg91SmsProvider.java b/core/notification-utils/src/main/java/org/sunbird/notification/sms/providerimpl/Msg91SmsProvider.java index c6dde3616..757702a85 100644 --- a/core/notification-utils/src/main/java/org/sunbird/notification/sms/providerimpl/Msg91SmsProvider.java +++ b/core/notification-utils/src/main/java/org/sunbird/notification/sms/providerimpl/Msg91SmsProvider.java @@ -1,11 +1,5 @@ package org.sunbird.notification.sms.providerimpl; -import java.io.IOException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.StatusLine; import org.apache.http.client.methods.CloseableHttpResponse; @@ -19,6 +13,14 @@ import org.sunbird.notification.sms.Sms; import org.sunbird.notification.sms.provider.ISmsProvider; import org.sunbird.notification.utils.JsonUtil; import org.sunbird.notification.utils.PropertiesCache; +import org.sunbird.request.RequestContext; + +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; public class Msg91SmsProvider implements ISmsProvider { private static LoggerUtil logger = new LoggerUtil(Msg91SmsProvider.class); @@ -59,19 +61,19 @@ public class Msg91SmsProvider implements ISmsProvider { } @Override - public boolean send(String phoneNumber, String smsText) { + public boolean send(String phoneNumber, String smsText, RequestContext context) { if ("POST".equalsIgnoreCase(smsMethodType)) { - return sendSmsUsingPost(phoneNumber, smsText); + return sendSmsUsingPost(phoneNumber, smsText, context); } - return sendSmsGetMethod(phoneNumber, smsText); + return sendSmsGetMethod(phoneNumber, smsText, context); } @Override - public boolean send(String phoneNumber, String countryCode, String smsText) { + public boolean send(String phoneNumber, String countryCode, String smsText, RequestContext context) { if ("POST".equalsIgnoreCase(smsMethodType)) { - return sendSmsUsingPost(phoneNumber, smsText); + return sendSmsUsingPost(phoneNumber, smsText, context); } - return sendSmsGetMethod(phoneNumber, smsText); + return sendSmsGetMethod(phoneNumber, smsText, context); } /** @@ -81,9 +83,9 @@ public class Msg91SmsProvider implements ISmsProvider { * @param smsText String * @return boolean */ - private boolean sendSmsUsingPost(String mobileNumber, String smsText) { - logger.debug("Msg91SmsProvider@Sending " + smsText + " to mobileNumber " + mobileNumber); - logger.debug( + private boolean sendSmsUsingPost(String mobileNumber, String smsText, RequestContext context) { + logger.debug(context,"Msg91SmsProvider@Sending " + smsText + " to mobileNumber " + mobileNumber); + logger.debug(context, "Msg91SmsProvider@SMS Provider parameters \n" + "Gateway - " + baseUrl @@ -113,11 +115,11 @@ public class Msg91SmsProvider implements ISmsProvider { if (validateSettings(mobileNumber, smsText)) { String tempMobileNumber = removePlusFromMobileNumber(mobileNumber); - logger.debug("Msg91SmsProvider - after removePlusFromMobileNumber " + tempMobileNumber); + logger.debug(context, "Msg91SmsProvider - after removePlusFromMobileNumber " + tempMobileNumber); // add dlt template id header String templateId = getTemplateId(smsText); path = baseUrl + postUrl + "?DLT_TE_ID=" + templateId; - logger.debug("Msg91SmsProvider -Executing request - " + path); + logger.debug(context, "Msg91SmsProvider -Executing request - " + path); HttpPost httpPost = new HttpPost(path); @@ -126,7 +128,7 @@ public class Msg91SmsProvider implements ISmsProvider { // add authkey header httpPost.setHeader("authkey", authKey); - logger.debug("Msg91SmsProvider -request header- " + httpPost.getAllHeaders()); + logger.debug(context, "Msg91SmsProvider -request header- " + httpPost.getAllHeaders()); List<String> mobileNumbers = new ArrayList<>(); mobileNumbers.add(tempMobileNumber); @@ -144,7 +146,7 @@ public class Msg91SmsProvider implements ISmsProvider { String providerDetailsString = JsonUtil.toJson(providerDetails); if (!JsonUtil.isStringNullOREmpty(providerDetailsString)) { - logger.debug("Msg91SmsProvider - Body - " + providerDetailsString); + logger.debug(context, "Msg91SmsProvider - Body - " + providerDetailsString); HttpEntity entity = new ByteArrayEntity(providerDetailsString.getBytes(StandardCharsets.UTF_8)); @@ -154,7 +156,7 @@ public class Msg91SmsProvider implements ISmsProvider { StatusLine sl = response.getStatusLine(); response.close(); if (sl.getStatusCode() != 200) { - logger.info( + logger.info(context, "SMS code for " + tempMobileNumber + " could not be sent: " @@ -162,19 +164,20 @@ public class Msg91SmsProvider implements ISmsProvider { + " - " + sl.getReasonPhrase()); } + logger.info(context, "Status code for Msg91SmsProvider : "+sl.getStatusCode()); return sl.getStatusCode() == 200; } else { return false; } } else { - logger.debug("Msg91SmsProvider - Some mandatory parameters are empty!"); + logger.debug(context, "Msg91SmsProvider - Some mandatory parameters are empty!"); return false; } } catch (IOException e) { - logger.error("Error occurred :", e); + logger.error(context, "Error occurred :", e); return false; } catch (Exception e) { - logger.info("Msg91SmsProvider - Error in coverting providerDetails to string!"); + logger.info(context, "Msg91SmsProvider - Error in converting providerDetails to string!"); return false; } finally { closeHttpResource(httpClient); @@ -188,7 +191,7 @@ public class Msg91SmsProvider implements ISmsProvider { * @param smsText String * @return boolean */ - public boolean sendSmsGetMethod(String mobileNumber, String smsText) { + public boolean sendSmsGetMethod(String mobileNumber, String smsText, RequestContext context) { CloseableHttpClient httpClient = null; try { httpClient = HttpClients.createDefault(); @@ -197,9 +200,8 @@ public class Msg91SmsProvider implements ISmsProvider { String tempMobileNumber = removePlusFromMobileNumber(mobileNumber); - logger.debug("Msg91SmsProvider - after removePlusFromMobileNumber " + tempMobileNumber); + logger.debug(context, "Msg91SmsProvider - after removePlusFromMobileNumber " + tempMobileNumber); - logger.debug("Inside GET"); path = getCompletePath( baseUrl + getUrl, @@ -209,7 +211,7 @@ public class Msg91SmsProvider implements ISmsProvider { authKey, URLEncoder.encode(getDoubleEncodedSMS(smsText), "UTF-8")); - logger.debug("Msg91SmsProvider -Executing request - " + path); + logger.debug(context, "Msg91SmsProvider -Executing request - " + path); HttpGet httpGet = new HttpGet(path); @@ -225,14 +227,15 @@ public class Msg91SmsProvider implements ISmsProvider { + " - " + sl.getReasonPhrase()); } + logger.info(context, "Status code for Msg91SmsProvider : "+sl.getStatusCode()); return sl.getStatusCode() == 200; } else { - logger.debug("Msg91SmsProvider - Some mandatory parameters are empty!"); + logger.debug(context, "Msg91SmsProvider - Some mandatory parameters are empty!"); return false; } } catch (IOException e) { - logger.error("Error occurred : ", e); + logger.error(context, "Error occurred : ", e); return false; } finally { closeHttpResource(httpClient); @@ -325,10 +328,10 @@ public class Msg91SmsProvider implements ISmsProvider { } @Override - public boolean send(List<String> phoneNumber, String smsText) { + public boolean send(List<String> phoneNumber, String smsText, RequestContext context) { List<String> phoneNumberList = null; - logger.debug("Msg91SmsProvider@Sending " + smsText + " to mobileNumber "); - logger.debug( + logger.debug(context, "Msg91SmsProvider@Sending " + smsText + " to mobileNumber "); + logger.debug(context, "Msg91SmsProvider@SMS Provider parameters \n" + "Gateway - " + baseUrl @@ -349,12 +352,12 @@ public class Msg91SmsProvider implements ISmsProvider { + smsRoute + "\n"); if (JsonUtil.isStringNullOREmpty(smsText)) { - logger.debug("can't sent empty msg."); + logger.debug(context, "can't sent empty msg."); return false; } phoneNumberList = validatePhoneList(phoneNumber); if (phoneNumberList == null || phoneNumberList.isEmpty()) { - logger.debug("can't sent msg with empty phone list."); + logger.debug(context, "can't sent msg with empty phone list."); return false; } CloseableHttpClient httpClient = null; @@ -362,11 +365,10 @@ public class Msg91SmsProvider implements ISmsProvider { httpClient = HttpClients.createDefault(); String path = null; - logger.debug("Inside POST"); // add dlt template id header String templateId = getTemplateId(smsText); path = baseUrl + postUrl + "?DLT_TE_ID=" + templateId; - logger.debug("Msg91SmsProvider -Executing request - " + path); + logger.debug(context, "Msg91SmsProvider -Executing request - " + path); HttpPost httpPost = new HttpPost(path); // add content-type headers @@ -387,7 +389,7 @@ public class Msg91SmsProvider implements ISmsProvider { String providerDetailsString = JsonUtil.toJson(providerDetails); if (!JsonUtil.isStringNullOREmpty(providerDetailsString)) { - logger.debug("Msg91SmsProvider - Body - " + providerDetailsString); + logger.debug(context, "Msg91SmsProvider - Body - " + providerDetailsString); HttpEntity entity = new ByteArrayEntity(providerDetailsString.getBytes(StandardCharsets.UTF_8)); @@ -396,7 +398,7 @@ public class Msg91SmsProvider implements ISmsProvider { StatusLine sl = response.getStatusLine(); response.close(); if (sl.getStatusCode() != 200) { - logger.info( + logger.info(context, "SMS code for " + phoneNumberList + " could not be sent: " @@ -404,16 +406,17 @@ public class Msg91SmsProvider implements ISmsProvider { + " - " + sl.getReasonPhrase()); } + logger.info(context, "Status code for Msg91SmsProvider : "+sl.getStatusCode()); return sl.getStatusCode() == 200; } else { return false; } } catch (IOException e) { - logger.error("error in converting providerDetails to String", e); + logger.error(context,"error in converting providerDetails to String", e); return false; } catch (Exception e) { - logger.error("Msg91SmsProvider : send : error in converting providerDetails to String", e); + logger.error(context, "Msg91SmsProvider : send : error in converting providerDetails to String", e); return false; } finally { closeHttpResource(httpClient); diff --git a/core/notification-utils/src/main/java/org/sunbird/notification/sms/providerimpl/NICGatewaySmsProvider.java b/core/notification-utils/src/main/java/org/sunbird/notification/sms/providerimpl/NICGatewaySmsProvider.java index 92c1ebfc7..5ce390d79 100644 --- a/core/notification-utils/src/main/java/org/sunbird/notification/sms/providerimpl/NICGatewaySmsProvider.java +++ b/core/notification-utils/src/main/java/org/sunbird/notification/sms/providerimpl/NICGatewaySmsProvider.java @@ -12,6 +12,7 @@ import org.sunbird.logging.LoggerUtil; import org.sunbird.notification.sms.provider.ISmsProvider; import org.sunbird.notification.utils.JsonUtil; import org.sunbird.notification.utils.PropertiesCache; +import org.sunbird.request.RequestContext; public class NICGatewaySmsProvider implements ISmsProvider { private static LoggerUtil logger = new LoggerUtil(NICGatewaySmsProvider.class); @@ -28,27 +29,27 @@ public class NICGatewaySmsProvider implements ISmsProvider { } @Override - public boolean send(String phoneNumber, String smsText) { - return sendSms(phoneNumber, smsText); + public boolean send(String phoneNumber, String smsText, RequestContext context) { + return sendSms(phoneNumber, smsText, context); } @Override - public boolean send(String phoneNumber, String countryCode, String smsText) { - return sendSms(phoneNumber, smsText); + public boolean send(String phoneNumber, String countryCode, String smsText, RequestContext context) { + return sendSms(phoneNumber, smsText, context); } @Override - public boolean send(List<String> phoneNumbers, String smsText) { + public boolean send(List<String> phoneNumbers, String smsText, RequestContext context) { phoneNumbers .stream() .forEach( phone -> { - sendSms(phone, smsText); + sendSms(phone, smsText, context); }); return true; } - public boolean sendSms(String mobileNumber, String smsText) { + public boolean sendSms(String mobileNumber, String smsText, RequestContext context) { try { String recipient = mobileNumber; if (recipient.length() == 10) { @@ -79,13 +80,13 @@ public class NICGatewaySmsProvider implements ISmsProvider { ObjectMapper mapper = new ObjectMapper(); Map<String, Object> resultMap; resultMap = mapper.readValue(response, Map.class); - logger.info("NICGatewaySmsProvider:Result:" + resultMap); + logger.info(context,"NICGatewaySmsProvider:Result:" + resultMap); return true; } else { return false; } } catch (Exception ex) { - logger.error("Exception occurred while sending sms.", ex); + logger.error(context,"Exception occurred while sending sms.", ex); return false; } } diff --git a/core/notification-utils/src/test/java/org/sunbird/notification/sms/Message91GetSMSTest.java b/core/notification-utils/src/test/java/org/sunbird/notification/sms/Message91GetSMSTest.java index 235292eb1..175f1907e 100644 --- a/core/notification-utils/src/test/java/org/sunbird/notification/sms/Message91GetSMSTest.java +++ b/core/notification-utils/src/test/java/org/sunbird/notification/sms/Message91GetSMSTest.java @@ -4,6 +4,7 @@ import org.junit.Assert; import org.junit.Test; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.sunbird.notification.sms.providerimpl.Msg91SmsProvider; +import org.sunbird.request.RequestContext; @PowerMockIgnore({"javax.management.*", "javax.net.ssl.*", "javax.security.*"}) public class Message91GetSMSTest extends BaseMessageTest { @@ -11,21 +12,21 @@ public class Message91GetSMSTest extends BaseMessageTest { // @Test public void testSendSmsGetMethodSuccess() { Msg91SmsProvider megObj = new Msg91SmsProvider(); - boolean response = megObj.sendSmsGetMethod("4321111111", "say hai!"); + boolean response = megObj.sendSmsGetMethod("4321111111", "say hai!", new RequestContext()); Assert.assertTrue(response); } @Test public void testSendSmsGetMethodFailureWithoutMessage() { Msg91SmsProvider megObj = new Msg91SmsProvider(); - boolean response = megObj.sendSmsGetMethod("4321111111", ""); + boolean response = megObj.sendSmsGetMethod("4321111111", "", new RequestContext()); Assert.assertFalse(response); } @Test public void testSendSmsGetMethodFailureWithEmptySpace() { Msg91SmsProvider megObj = new Msg91SmsProvider(); - boolean response = megObj.sendSmsGetMethod("4321111111", " "); + boolean response = megObj.sendSmsGetMethod("4321111111", " ", new RequestContext()); Assert.assertFalse(response); } } diff --git a/core/notification-utils/src/test/java/org/sunbird/notification/sms/Message91Test.java b/core/notification-utils/src/test/java/org/sunbird/notification/sms/Message91Test.java index 715203bed..dc983caec 100644 --- a/core/notification-utils/src/test/java/org/sunbird/notification/sms/Message91Test.java +++ b/core/notification-utils/src/test/java/org/sunbird/notification/sms/Message91Test.java @@ -1,7 +1,5 @@ package org.sunbird.notification.sms; -import java.util.ArrayList; -import java.util.List; import org.junit.Assert; import org.junit.FixMethodOrder; import org.junit.Test; @@ -14,6 +12,10 @@ import org.powermock.modules.junit4.PowerMockRunner; import org.sunbird.notification.sms.provider.ISmsProvider; import org.sunbird.notification.sms.providerimpl.Msg91SmsProvider; import org.sunbird.notification.utils.SMSFactory; +import org.sunbird.request.RequestContext; + +import java.util.ArrayList; +import java.util.List; @FixMethodOrder(MethodSorters.NAME_ASCENDING) @RunWith(PowerMockRunner.class) @@ -48,10 +50,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(RequestContext.class))) .thenReturn(true); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("9666666666", "test sms"); + boolean response = object.send("9666666666", "test sms", new RequestContext()); Assert.assertTrue(response); } @@ -60,10 +62,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(false); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("(966) 3890-445", "test sms 122"); + boolean response = object.send("(966) 3890-445", "test sms 122", new RequestContext()); Assert.assertFalse(response); } @@ -72,10 +74,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(true); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("919666666666", "test sms 122"); + boolean response = object.send("919666666666", "test sms 122", new RequestContext()); Assert.assertTrue(response); } @@ -84,10 +86,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(RequestContext.class))) .thenReturn(true); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("+919666666666", "test sms 122"); + boolean response = object.send("+919666666666", "test sms 122", new RequestContext()); Assert.assertTrue(response); } @@ -96,10 +98,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(false); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("", "test sms 122"); + boolean response = object.send("", "test sms 122", new RequestContext()); Assert.assertFalse(response); } @@ -108,10 +110,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(false); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("9663890445", ""); + boolean response = object.send("9663890445", "", new RequestContext()); Assert.assertFalse(response); } @@ -120,10 +122,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(false); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("", ""); + boolean response = object.send("", "", new RequestContext()); Assert.assertFalse(response); } @@ -132,10 +134,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(RequestContext.class))) .thenReturn(false); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("981se12345", "some message"); + boolean response = object.send("981se12345", "some message", new RequestContext()); Assert.assertFalse(response); } @@ -144,10 +146,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(String.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(true); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("1111111111", "some message"); + boolean response = object.send("1111111111", "some message", new RequestContext()); Assert.assertTrue(response); } @@ -158,10 +160,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); PowerMockito.when( msg91SmsProvider.send( - Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class))) + Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class), Mockito.any(RequestContext.class))) .thenReturn(true); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("1234567898", "91", "some message"); + boolean response = object.send("1234567898", "91", "some message", new RequestContext()); Assert.assertTrue(response); } @@ -172,10 +174,10 @@ public class Message91Test extends BaseMessageTest { PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); PowerMockito.when( msg91SmsProvider.send( - Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class))) + Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(true); ISmsProvider object = SMSFactory.getInstance(); - boolean response = object.send("0000000000", "+91", "some message"); + boolean response = object.send("0000000000", "+91", "some message", new RequestContext()); Assert.assertTrue(response); } @@ -184,13 +186,13 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(List.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(List.class), Mockito.any(String.class), Mockito.any(RequestContext.class))) .thenReturn(true); ISmsProvider object = SMSFactory.getInstance(); List<String> phones = new ArrayList<>(); phones.add("1234567898"); phones.add("1111111111"); - boolean response = object.send(phones, "some message"); + boolean response = object.send(phones, "some message", new RequestContext()); Assert.assertTrue(response); } @@ -199,13 +201,13 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(List.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(List.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(false); ISmsProvider object = SMSFactory.getInstance(); List<String> phones = new ArrayList<>(); phones.add("12345678"); phones.add("11111"); - boolean response = object.send(phones, "some message"); + boolean response = object.send(phones, "some message", new RequestContext()); Assert.assertFalse(response); } @@ -214,13 +216,13 @@ public class Message91Test extends BaseMessageTest { PowerMockito.mockStatic(SMSFactory.class); ISmsProvider msg91SmsProvider = PowerMockito.mock(Msg91SmsProvider.class); PowerMockito.when(SMSFactory.getInstance()).thenReturn(msg91SmsProvider); - PowerMockito.when(msg91SmsProvider.send(Mockito.any(List.class), Mockito.any(String.class))) + PowerMockito.when(msg91SmsProvider.send(Mockito.any(List.class), Mockito.any(String.class),Mockito.any(RequestContext.class))) .thenReturn(false); ISmsProvider object = SMSFactory.getInstance(); List<String> phones = new ArrayList<>(); phones.add("12345678"); phones.add("11111"); - boolean response = object.send(phones, " "); + boolean response = object.send(phones, " ", new RequestContext()); Assert.assertFalse(response); } } diff --git a/core/notification-utils/src/test/java/org/sunbird/notification/sms/Msg91PostMethodTest.java b/core/notification-utils/src/test/java/org/sunbird/notification/sms/Msg91PostMethodTest.java index 921751fcd..fdc7ebda3 100644 --- a/core/notification-utils/src/test/java/org/sunbird/notification/sms/Msg91PostMethodTest.java +++ b/core/notification-utils/src/test/java/org/sunbird/notification/sms/Msg91PostMethodTest.java @@ -27,6 +27,7 @@ import org.sunbird.notification.sms.providerimpl.Msg91SmsProvider; import org.sunbird.notification.utils.PropertiesCache; import org.sunbird.notification.utils.SMSFactory; import org.sunbird.notification.utils.SmsTemplateUtil; +import org.sunbird.request.RequestContext; @FixMethodOrder(MethodSorters.NAME_ASCENDING) @RunWith(PowerMockRunner.class) @@ -104,7 +105,7 @@ public class Msg91PostMethodTest { Msg91SmsProvider megObj = new Msg91SmsProvider(); String sms = "OTP to reset your password on instance is 456123. This is valid for 30 minutes only."; - boolean response = megObj.send("4321111111", sms); + boolean response = megObj.send("4321111111", sms, new RequestContext()); Assert.assertTrue(response); } @@ -128,7 +129,7 @@ public class Msg91PostMethodTest { Msg91SmsProvider megObj = new Msg91SmsProvider(); String sms = "OTP to verify your phone number on instance is 456123. This is valid for 30 minutes only."; - boolean response = megObj.send("4321111111", sms); + boolean response = megObj.send("4321111111", sms, new RequestContext()); Assert.assertFalse(response); } @@ -155,7 +156,7 @@ public class Msg91PostMethodTest { List<String> phoneList = new ArrayList<>(); phoneList.add("5464654653"); phoneList.add("7897951543"); - boolean response = megObj.send(phoneList, sms); + boolean response = megObj.send(phoneList, sms, new RequestContext()); Assert.assertTrue(response); } @@ -182,7 +183,7 @@ public class Msg91PostMethodTest { List<String> phoneList = new ArrayList<>(); phoneList.add("5464654653"); phoneList.add("7897951543"); - boolean response = megObj.send(phoneList, sms); + boolean response = megObj.send(phoneList, sms, new RequestContext()); Assert.assertFalse(response); } @@ -206,7 +207,7 @@ public class Msg91PostMethodTest { Msg91SmsProvider megObj = new Msg91SmsProvider(); String sms = "OTP to verify your phone number on instance is 456123. This is valid for 30 minutes only."; - boolean response = megObj.send("4321111111", "+91", sms); + boolean response = megObj.send("4321111111", "+91", sms, new RequestContext()); Assert.assertTrue(response); } @@ -230,7 +231,7 @@ public class Msg91PostMethodTest { Msg91SmsProvider megObj = new Msg91SmsProvider(); String sms = "OTP to verify your phone number on instance is 456123. This is valid for 30 minutes only."; - boolean response = megObj.send("4321111111", "+91", sms); + boolean response = megObj.send("4321111111", "+91", sms, new RequestContext()); Assert.assertFalse(response); } } diff --git a/core/notification-utils/src/test/java/org/sunbird/notification/sms/NICGatewaySmsProviderTest.java b/core/notification-utils/src/test/java/org/sunbird/notification/sms/NICGatewaySmsProviderTest.java index 1abb6a47f..d4ea38671 100644 --- a/core/notification-utils/src/test/java/org/sunbird/notification/sms/NICGatewaySmsProviderTest.java +++ b/core/notification-utils/src/test/java/org/sunbird/notification/sms/NICGatewaySmsProviderTest.java @@ -27,6 +27,7 @@ import org.sunbird.notification.sms.providerimpl.NICGatewaySmsProvider; import org.sunbird.notification.utils.PropertiesCache; import org.sunbird.notification.utils.SMSFactory; import org.sunbird.notification.utils.SmsTemplateUtil; +import org.sunbird.request.RequestContext; import org.sunbird.util.ProjectUtil; @FixMethodOrder(MethodSorters.NAME_ASCENDING) @@ -96,7 +97,7 @@ public class NICGatewaySmsProviderTest { NICGatewaySmsProvider megObj = new NICGatewaySmsProvider(); String sms = "OTP to reset your password on instance is 456123. This is valid for 30 minutes only."; - boolean response = megObj.send("4321111111", sms); + boolean response = megObj.send("4321111111", sms, new RequestContext()); Assert.assertFalse(response); } } diff --git a/service/src/main/java/org/sunbird/actor/user/UserOnboardingNotificationActor.java b/service/src/main/java/org/sunbird/actor/user/UserOnboardingNotificationActor.java index 600c00341..b42ee0236 100644 --- a/service/src/main/java/org/sunbird/actor/user/UserOnboardingNotificationActor.java +++ b/service/src/main/java/org/sunbird/actor/user/UserOnboardingNotificationActor.java @@ -61,7 +61,7 @@ public class UserOnboardingNotificationActor extends BaseActor { } if (StringUtils.isNotBlank((String) requestMap.get(JsonKey.PHONE))) { - Util.sendSMS(requestMap); + Util.sendSMS(requestMap, request.getRequestContext()); } SSOManager ssoManager = SSOServiceFactory.getInstance(); if (StringUtils.isBlank((String) requestMap.get(JsonKey.PASSWORD))) { diff --git a/service/src/main/java/org/sunbird/service/notification/NotificationService.java b/service/src/main/java/org/sunbird/service/notification/NotificationService.java index 36a2fd203..5c0924ec7 100644 --- a/service/src/main/java/org/sunbird/service/notification/NotificationService.java +++ b/service/src/main/java/org/sunbird/service/notification/NotificationService.java @@ -95,7 +95,7 @@ public class NotificationService { context, "NotificationService:sendSMS: Sending sendSMS to = " + phones.size() + " phones"); try { ISmsProvider smsProvider = SMSFactory.getInstance(); - return smsProvider.send(phones, smsText); + return smsProvider.send(phones, smsText, context); } catch (Exception e) { logger.error( context, diff --git a/service/src/main/java/org/sunbird/util/Util.java b/service/src/main/java/org/sunbird/util/Util.java index aff03ce98..b21f25b44 100644 --- a/service/src/main/java/org/sunbird/util/Util.java +++ b/service/src/main/java/org/sunbird/util/Util.java @@ -774,13 +774,13 @@ public final class Util { } } - public static void sendSMS(Map<String, Object> userMap) { + public static void sendSMS(Map<String, Object> userMap, RequestContext context) { if (StringUtils.isNotBlank((String) userMap.get(JsonKey.PHONE))) { String envName = ProjectUtil.getConfigValue(JsonKey.SUNBIRD_INSTALLATION_DISPLAY_NAME); setRequiredActionLink(userMap); if (StringUtils.isBlank((String) userMap.get(JsonKey.SET_PASSWORD_LINK)) && StringUtils.isBlank((String) userMap.get(JsonKey.VERIFY_EMAIL_LINK))) { - logger.info("Util:sendSMS: SMS not sent as generated link is empty"); + logger.info(context, "Util:sendSMS: SMS not sent as generated link is empty"); return; } Map<String, String> smsTemplate = new HashMap<>(); @@ -791,8 +791,8 @@ public final class Util { if (StringUtils.isBlank(sms)) { sms = PropertiesCache.getInstance().getProperty(JsonKey.SUNBIRD_DEFAULT_WELCOME_MSG); } - logger.info("SMS text : " + sms); - String countryCode = ""; + logger.debug(context, "SMS text : " + sms); + String countryCode; if (StringUtils.isBlank((String) userMap.get(JsonKey.COUNTRY_CODE))) { countryCode = PropertiesCache.getInstance().getProperty(JsonKey.SUNBIRD_DEFAULT_COUNTRY_CODE); @@ -800,14 +800,9 @@ public final class Util { countryCode = (String) userMap.get(JsonKey.COUNTRY_CODE); } ISmsProvider smsProvider = SMSFactory.getInstance(); - logger.info("SMS text : " + sms + " with phone " + (String) userMap.get(JsonKey.PHONE)); - boolean response = smsProvider.send((String) userMap.get(JsonKey.PHONE), countryCode, sms); - logger.info("Response from smsProvider : " + response); - if (response) { - logger.info("Welcome Message sent successfully to ." + (String) userMap.get(JsonKey.PHONE)); - } else { - logger.info("Welcome Message failed for ." + (String) userMap.get(JsonKey.PHONE)); - } + logger.debug(context, "SMS text : " + sms + " with phone " + userMap.get(JsonKey.PHONE)); + boolean response = smsProvider.send((String) userMap.get(JsonKey.PHONE), countryCode, sms, context); + logger.info(context, "Response from smsProvider : " + response); } } diff --git a/service/src/main/java/org/sunbird/util/otp/OTPUtil.java b/service/src/main/java/org/sunbird/util/otp/OTPUtil.java index fd32d008d..ec433a581 100644 --- a/service/src/main/java/org/sunbird/util/otp/OTPUtil.java +++ b/service/src/main/java/org/sunbird/util/otp/OTPUtil.java @@ -114,7 +114,7 @@ public final class OTPUtil { + " with phone = " + otpMap.get(JsonKey.PHONE)); - boolean response = smsProvider.send((String) otpMap.get(JsonKey.PHONE), countryCode, sms); + boolean response = smsProvider.send((String) otpMap.get(JsonKey.PHONE), countryCode, sms, context); logger.info( context, diff --git a/service/src/test/java/org/sunbird/util/UtilTest.java b/service/src/test/java/org/sunbird/util/UtilTest.java index d51e926b3..a5c99e0fd 100644 --- a/service/src/test/java/org/sunbird/util/UtilTest.java +++ b/service/src/test/java/org/sunbird/util/UtilTest.java @@ -24,6 +24,8 @@ import org.sunbird.common.factory.EsClientFactory; import org.sunbird.common.inf.ElasticSearchService; import org.sunbird.helper.ServiceFactory; import org.sunbird.keys.JsonKey; +import org.sunbird.notification.sms.provider.ISmsProvider; +import org.sunbird.notification.utils.SMSFactory; import org.sunbird.request.RequestContext; import org.sunbird.response.Response; import org.sunbird.service.organisation.OrgService; @@ -37,6 +39,8 @@ import scala.concurrent.Promise; ElasticSearchRestHighImpl.class, ElasticSearchHelper.class, CassandraOperationImpl.class, + SMSFactory.class, + ISmsProvider.class }) @PowerMockIgnore({ "javax.management.*", @@ -142,6 +146,32 @@ public class UtilTest { Assert.assertNotNull(response); } + @Test + public void sendSMSTest() { + PowerMockito.mockStatic(SMSFactory.class); + ISmsProvider smsProvider = PowerMockito.mock(ISmsProvider.class); + when(SMSFactory.getInstance()).thenReturn(smsProvider); + when(smsProvider.send(Mockito.anyString(),Mockito.anyString(), Mockito.anyString(), Mockito.any(RequestContext.class))).thenReturn(true); + Map<String, Object> map = new HashMap<>(); + map.put(JsonKey.PHONE, "9999999999"); + map.put(JsonKey.SET_PASSWORD_LINK,"resetPasswordLink"); + map.put(JsonKey.VERIFY_EMAIL_LINK,"emailVerifyLink"); + Util.sendSMS(map, new RequestContext()); + Assert.assertNotNull(map); + } + + @Test + public void sendSMSTest2() { + PowerMockito.mockStatic(SMSFactory.class); + ISmsProvider smsProvider = PowerMockito.mock(ISmsProvider.class); + when(SMSFactory.getInstance()).thenReturn(smsProvider); + when(smsProvider.send(Mockito.anyString(),Mockito.anyString(), Mockito.anyString(), Mockito.any(RequestContext.class))).thenReturn(true); + Map<String, Object> map = new HashMap<>(); + map.put(JsonKey.PHONE, "9999999999"); + Util.sendSMS(map, new RequestContext()); + Assert.assertNotNull(map); + } + public static Map<String, Object> getEsResponseMap() { Map<String, Object> map = new HashMap<>(); map.put(JsonKey.IS_TENANT, true); diff --git a/service/src/test/java/org/sunbird/util/otp/OTPUtilTest.java b/service/src/test/java/org/sunbird/util/otp/OTPUtilTest.java index 58f01878e..924b25625 100644 --- a/service/src/test/java/org/sunbird/util/otp/OTPUtilTest.java +++ b/service/src/test/java/org/sunbird/util/otp/OTPUtilTest.java @@ -58,7 +58,7 @@ public class OTPUtilTest { ISmsProvider smsProvider = PowerMockito.mock(ISmsProvider.class); PowerMockito.mockStatic(SMSFactory.class); when(SMSFactory.getInstance()).thenReturn(smsProvider); - when(smsProvider.send(Mockito.anyString(),Mockito.anyString(),Mockito.anyString())).thenReturn(true); + when(smsProvider.send(Mockito.anyString(),Mockito.anyString(),Mockito.anyString(), Mockito.any(RequestContext.class))).thenReturn(true); Map<String, Object> otpMap = new HashMap<>(); otpMap.put(JsonKey.PHONE,"9742511111"); otpMap.put(JsonKey.TEMPLATE_ID,"someTemplateId"); @@ -79,7 +79,7 @@ public class OTPUtilTest { ISmsProvider smsProvider = PowerMockito.mock(ISmsProvider.class); PowerMockito.mockStatic(SMSFactory.class); when(SMSFactory.getInstance()).thenReturn(smsProvider); - when(smsProvider.send(Mockito.anyString(),Mockito.anyString(),Mockito.anyString())).thenReturn(true); + when(smsProvider.send(Mockito.anyString(),Mockito.anyString(),Mockito.anyString(), Mockito.any(RequestContext.class))).thenReturn(true); Map<String, Object> otpMap = new HashMap<>(); otpMap.put(JsonKey.PHONE,"9742511111"); otpMap.put(JsonKey.OTP_EXPIRATION_IN_MINUTES,"30"); @@ -99,7 +99,7 @@ public class OTPUtilTest { ISmsProvider smsProvider = PowerMockito.mock(ISmsProvider.class); PowerMockito.mockStatic(SMSFactory.class); when(SMSFactory.getInstance()).thenReturn(smsProvider); - when(smsProvider.send(Mockito.anyString(),Mockito.anyString(),Mockito.anyString())).thenReturn(true); + when(smsProvider.send(Mockito.anyString(),Mockito.anyString(),Mockito.anyString(), Mockito.any(RequestContext.class))).thenReturn(true); Map<String, Object> otpMap = new HashMap<>(); otpMap.put(JsonKey.PHONE,"9742511111"); otpMap.put(JsonKey.TEMPLATE_ID,JsonKey.WARD_LOGIN_OTP_TEMPLATE_ID); -- GitLab