def test_sendMultipleMessageEmailWithBulkGateway(self): self.nsadminHelper.configureGateway('BULK', 'localmail_BULK') params = [[ 0, "BULK", "test message 1", "autoemail" + randValues.getRandomMobileNumber() + "@gmail.com", ['RECEIVED_IN_QUEUE', 'SENT'] ], [ 1, "BULK", "test message 2", "autoemail" + randValues.getRandomMobileNumber() + "@gmail.com", ['RECEIVED_IN_QUEUE', 'SENT'] ], [ 2, "HIGH", "test message 3", "autoemail" + randValues.getRandomMobileNumber() + "@gmail.com", ['RECEIVED_IN_QUEUE', 'FAILED'] ]] self.nsObj.whitelistEmailIds( [params[0][3], params[1][3], params[2][3]]) msgObjList = [] for p in params: msgObj = NSAdminObject.message({ "messageClass": "EMAIL", "inboxId": p[0], "priority": p[1], "message": p[2], "receiver": p[3], "body": "test body" }) msgObjList.append(msgObj) resp = self.nsObj.sendMultipleMessages(msgObjList) for i in range(0, 3): msgId = resp[i] msgResp = self.nsObj.getMessagesById([msgId])[0] #inboxId = msgResp.inboxId msgParams = params[i] Assertion.constructAssertion(msgResp.status in msgParams[4], 'Messages status') Assertion.constructAssertion(msgResp.priority == msgParams[1], 'Messages priority') Assertion.constructAssertion(msgResp.message == msgParams[2], 'Message') Assertion.constructAssertion(msgResp.receiver == msgParams[3], 'Messages receiver') currentMonthTable = NSAdminHelper.getDataTableName() query = 'select nsadmin_id from ' + currentMonthTable + ' where nsadmin_id=' + str( msgId) dbResp = dbHelper.queryDB(query, 'nsadmin') Assertion.constructAssertion(dbResp[0][0] == msgId, 'Messages id') for p in params: msg = self.nsObj.getMessagesByReceiver(self.orgId, p[3]) Assertion.constructAssertion(msg[0].message == p[2], 'Assert getMessagesByReceiver')
def constructAddRecipientPayload(userType, numberOfUsers, customTags): payload = {} schema = 'firstName,lastName,' + str(userType) tagsForUsers = '' listOfUsers = [] for tags in range(1, customTags + 1): schema = schema + ',' + str('customTag' + str(tags)) tagsForUsers = tagsForUsers + ',' + 'tag' + str(tags) for eachUser in range(numberOfUsers): listOfUserType = userType.split(',') firstName = 'Test' + str(eachUser) lastName = 'Automation' + str(eachUser) mobile = None email = None for eachUserType in listOfUserType: if eachUserType.lower() == 'mobile': mobile = randValues.getRandomMobileNumber() elif eachUserType.lower() == 'email': email = randValues.randomEmailId() userDataToAppend = firstName + ',' + lastName for eachUserType in userType.split(','): if eachUserType == 'mobile' : userDataToAppend = userDataToAppend + ',' + mobile if eachUserType == 'email' : userDataToAppend = userDataToAppend + ',' + email userDataToAppend = userDataToAppend + tagsForUsers listOfUsers.append(userDataToAppend) payload['dataSource'] = 'CSV' payload['schema'] = schema payload['data'] = listOfUsers return payload
def test_sendMultipleMessageWithBulkGateway(self): self.nsadminHelper.configureGateway('BULK', 'valuefirstmock') params = [ [ 0, "BULK", "test message 1", randValues.getRandomMobileNumber(), ['RECEIVED_IN_QUEUE', 'SENT'] ], #[1, "BULK", "test message 2", randValues.getRandomMobileNumber(), ['RECEIVED_IN_QUEUE', 'SENT']], #[2, "HIGH", "test message 3", randValues.getRandomMobileNumber(), ['GTW_NOT_FOUND']] ] msgObjList = [] for p in params: msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": p[0], "priority": p[1], "message": p[2], "receiver": p[3] }) msgObjList.append(msgObj) resp = self.nsObj.sendMultipleMessages(msgObjList) for i in range(0, 3): msgId = resp[i] msgResp = self.nsObj.getMessagesById([msgId])[0] #inboxId = msgResp.inboxId msgParams = params[i] Assertion.constructAssertion(msgResp.status in msgParams[4], 'Messages status') Assertion.constructAssertion(msgResp.priority == msgParams[1], 'Messages priority') Assertion.constructAssertion(msgResp.message == msgParams[2], 'Message') Assertion.constructAssertion(msgResp.receiver == msgParams[3], 'Messages receiver')
def test_Create_And_Disable_Domain(self): contactInfoList = self.nsadminHelper.getDefaultContactInfo('SMS') domainName = str(randValues.getRandomMobileNumber())+'_SMS_'+str(self.orgId) DomainProperties = { 'orgId' : self.orgId, 'domainName' : domainName, 'description' : domainName, 'contactInfo' : contactInfoList } DomainProperties = NSAdminObject.domainProperties(DomainProperties) self.nsObj.insertDomainProperties(DomainProperties) domainPropertiesList = self.nsObj.getDomainPropertiesByOrg(self.orgId) for k in domainPropertiesList: if domainName == k.domainName and len(k.contactInfo) != 0: domainID = k.id contactInfoId0 = k.contactInfo[0].id contactInfoId1 = k.contactInfo[1].id break DomainProperties.contactInfo[0].value = '919845012346' DomainProperties.contactInfo[0].id = contactInfoId0 DomainProperties.contactInfo[0].domainPropId = domainID DomainProperties.contactInfo[1].id = contactInfoId1 DomainProperties.contactInfo[1].domainPropId = domainID DomainProperties.id = domainID self.nsObj.updateDomainProperties(DomainProperties) updatedDP = self.nsObj.getDomainPropertiesByID(domainID) Assertion.constructAssertion(updatedDP.contactInfo[0].value == '919845012346', 'updated value') self.nsObj.disableDomainProperties(domainID, self.orgId) deletedDP = self.nsObj.getDomainPropertiesByID(domainID) Assertion.constructAssertion(deletedDP.domainName == None, 'Diasbled domain')
def createSkippedPartialList(): user1 = randValues.getRandomMobileNumber() user2 = str(int(user1) + 1) user3 = str(int(user1) + 2) user4 = GetMonitoringDetails.getNDNCUser() user5= GetMonitoringDetails.getInvalidMobile() listInfo=GetMonitoringDetails.createListForSkippedUser([user1,user2,user3,user4,user5]) GetMonitoringDetails.markInactiveUser(user1,user2) return listInfo
def test_sendMultipleMessage(self): self.nsadminHelper.configureGateway('HIGH', 'cardboardfishmock') self.nsadminHelper.configureGateway('BULK', 'valuefirstmock') mobile1 = randValues.getRandomMobileNumber() mobile2 = randValues.getRandomMobileNumber() mobile3 = randValues.getRandomMobileNumber() params = [[0, "BULK", "test message 1", mobile1], [1, "BULK", "test message 2", mobile2], [2, "HIGH", "test message 3", mobile3]] msgObjList = [] for p in params: msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": p[0], "priority": p[1], "message": p[2], "receiver": p[3] }) msgObjList.append(msgObj) resp = self.nsObj.sendMultipleMessages(msgObjList) for i in range(0, 3): msgId = resp[i] msgResp = self.nsObj.getMessagesById([msgId])[0] #inboxId = msgResp.inboxId msgParams = params[i] Assertion.constructAssertion( msgResp.status in ['RECEIVED_IN_QUEUE', 'SENT'], 'Messages status') Assertion.constructAssertion(msgResp.priority == msgParams[1], 'Messages priority') Assertion.constructAssertion(msgResp.message == msgParams[2], 'Message') Assertion.constructAssertion(msgResp.receiver == msgParams[3], 'Messages receiver') msg1 = self.nsObj.getMessagesByReceiver(self.orgId, mobile1)[0] msg2 = self.nsObj.getMessagesByReceiver(self.orgId, mobile2)[0] Assertion.constructAssertion(msg1.message == 'test message 1', 'getMessagesByReceiver Message') Assertion.constructAssertion(msg2.message == 'test message 2', 'getMessagesByReceiver Message')
def test_getMessagesByUserOrReciever(self): mobile = randValues.getRandomMobileNumber() testMessage = "test message new" msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": 1, "priority": "BULK", "message": testMessage, "receiver": mobile }) nsadminId = self.nsObj.sendMessage(msgObj) resp = self.nsObj.getMessagesByReceiver(self.orgId, mobile) Assertion.constructAssertion(resp[0].message == testMessage, 'getMessagesByReceiver response') resp = self.nsObj.getMessagesByUserOrReciever(self.orgId, '', mobile) Assertion.constructAssertion(resp[0].message == testMessage, 'getMessagesByUserOrReciever response')
def createAndSendMessage(self, msgDict, unique = False): if unique == True: if msgDict['messageClass'] in ['SMS', 'VOICECALL'] : msgDict['receiver'] = randValues.getRandomMobileNumber() elif msgDict['messageClass'] == 'EMAIL': msgDict['body'] = "test body" msgDict['receiver'] = "*****@*****.**" else: if msgDict['messageClass'] in ['SMS', 'VOICECALL']: if not 'receiver' in msgDict: msgDict['receiver'] = "918116645500" elif msgDict['messageClass'] == 'EMAIL': msgDict['body'] = "test body" if not 'receiver' in msgDict: msgDict['receiver'] = "*****@*****.**" msgObj = NSAdminObject.message(msgDict) return self.nsObj.sendMessage(msgObj)
def Add(body={}, mobile=randValues.getRandomMobileNumber()): email = 'automail' + mobile + '@gmail.com' date = datetime.today().strftime('%Y-%m-%d %H:%M:%S') tmpDict = { 'root': { 'customer': { 'mobile': mobile, 'email': email, 'external_id': mobile, 'firstname': ("autofn_" + mobile)[:20], 'lastname': ("autoln_" + mobile)[:20], 'gender': 'M', 'registered_on': date } } } if body == {}: body = tmpDict else: body = Utils.mergeDict(tmpDict, body) return {'body': body, 'endPoint' : constant.config['customerAdd'], 'method' : 'POST', 'mobile': mobile, 'email' : email}
def getIdentiferValue(channel,pointsEnabled): if channel.lower() in ['mobile', 'sms']: return randValues.getRandomMobileNumber() if not pointsEnabled else list_Calls().getExistingUsers(1)[0][3] else: return list_Calls().getExistingUsers(1)[0][4]
def generateCouponUploadFile(self, identifier='userId', isUserTagged=False, isOnlyUser=False, noOfRecords=1, is_Invalid=[False, False], couponCodeCAPS=True): couponUploadFile = constant.luciS3FilePath filehandle = FileHelper(couponUploadFile) First = True data = [] filehandle.eraseContentFromFile() if isUserTagged and not isOnlyUser: filehandle.appendToFile('Coupon Code, issuedTo') for i in range(noOfRecords): if not couponCodeCAPS: couponCode = DracarysHelper.generateCouponCode().lower() else: couponCode = DracarysHelper.generateCouponCode() if First: duplicateCoupon = couponCode + ', ' + str( constant.config['usersInfo'][i][identifier]) First = False filehandle.appendToFile( couponCode + ', ' + str(constant.config['usersInfo'][i][identifier])) data.append(couponCode) if is_Invalid[0]: filehandle.appendToFile(duplicateCoupon) elif is_Invalid[1]: couponCode = DracarysHelper.generateCouponCode() if identifier == 'mobile': filehandle.appendToFile( couponCode + ', ' + str(randValues.getRandomMobileNumber())) elif identifier == 'email': filehandle.appendToFile(couponCode + ', ' + str(randValues.randomEmailId())) elif identifier in ['userId', 'externalId']: filehandle.appendToFile( couponCode + ', ' + str(randValues.randomInteger(digits=8))) elif isOnlyUser: filehandle.appendToFile('issuedTo') for i in range(noOfRecords): filehandle.appendToFile( str(constant.config['usersInfo'][i][identifier])) if is_Invalid[0]: filehandle.appendToFile( str(constant.config['usersInfo'][0][identifier])) elif is_Invalid[1]: if identifier == 'mobile': filehandle.appendToFile( str(randValues.getRandomMobileNumber())) elif identifier == 'email': filehandle.appendToFile(str(randValues.randomEmailId())) elif identifier in ['userId', 'externalId']: filehandle.appendToFile( str(randValues.randomInteger(digits=8))) else: filehandle.appendToFile('Coupon Code') for _ in range(noOfRecords): if not couponCodeCAPS: couponCode = DracarysHelper.generateCouponCode().lower() else: couponCode = DracarysHelper.generateCouponCode() if First: duplicateCoupon = couponCode filehandle.appendToFile(duplicateCoupon) data.append(duplicateCoupon) First = False else: filehandle.appendToFile(couponCode) data.append(couponCode) if is_Invalid[0]: filehandle.appendToFile(duplicateCoupon) elif is_Invalid[1]: filehandle.appendToFile( DracarysHelper.generateCouponCode(size=21)) return data
def Add(body={}, mobile=randValues.getRandomMobileNumber()): email = 'automail' + mobile + '@gmail.com' date = datetime.today().strftime('%Y-%m-%d %H:%M:%S') tmpDict = { "root": { "transaction": { "bill_client_id": "", "type": "regular", "number": 'AutomationTest' + str(int(time.time() * 100000)), "amount": "1000", "notes": "No line items", "gross_amount": "1000", "discount": "10", "customer": { "mobile": mobile, "email": email, "external_id": mobile, "firstname": ("autofn_" + mobile)[:20], "lastname": ("autoln_" + mobile)[:20], "type": "loyalty", }, "line_items": { 'line_item': [{ "attributes": { "attribute": { "name": "Shoes", "value": "Woodlands" } }, "serial": "83", "amount": "382866", "description": "Levis", "item_code": "Levis", "qty": "100", "rate": "5", "value": "500", "discount": "0", "notes": [] }, { "attributes": { "attribute": { "name": "Shoes", "value": "Woodlands" } }, "serial": "83", "amount": "382866", "description": "Levis", "item_code": "Levis", "qty": "100", "rate": "5", "value": "500", "discount": "0", "notes": [] }] } } } } if body == {}: body = tmpDict else: body = Utils.mergeDict(tmpDict, body) return { 'body': body, 'endPoint': constant.config['transactionAdd'], 'method': 'POST', 'mobile': mobile, 'email': email, 'transactionId': body['root']['transaction']['number'] }
class Test_sendMessage_SMS(): def setup_class(self): Logger.logSuiteName(str(self).split('.')[-1]) self.orgId = 1604 #constant.config['orgId'] self.cluster = constant.config['cluster'] def setup_method(self, method): self.nsObj = NSAdminHelper.getConnObj(newConnection=True) self.nsadminHelper = NSAdminHelper(self.orgId, 'SMS') self.nsadminHelper.disableDomainPropertiesGatewayMap() Logger.logMethodName(method.__name__) @pytest.mark.parametrize('priority, gateway', [('HIGH', 'cardboardfishmock'), ('BULK', 'valuefirstmock')]) def test_sendMessage_SMS_Sanity(self, priority, gateway): self.nsadminHelper.configureGateway(priority, gateway) msgDict = { "messageClass": "SMS", "priority": priority, "message": "test message with priority " + priority } resp = self.nsadminHelper.createAndSendMessage(msgDict) Assertion.constructAssertion(resp > 0, 'sendMessage output') resp = self.nsadminHelper.assertWithWaitUntil( resp, ['RECEIVED_IN_QUEUE', 'SENT'], 'Messages status ACK', 10) Assertion.constructAssertion(resp.gateway == gateway, 'gateway used for sending') Assertion.constructAssertion(resp.priority == priority, 'priority') def test_sendMessage_DefaultPriority(self): self.nsadminHelper.configureGateway("HIGH", "cardboardfishmock") msgDict = { "messageClass": "SMS", "priority": "DEFAULT", "message": "test message with priority DEFAULT" } msgId = self.nsadminHelper.createAndSendMessage(msgDict) resp = self.nsadminHelper.assertWithWaitUntil( msgId, ['RECEIVED_IN_QUEUE', 'SENT'], 'Messages status ACK', 10) Assertion.constructAssertion(resp.gateway == "cardboardfishmock", 'gateway used for sending') Assertion.constructAssertion(resp.priority == "HIGH", 'priority') @pytest.mark.parametrize('priority', [('HIGH'), ('BULK')]) def test_sendMessage_withoutGateway(self, priority): msgDict = { "messageClass": "SMS", "priority": priority, "message": "test message without gateway priority " + priority } msgId = self.nsadminHelper.createAndSendMessage(msgDict) self.nsadminHelper.assertWithWaitUntil(msgId, ['GTW_NOT_FOUND'], 'Messages status', 10) resp = self.nsObj.getMessageSendError(msgId) Assertion.constructAssertion("no configs for" in resp, 'Error message without gateway') def test_sendMessasge_SMS_InvalidReceiver(self): self.nsadminHelper.configureGateway("BULK", "valuefirstmock") msgDict = { "receiver": "invalid", "messageClass": "SMS", "priority": "BULK", "message": "test message with receiver invalid" } msgId = self.nsadminHelper.createAndSendMessage(msgDict) self.nsadminHelper.assertWithWaitUntil(msgId, ['GTW_NOT_FOUND'], 'Messages status', 10) resp = self.nsObj.getMessageSendError(msgId) Assertion.constructAssertion("no gw found after checking" in resp, 'Error message without gateway') msgDict = { "receiver": "", "messageClass": "SMS", "priority": "BULK", "message": "test message with empty receiver" } resp = self.nsadminHelper.createAndSendMessage(msgDict) Assertion.constructAssertion(resp == -1, 'sendMessage output') msgDict = { "messageClass": "SMS", "priority": "BULK", "message": "test message with empty receiver" } msgObj = NSAdminObject.message(msgDict) resp = self.nsObj.sendMessage(msgObj) Assertion.constructAssertion(resp == -1, 'sendMessage output') @pytest.mark.parametrize('priority, gateway', [('HIGH', 'cardboardfishmock'), ('BULK', 'valuefirstmock')]) def test_sendMessage_delayScheduledMessage(self, priority, gateway): self.nsadminHelper.configureGateway(priority, gateway) scheduledTimestamp = int(time.time() + 180) * 1000 # 2 mins delay msgDict = { "messageClass": "SMS", "priority": priority, "scheduledTimestamp": scheduledTimestamp, "message": "test message with delayed schedule" } msgId = self.nsadminHelper.createAndSendMessage(msgDict) self.nsadminHelper.assertWithWaitUntil(msgId, ['DELAYED_SCHEDULED'], 'Messages status', 10) Utils.sleep(180) self.nsadminHelper.assertWithWaitUntil( msgId, ['READ', 'RECEIVED_IN_QUEUE', 'SENT'], 'Messages status after delay', 10) def test_sendMultipleMessage(self): self.nsadminHelper.configureGateway('HIGH', 'cardboardfishmock') self.nsadminHelper.configureGateway('BULK', 'valuefirstmock') mobile1 = randValues.getRandomMobileNumber() mobile2 = randValues.getRandomMobileNumber() mobile3 = randValues.getRandomMobileNumber() params = [[0, "BULK", "test message 1", mobile1], [1, "BULK", "test message 2", mobile2], [2, "HIGH", "test message 3", mobile3]] msgObjList = [] for p in params: msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": p[0], "priority": p[1], "message": p[2], "receiver": p[3] }) msgObjList.append(msgObj) resp = self.nsObj.sendMultipleMessages(msgObjList) for i in range(0, 3): msgId = resp[i] msgResp = self.nsObj.getMessagesById([msgId])[0] #inboxId = msgResp.inboxId msgParams = params[i] Assertion.constructAssertion( msgResp.status in ['RECEIVED_IN_QUEUE', 'SENT'], 'Messages status') Assertion.constructAssertion(msgResp.priority == msgParams[1], 'Messages priority') Assertion.constructAssertion(msgResp.message == msgParams[2], 'Message') Assertion.constructAssertion(msgResp.receiver == msgParams[3], 'Messages receiver') msg1 = self.nsObj.getMessagesByReceiver(self.orgId, mobile1)[0] msg2 = self.nsObj.getMessagesByReceiver(self.orgId, mobile2)[0] Assertion.constructAssertion(msg1.message == 'test message 1', 'getMessagesByReceiver Message') Assertion.constructAssertion(msg2.message == 'test message 2', 'getMessagesByReceiver Message') def test_sendMultipleMessageWithBulkGateway(self): self.nsadminHelper.configureGateway('BULK', 'valuefirstmock') params = [ [ 0, "BULK", "test message 1", randValues.getRandomMobileNumber(), ['RECEIVED_IN_QUEUE', 'SENT'] ], #[1, "BULK", "test message 2", randValues.getRandomMobileNumber(), ['RECEIVED_IN_QUEUE', 'SENT']], #[2, "HIGH", "test message 3", randValues.getRandomMobileNumber(), ['GTW_NOT_FOUND']] ] msgObjList = [] for p in params: msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": p[0], "priority": p[1], "message": p[2], "receiver": p[3] }) msgObjList.append(msgObj) resp = self.nsObj.sendMultipleMessages(msgObjList) for i in range(0, 3): msgId = resp[i] msgResp = self.nsObj.getMessagesById([msgId])[0] #inboxId = msgResp.inboxId msgParams = params[i] Assertion.constructAssertion(msgResp.status in msgParams[4], 'Messages status') Assertion.constructAssertion(msgResp.priority == msgParams[1], 'Messages priority') Assertion.constructAssertion(msgResp.message == msgParams[2], 'Message') Assertion.constructAssertion(msgResp.receiver == msgParams[3], 'Messages receiver') def test_SMScharLimit(self): self.nsadminHelper.configureGateway('HIGH', 'cardboardfishmock') message160CharSize = "At Capillary, we continuously work to help our clients succeed in rapidly evolving markets through our world-class solutions, services and products - combining" msgDict = { "messageClass": "SMS", "priority": "HIGH", "message": message160CharSize } resp = self.nsadminHelper.createAndSendMessage(msgDict) currentMonthTable = NSAdminHelper.getTableName() query = 'select status, message_count, message from ' + currentMonthTable + ' where id=' + str( resp) resp = dbHelper.queryDB(query, 'nsadmin') Assertion.constructAssertion(resp[0][0] in [7, 35], 'Messages status') Assertion.constructAssertion(resp[0][2] == message160CharSize, '160 Char limit') Assertion.constructAssertion(resp[0][1] == 1, 'Message count') message320CharSize = "At Capillary, we continuously work to help our clients succeed in rapidly evolving markets through our world-class solutions, services and products. By combining big data with a robust, cloud-based analytics engine, we optimize the relevance and profitability of discounts and personalized offers to consumers in real time, significantly increasing both loyalty and sales" msgDict = { "messageClass": "SMS", "priority": "HIGH", "message": message320CharSize } resp = self.nsadminHelper.createAndSendMessage(msgDict) currentMonthTable = NSAdminHelper.getTableName() query = 'select status, message_count, message from ' + currentMonthTable + ' where id=' + str( resp) resp = dbHelper.queryDB(query, 'nsadmin') Assertion.constructAssertion(resp[0][0] in [7, 35], 'Messages status') Assertion.constructAssertion(resp[0][1] == 1, 'Message count without truncate') msgDict = { "messageClass": "SMS", "priority": "HIGH", "truncate": False, "message": message320CharSize } resp = self.nsadminHelper.createAndSendMessage(msgDict) currentMonthTable = NSAdminHelper.getTableName() query = 'select status, message_count, message from ' + currentMonthTable + ' where id=' + str( resp) resp = dbHelper.queryDB(query, 'nsadmin') Assertion.constructAssertion(resp[0][0] in [7, 35], 'Messages status') Assertion.constructAssertion(resp[0][2] == message320CharSize, '320 Char limit') Assertion.constructAssertion(resp[0][1] == 3, 'Message count') def test_SMSCharUTF8(self): self.nsadminHelper.configureGateway('HIGH', 'cardboardfishmock') messageArabic = "في شعري ، ونحن نعملمجمو باستمرار لمساعدة العملاء على تحقيق النجاح في الأسواق المتطورة بسرعة من خلال حلول عالمية" msgDict = { "messageClass": "SMS", "priority": "HIGH", "truncate": False, "message": messageArabic } resp = self.nsadminHelper.createAndSendMessage(msgDict) currentMonthTable = NSAdminHelper.getTableName() query = 'select status, message_count, message from ' + currentMonthTable + ' where id=' + str( resp) resp = dbHelper.queryDB(query, 'nsadmin') Assertion.constructAssertion(resp[0][0] in [7, 35], 'Messages status') Assertion.constructAssertion( resp[0][2].encode('utf8') == messageArabic, 'Arabic Char') Assertion.constructAssertion(resp[0][1] == 2, 'Message count') messageChinese = "在毛細管中,我們不斷努力,以幫助我們的客戶通過我們的世界級解決方案,服務和產品成功在快速發展的市場 - 將合併在毛細管中,我們不斷努力,以以- 將合併在毛細管中,我們不斷努力,以以" msgDict = { "messageClass": "SMS", "priority": "HIGH", "truncate": False, "message": messageChinese } resp = self.nsadminHelper.createAndSendMessage(msgDict) currentMonthTable = NSAdminHelper.getTableName() query = 'select status, message_count, message from ' + currentMonthTable + ' where id=' + str( resp) resp = dbHelper.queryDB(query, 'nsadmin') Assertion.constructAssertion(resp[0][0] in [7, 35], 'Messages status') Assertion.constructAssertion( resp[0][2].encode('utf8') == messageChinese, 'Chinese Char') Assertion.constructAssertion(resp[0][1] == 2, 'Message count') @pytest.mark.parametrize('mobileNumber', [('917976762433'), (randValues.getRandomMobileNumber())]) def est_ratelimit( self, mobileNumber ): # Same number if used will timeout within 24hrs # to be fixed self.nsadminHelper.configureGateway('BULK', 'valuefirstmock') msgObjList = [] for i in range(1, 10): msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": i, "clientId": 113, "priority": "BULK", "message": "test message " + str(i), "receiver": mobileNumber }) msgObjList.append(msgObj) self.nsObj.sendMultipleMessages(msgObjList) msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": 10, "clientId": 113, "priority": "BULK", "message": "test message 10", "receiver": mobileNumber }) nsadminId = self.nsObj.sendMessage(msgObj) resp = self.nsadminHelper.waitUntil(nsadminId, ['SENT']) if resp: Assertion.constructAssertion(resp.requestId != '', 'msg_ref_id is not generated') else: Assertion.constructAssertion(False, 'Failed to get status SENT') msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": 11, "clientId": 113, "priority": "BULK", "message": "test message 11", "receiver": mobileNumber }) nsadminId = self.nsObj.sendMessage(msgObj) resp = self.nsadminHelper.waitUntil(nsadminId, ['RATE_LIMIT_EXCEEDED']) if resp: Assertion.constructAssertion(resp.requestId == '', 'msg_ref_id is generated') else: Assertion.constructAssertion( False, 'Failed to get status RATE_LIMIT_EXCEEDED') def test_getMessagesByUserOrReciever(self): mobile = randValues.getRandomMobileNumber() testMessage = "test message new" msgObj = NSAdminObject.message({ "messageClass": "SMS", "inboxId": 1, "priority": "BULK", "message": testMessage, "receiver": mobile }) nsadminId = self.nsObj.sendMessage(msgObj) resp = self.nsObj.getMessagesByReceiver(self.orgId, mobile) Assertion.constructAssertion(resp[0].message == testMessage, 'getMessagesByReceiver response') resp = self.nsObj.getMessagesByUserOrReciever(self.orgId, '', mobile) Assertion.constructAssertion(resp[0].message == testMessage, 'getMessagesByUserOrReciever response') @pytest.mark.parametrize('priority, gateway', [('HIGH', 'cardboardfishmock'), ('BULK', 'valuefirstmock')]) def test_sendMessage_with_DomainGatewayMapID(self, priority, gateway): self.nsadminHelper.configureGateway(priority, gateway) dpgmId = self.nsadminHelper.getDomainGatewayMapId(gateway) msgDict = { "messageClass": "SMS", "priority": priority, "message": "test message with priority " + priority, "additionalHeaders": { "domain_gateway_map_id": str(dpgmId) } } msgId = self.nsadminHelper.createAndSendMessage(msgDict) resp = self.nsadminHelper.assertWithWaitUntil( msgId, ['RECEIVED_IN_QUEUE', 'SENT'], 'Messages status ACK', 10) Assertion.constructAssertion(resp.gateway == gateway, 'gateway used for sending') Assertion.constructAssertion(resp.priority == priority, 'priority') @pytest.mark.parametrize('priority, gateway', [('HIGH', 'cardboardfishmock'), ('BULK', 'valuefirstmock')]) def test_sendMessage_with_InvalidDomainGatewayMapID( self, priority, gateway): self.nsadminHelper.configureGateway(priority, gateway) dpgmId = self.nsadminHelper.getDomainGatewayMapId(gateway) msgDict = { "messageClass": "SMS", "priority": priority, "message": "test message with priority " + priority, "additionalHeaders": { "domain_gateway_map_id": "1" } } msgId = self.nsadminHelper.createAndSendMessage(msgDict) self.nsadminHelper.assertWithWaitUntil(msgId, ['GTW_NOT_FOUND'], 'Messages status', 10) @pytest.mark.parametrize('priority, gateway', [('HIGH', 'cardboardfishmock'), ('BULK', 'valuefirstmock')]) def test_sendMessage_with_DomainID(self, priority, gateway): domainId = self.nsadminHelper.addDefaultDomain() self.nsadminHelper.configureGateway(priority, gateway) msgDict = { "messageClass": "SMS", "priority": priority, "message": "test message with priority " + priority, "additionalHeaders": { "domain_prop_id": str(domainId) } } msgId = self.nsadminHelper.createAndSendMessage(msgDict) resp = self.nsadminHelper.assertWithWaitUntil( msgId, ['RECEIVED_IN_QUEUE', 'SENT'], 'Messages status ACK', 10) Assertion.constructAssertion(resp.gateway == gateway, 'gateway used for sending') Assertion.constructAssertion(resp.priority == priority, 'priority') @pytest.mark.parametrize('priority, gateway', [('HIGH', 'cardboardfishmock'), ('BULK', 'valuefirstmock')]) def test_sendMessage_with_InvalidDomainID(self, priority, gateway): domainId = self.nsadminHelper.addDefaultDomain() self.nsadminHelper.configureGateway(priority, gateway) msgDict = { "messageClass": "SMS", "priority": priority, "message": "test message with priority " + priority, "additionalHeaders": { "domain_prop_id": "1" } } msgId = self.nsadminHelper.createAndSendMessage(msgDict) self.nsadminHelper.assertWithWaitUntil(msgId, ['GTW_NOT_FOUND'], 'Messages status', 10) @pytest.mark.parametrize( 'priority, gateway, status', [('HIGH', 'cardboardfishmock', ['RECEIVED_IN_QUEUE', 'SENT']), ('BULK', 'valuefirstmock', ['MOBILE_WHITELISTED_BLOCKED'])]) def test_sendMessage_smsWhitelisting(self, priority, gateway, status): mobile = '919980142462' last_failed_on = datetime.now() DarknightHelper.getMongoConnection('whitelisting', 'mobile_status') domainId = self.nsadminHelper.addDefaultDomain() DarknightHelper.generateSmsWhitelistingData( { 'not_delivered': 4, 'last_failed_on': last_failed_on, "monthly_stats": [{ "year": last_failed_on.year, "month": last_failed_on.month, "not_delivered": 4, "total": 4 }] }, mobile) self.nsadminHelper.configureGateway(priority, gateway) msgDict = { "messageClass": "SMS", 'receiver': mobile, "priority": priority, "message": "test message with is_whitelisting_enabled " + priority, "additionalHeaders": { "is_whitelisting_enabled": "true" } } msgId1 = self.nsadminHelper.createAndSendMessage(msgDict) msgDict = { "messageClass": "SMS", 'receiver': mobile, "priority": priority, "message": "test message with is_whitelisting_enabled false" + priority, "additionalHeaders": { "is_whitelisting_enabled": "false" } } msgId2 = self.nsadminHelper.createAndSendMessage(msgDict) self.nsadminHelper.assertWithWaitUntil(msgId1, status, 'Messages status ACK', 10) self.nsadminHelper.assertWithWaitUntil(msgId2, ['RECEIVED_IN_QUEUE', 'SENT'], 'Messages status ACK', 10) #### Prod ### @pytest.mark.parametrize('priority, gateway', [('HIGH', 'solutionsinfinitrans'), ('BULK', 'solutionsinfinibulk_BULK')]) def test_sendMessage_SMS_UseSystemDefaultsGateway_India_More_Prod_Sanity( self, priority, gateway): self.nsadminHelper.configureGateway(priority, gateway) msgDict = { "messageClass": "SMS", "receiver": constant.config['prodMobile1'], "priority": priority, "message": "test message priority " + priority + " cluster:" + self.cluster } msgObj = NSAdminObject.message(msgDict) msgId = self.nsObj.sendMessage(msgObj) resp = self.nsadminHelper.assertWithWaitUntil( msgId, ['RECEIVED_IN_QUEUE', 'SENT'], 'Messages status ACK', 10) Assertion.constructAssertion(resp.gateway == gateway, 'gateway used for sending') Assertion.constructAssertion(resp.priority == priority, 'priority') @pytest.mark.parametrize( 'priority, gateway, username, tags', [('HIGH', 'puxuntrans', '7171', ['transaction', 'otp']), ('BULK', 'puxunbulk', '7174', ['campaign'])]) def test_sendMessage_SMS_China_Prod_Sanity(self, priority, gateway, username, tags): domainPropertiesId = self.nsadminHelper.addDefaultDomain() orgName = constant.config['orgName'] shortName = orgName + gateway connectionProperties = json.dumps({ "account": username, "apiKey": "203dfd2c4eb6f8eed0889bef5d7aa646", "factory": gateway, "dlrUrl": constant.config['dlrUrl'] + gateway }) properties = json.dumps({"scopes": tags, "countries": ["86"]}) gatewayOrgConfigs = { "orgId": self.orgId, "hostName": gateway, "shortName": shortName, "fullName": shortName, "username": username, "password": "******", "connectionProperties": connectionProperties, "serviceIp": "", "serviceUrl": "http://202.91.244.252:30001/yqx/v1/sms/multi_send", "statusCheckUrl": "http://202.91.244.252:30001/yqx/v1/sms/multi_send", "messageClass": "SMS", "messagePriority": priority, "properties": properties } gatewayOrgConfigs = NSAdminObject.gatewayOrgConfigs(gatewayOrgConfigs) domainProperties = self.nsObj.getDomainPropertiesByID( domainPropertiesId) domainPropertiesGatewayMap = { "orgId": self.orgId, "subDomain": shortName, "gatewayOrgConfigs": gatewayOrgConfigs, "domainProperties": domainProperties, "domainPropertiesId": domainPropertiesId, } domainPropertiesGatewayMap = NSAdminObject.domainPropertiesGatewayMap( domainPropertiesGatewayMap) self.nsObj.saveDomainPropertiesGatewayMap(domainPropertiesGatewayMap) self.nsadminHelper.domainGatewayValidate() msgDict = { "messageClass": "SMS", "receiver": constant.config['prodMobile3'], "priority": priority, "message": "test message priority " + priority + " cluster:" + self.cluster } msgObj = NSAdminObject.message(msgDict) msgId = self.nsObj.sendMessage(msgObj) resp = self.nsadminHelper.assertWithWaitUntil( msgId, ['RECEIVED_IN_QUEUE', 'SENT', 'DELIVERED'], 'Messages status ACK', 10) Assertion.constructAssertion(resp.gateway == shortName, 'gateway used for sending') Assertion.constructAssertion(resp.priority == priority, 'priority') @pytest.mark.parametrize( 'priority, gateway ,tags', [('HIGH', 'solutionsinfiniTrans', ['transaction', 'otp']), ('BULK', 'solutionsinfiniBulk', ['campaign'])]) def test_sendMessage_SMS_Eu_Prod_Sanity(self, priority, gateway, tags): domainPropertiesId = self.nsadminHelper.addDefaultDomain() orgName = constant.config['orgName'] shortName = orgName + gateway connectionProperties = json.dumps( {"dlrUrl": constant.config['dlrUrl'] + 'solutionsinfini'}) properties = json.dumps({"scopes": tags, "countries": ["44"]}) gatewayOrgConfigs = { "orgId": self.orgId, "hostName": "solutionsinfini", "shortName": shortName, "fullName": shortName, "username": "******", "password": "******", "connectionProperties": connectionProperties, "serviceIp": "", "serviceUrl": "http://global.sinfini.com/api/v0/xmlapi.php", "statusCheckUrl": "http://global.sinfini.com/api/v0/xmlapi.php", "messageClass": "SMS", "messagePriority": priority, "properties": properties } gatewayOrgConfigs = NSAdminObject.gatewayOrgConfigs(gatewayOrgConfigs) domainProperties = self.nsObj.getDomainPropertiesByID( domainPropertiesId) domainPropertiesGatewayMap = { "orgId": self.orgId, "subDomain": shortName, "gatewayOrgConfigs": gatewayOrgConfigs, "domainProperties": domainProperties, "domainPropertiesId": domainPropertiesId, } domainPropertiesGatewayMap = NSAdminObject.domainPropertiesGatewayMap( domainPropertiesGatewayMap) self.nsObj.saveDomainPropertiesGatewayMap(domainPropertiesGatewayMap) self.nsadminHelper.domainGatewayValidate() msgDict = { "messageClass": "SMS", "receiver": constant.config['prodMobile4'], "priority": priority, "message": "test message priority " + priority + " cluster:" + self.cluster } msgObj = NSAdminObject.message(msgDict) msgId = self.nsObj.sendMessage(msgObj) resp = self.nsadminHelper.assertWithWaitUntil( msgId, ['RECEIVED_IN_QUEUE', 'SENT', 'DELIVERED'], 'Messages status', 10) Assertion.constructAssertion(resp.gateway == shortName, 'gateway used for sending') Assertion.constructAssertion(resp.priority == priority, 'priority')