def test_veneno_skippedUser_couponAlreadyIssued_ProdSanity(self): try: self.couponConfigChange({'do_not_resend_existing_voucher':True}) time.sleep(70) messagePayloadToUpdate = { 'incentive':{ 'type':'COUPONS', 'voucherSeriesId':self.voucherId }, 'senderDetails':{ 'domainGatewayMapId':constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId':constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults':False, 'cdmaSenderId':constant.config['message_senders']['cdmaSenderId'] }, 'message' : 'This Message is Going to Skip Due to Coupon is not reusable : {{voucher}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody(self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId , communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType='skip', skippedReasons=['max coupon per user exceeded']).check() authorize.assertUserPresenceInSkippedTable(communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['MAX_COUPON_ISSUAL_PER_USER_EXCEEDED'], 'max coupon per user exceeded') except Exception, exp: Assertion.constructAssertion(False, exp)
def test_veneno_skippedUser_couponExpired(self): try: self.couponConfigChange({ 'fixedExpiryDate': int(time.time() * 1000 - 24 * 60 * 60 * 1000) }) time.sleep(70) messagePayloadToUpdate = { 'incentive': { 'type': 'COUPONS', 'voucherSeriesId': self.voucherId }, 'senderDetails': { 'domainGatewayMapId': constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId': constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults': False, 'cdmaSenderId': constant.config['message_senders']['cdmaSenderId'] }, 'message': 'This Message is Going to Skip Due to Coupon not issuable as its Expired : {{voucher}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage( self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest( self.campaignId, messageResponse['json']['entity']['messageId']) messageResponse, messagePayload = campaignMessage.createMessage( self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest( self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody( self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId, communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId( self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion( self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], skippedReasons=['coupon series expired']).check() authorize.assertUserPresenceInSkippedTable( communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['COUPON_EXPIRED'], 'coupon series expired') except Exception, exp: Assertion.constructAssertion(False, exp)
def test_veneno_skippedUser_invalidMobile(self): originalListId = self.listId originalBucketId = self.bucketId originalGroupVersionDetail = self.groupVersionResult try: messagePayloadToUpdate = { 'senderDetails':{ 'domainGatewayMapId':constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId':constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults':False, 'cdmaSenderId':constant.config['message_senders']['cdmaSenderId'] }, 'message' : 'This Message is Going to Skip Due Invalid User : {{optout}}' } invalidUserData = 'ndncFirstName,ndncLastName,{}'.format(dbCallsMessage.getInvalidUserMobileNumber()[0]) mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList({'name': 'IRIS_LIST_' + str(int(time.time() * 100000)), 'recipients':{'dataSource':'CSV', 'schema':'firstName,lastName,mobile', 'data':[invalidUserData]}}, campaignId=self.campaignId) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId(mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody(self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId , communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType='skip', skippedReasons=['Captured mobile for user seems to be invalid']).check() authorize.assertUserPresenceInSkippedTable(communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['INVALID_MOBILE'], 'Captured mobile for user seems to be invalid') except Exception, exp: Assertion.constructAssertion(False, exp)
def test_veneno_skippedUser_unsubscribed_ProdSanity(self): originalListId = self.listId originalBucketId = self.bucketId originalGroupVersionDetail = self.groupVersionResult try: messagePayloadToUpdate = { 'senderDetails':{ 'domainGatewayMapId':constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId':constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults':False, 'cdmaSenderId':constant.config['message_senders']['cdmaSenderId'] }, 'message' : 'This Message is Going to Skip Due Unsubscribe User : {{optout}}' } cusObj = InTouchAPI(Customer.Add()) mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList({'name': 'IRIS_LIST_' + str(int(time.time() * 100000)), 'recipients':{'dataSource':'CSV', 'schema':'firstName,lastName,mobile', 'data':['TestX,AutomationX,{}'.format(cusObj.params['mobile'])]}}, campaignId=self.campaignId) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId(mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] unsubscribeObj = InTouchAPI(Customer.unsubscribe(body={'root':{'subscription':{'mobile':cusObj.params['mobile']}}})) if unsubscribeObj.status_code == 200: messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody(self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId , communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType='skip', skippedReasons=['Captured mobile for user seems to be unsubscribed']).check() authorize.assertUserPresenceInSkippedTable(communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['UNSUBSCRIBED'], 'Captured mobile for user seems to be unsubscribed') else : raise Exception('Not Able To Unsubscribe using Intouch Call') except Exception, exp: Assertion.constructAssertion(False, exp)
def test_veneno_skippedUser_noStore_ProdSanity(self, storeType, errorType, errorMessage): originalListId = self.listId originalBucketId = self.bucketId originalGroupVersionDetail = self.groupVersionResult try: messagePayloadToUpdate = { 'senderDetails':{ 'domainGatewayMapId':constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId':constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults':False, 'cdmaSenderId':constant.config['message_senders']['cdmaSenderId'] }, 'message' : 'This Message is Going to Skip Due to Store Name Tag used :{{store_name}} {{optout}}', 'storeType' : storeType } mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList({}, campaignId=self.campaignId) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId(mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody(self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId , communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType='skip', skippedReasons=[errorMessage]).check() authorize.assertUserPresenceInSkippedTable(communicationDetailId, communicationDetailBucketId, errorType, errorMessage) except Exception, exp: Assertion.constructAssertion(False, exp)
def test_wechat_createMessage_Invalid_Payload(self, description, invalidpayload, statusCode, errorCode, errorMessage): try: payload = { 'message': construct.constructWechatMessageBody('plain') } payload.update({ 'channel': 'WECHAT', 'accountDetails': construct.constructAccountDetails() }) if 'data' == invalidpayload.keys()[0]: payload.pop(invalidpayload[invalidpayload.keys()[0]]) else: payload[invalidpayload.keys()[0]].pop( invalidpayload[invalidpayload.keys()[0]]) response, payload = campaignMessage.createMessage( self, payloadData=payload) campaignMessage.assertCreateMessage(response, statusCode, errorCode, errorMessage) except AssertionError, reason: Assertion.constructAssertion(False, reason)
def test_wechat_createMessage_Recurring(self, description, messageInfo): Logger.log( 'Actual ListId:{} and CampaignId:{} and used for Recurring listId:{} and campaignId:{}' .format( self.listId, self.campaignId, constant.config['message_recurring']['WECHAT']['listId'], constant.config['message_recurring']['WECHAT']['campaignId'])) actualListIdGettingUsedInAllCases = self.listId actualCampaignIdGettingUsedInAllCases = self.campaignId actualVoucherIdGettingUsedInAllCases = self.voucherId try: self.listId = constant.config['message_recurring']['WECHAT'][ 'listId'] self.campaignId = constant.config['message_recurring']['WECHAT'][ 'campaignId'] self.voucherId = constant.config['message_recurring']['WECHAT'][ 'voucherId'] response, payload = campaignMessage.createMessage( self, messageInfo=messageInfo) campaignMessage.assertCreateMessage(response, 200) campaignMessage.assertCreateMessageDbCalls( response['json']['entity']['messageId'], self.campaignId, payload) campaignMessage.updateDefaultMessageJsonWithMessageInfoValues( messageInfo, payload, response['json']['entity']['messageId']) except AssertionError, reason: Assertion.constructAssertion(False, reason)
def authorizeForRateLimit(self, listType): messageResponse, messagePayload = campaignMessage.createMessage( self, messageInfo=['SMS', ['IMMEDIATE'], ['PLAIN'], True]) authorizeResponse = authorize.makeAuthorizeRequest( str(self.testObjectForRateLimit['campaign']['id']), str(messageResponse['json']['entity']['messageId'])) return { 'campaignId': self.testObjectForRateLimit['campaign']['id'], 'listId': self.testObjectForRateLimit['list'][listType]['groupDetails'] ['id'], 'groupVersionResult': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails'], 'bucketId': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['bucket_id'], 'voucherId': None, 'strategy': None, 'messageInfo': ['SMS', ['IMMEDIATE'], ['PLAIN'], True], 'payload': messagePayload, 'messageId': str(messageResponse['json']['entity']['messageId']), 'authorizeResponse': authorizeResponse }
def test_wechat_createMessage_Points(self, description, messageInfo): response, payload = campaignMessage.createMessage( self, messageInfo=messageInfo) campaignMessage.assertCreateMessage(response, 200) campaignMessage.assertCreateMessageDbCalls( response['json']['entity']['messageId'], self.campaignId, payload) campaignMessage.updateDefaultMessageJsonWithMessageInfoValues( messageInfo, payload, response['json']['entity']['messageId'])
def test_veneno_skippedUser_noCouponForUser(self): try: mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList( campaignId=self.campaignId, numberOfUsers=2) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId( mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] self.couponConfigChange({'max_create': 1, 'max_redeem': 1}) time.sleep(70) messagePayloadToUpdate = { 'incentive': { 'type': 'COUPONS', 'voucherSeriesId': self.voucherId }, 'senderDetails': { 'domainGatewayMapId': constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId': constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults': False, 'cdmaSenderId': constant.config['message_senders']['cdmaSenderId'] }, 'message': 'This Message is Going to Skip Due to number of Issued coupon is 1 and users are 2 : {{voucher}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage( self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest( self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody( self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId, communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId( self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion( self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], skippedReasons=['max create for series exceeded']).check() authorize.assertUserPresenceInSkippedTable( communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors'] ['MAX_COUPON_ISSUAL_PER_SERIES_EXCEEDED'], 'max create for series exceeded') except Exception, exp: Assertion.constructAssertion(False, exp)
def test_authorize_sms_invalid_orgId(self, description, messageInfo, orgIdPassed, statusCode, errorCode, errorMessage): actualOrgIdGettingUsedThroughOut = constant.config['orgId'] try: response = campaignMessage.createMessage(self, messageInfo=messageInfo)[0] messageId = response['json']['entity']['messageId'] constant.config['orgId'] = orgIdPassed authorizeResult = authorize.makeAuthorizeRequest(self.campaignId, messageId) authorize.assertAuthorize(authorizeResult, statusCode, errorCode, errorMessage[0].format(self.campaignId)) except AssertionError, reason: Assertion.constructAssertion(False, reason)
def test_veneno_skippedUser_nonLoyaltyCustomer(self): originalListId = self.listId originalBucketId = self.bucketId originalGroupVersionDetail = self.groupVersionResult try: messagePayloadToUpdate = { 'senderDetails': { 'domainGatewayMapId': constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId': constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults': False, 'cdmaSenderId': constant.config['message_senders']['cdmaSenderId'] }, 'message': 'This Message is Going to Skip Due to Loyalty Tag used :{{loyalty_points}} {{optout}}' } mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList( {}, campaignId=self.campaignId) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId( mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] messageResponse, messagePayload = campaignMessage.createMessage( self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest( self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody( self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId, communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId( self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion( self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], skippedReasons=['Users are not registered in loyalty program' ]).check() authorize.assertUserPresenceInSkippedTable( communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['NON_LOYALTY_CUSTOMER'], 'Users are not registered in loyalty program') except Exception, exp: Assertion.constructAssertion(False, exp)
def test_authorize_sms_health_dashboard_without_Authorize(self, description, messageInfo, errorMessage): actualListIdGettingUsedInAllCases = self.listId actualCampaignIdGettingUsedInAllCases = self.campaignId try: self.listId = constant.config['message_recurring']['SMS']['listId'] self.campaignId = constant.config['message_recurring']['SMS']['campaignId'] authorizeResult = campaignMessage.createMessage(self, messageInfo=messageInfo)[0] messageId = authorizeResult['json']['entity']['messageId'] time.sleep(20) authorize.dbAssertAuthorize_HealthDashboardNotification(self.campaignId, messageId,ExpectedMsg=errorMessage, channel='campaign_authorized') except AssertionError, reason: Assertion.constructAssertion(False, reason)
def test_wechat_createMessage_Invalid_IncentivesType( self, description, payload, incentives, statusCode, errorCode, errorMessage): try: payload.update( {'templateId': self.templateIdDict[incentives.lower()]}) response, payload = campaignMessage.createMessage( self, payloadData=payload) campaignMessage.assertCreateMessage(response, statusCode, errorCode, errorMessage) except AssertionError, reason: Assertion.constructAssertion(False, reason)
def test_wechat_createMessage_Immediate_Plain_InvalidAccountDetails( self, description, payload, accountDetailsPassed, statusCode, errorCode, errorMessage): try: payload.update({accountDetailsPassed}) payload.update({'templateId': self.templateIdDict['plain']}) response, payload = campaignMessage.createMessage( self, payloadData=payload) campaignMessage.assertCreateMessage(response, statusCode, errorCode, errorMessage) except AssertionError, reason: Assertion.constructAssertion(False, reason)
def test_veneno_skippedUser_couponReedemed_ProdSanity(self): try: cusObj = InTouchAPI(Transaction.Add()) mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList({'name': 'IRIS_LIST_' + str(int(time.time() * 100000)), 'recipients':{'dataSource':'CSV', 'schema':'firstName,lastName,mobile', 'data':['TestX,AutomationX,{}'.format(cusObj.params['mobile'])]}}, campaignId=self.campaignId) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId(mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] self.couponConfigChange({'allow_multiple_vouchers_per_user':False,'same_user_multiple_redeem':False,'multiple_use':False}) time.sleep(70) messagePayloadToUpdate = { 'incentive':{ 'type':'COUPONS', 'voucherSeriesId':self.voucherId }, 'senderDetails':{ 'domainGatewayMapId':constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId':constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults':False, 'cdmaSenderId':constant.config['message_senders']['cdmaSenderId'] }, 'message' : 'This Message is Going to Skip Due to Coupon has already been redeemed : {{voucher}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) custObjResponse = cusObj.response # json.loads(cusObj.response.replace("'", "\"")) couponCode = dbCallsCoupons.getCouponCode(self.voucherId, custObjResponse['response']['transactions']['transaction'][0]['customer']['user_id']) coupObj = InTouchAPI(Coupon.Redeem(body={'root':{'coupon':{'transaction':{'number':cusObj.params['transactionId'], 'amount':100}}}}, mobile=cusObj.params['mobile'], code=couponCode)) messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody(self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId , communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType='skip', skippedReasons=['Coupon For user was already redeemed.']).check() authorize.assertUserPresenceInSkippedTable(communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['COUPON_REDEEMED'], 'Coupon For user was already redeemed.') except Exception, exp: Assertion.constructAssertion(False, exp)
def test_wechat_createMessage_Immediate_Plain_WithInvalidListId( self, description, payload, listIdPassed, statusCode, errorCode, errorMessage): actualListIdGettingUsedThroughOut = self.listId try: self.listId = listIdPassed payload.update({'templateId': self.templateIdDict['plain']}) response, payload = campaignMessage.createMessage( self, payloadData=payload) campaignMessage.assertCreateMessage(response, statusCode, errorCode, errorMessage) except AssertionError, reason: Assertion.constructAssertion(False, reason)
def authorizeCampaign(self, messageInfo, usePreCreatedMessages=False): if usePreCreatedMessages: Logger.log( 'Message Object Found Update so Getting Message Details To Make Authorize Request' ) messageObjectDetailsForMessageInfo = authorize.getMessageDetailsFromObject( messageInfo) Logger.log('Recieved Message Object :', messageObjectDetailsForMessageInfo) if messageObjectDetailsForMessageInfo == {}: Logger.log( 'As Message Object is Empty Creating a New Message to Authorize' ) return authorize.authorizeCampaign(self, messageInfo, False) authorizeResponse = authorize.makeAuthorizeRequest( messageObjectDetailsForMessageInfo['campaignId'], messageObjectDetailsForMessageInfo['messageId']) messageObjectDetailsForMessageInfo.update( {'authorizeResponse': authorizeResponse}) Logger.log( 'Authorized Succesfully and constructed MessageDefault Info Object as :', messageObjectDetailsForMessageInfo) return messageObjectDetailsForMessageInfo else: Logger.log('Creating a New Message And Authorizing') messageResponse, messagePayload = campaignMessage.createMessage( self, messageInfo=messageInfo) Logger.log('Message Created for Authorize with Id :{}'.format( messageResponse['json']['entity']['messageId'])) campaignMessage.assertCreateMessage(messageResponse, 200) Logger.log('Making Authorize Post Request') authorizeResponse = authorize.makeAuthorizeRequest( str(self.campaignId), str(messageResponse['json']['entity']['messageId'])) messageObjectDetailsForMessageInfo = { 'campaignId': self.campaignId, 'listId': self.listId, 'groupVersionResult': self.groupVersionResult, 'bucketId': self.bucketId, 'voucherId': self.voucherId, 'strategy': self.strategy, 'messageInfo': messageInfo, 'payload': messagePayload, 'messageId': str(messageResponse['json']['entity']['messageId']), 'authorizeResponse': authorizeResponse } Logger.log( 'Authorized Succesfully and constructed MessageDefault Info Object as :', messageObjectDetailsForMessageInfo) return messageObjectDetailsForMessageInfo
def test_authorize_sms_NSAdmin(self, description, messageInfo , statusCode, errorCode, errorMessage): self.nsHelper.disableDomainPropertiesGatewayMap() self.nsHelper.addDefaultGateway('BULK') gatewayId = self.nsHelper.getDomainGatewayMapId('valuefirstmock') payload = {'senderDetails': {'gsmSenderId': 919845012345, 'useSystemDefaults': messageInfo[1], 'cdmaSenderId': 919845012345, 'domainGatewayMapId' : gatewayId}, 'channel': 'SMS'} response = campaignMessage.createMessage(self, payloadData=payload)[0] messageId = response['json']['entity']['messageId'] authorizeResult = authorize.makeAuthorizeRequest(self.campaignId, messageId) tmpErrorMessage = [] for error in errorMessage: tmpErrorMessage.append(error.format(gatewayId)) authorize.assertAuthorize(authorizeResult, statusCode, errorCode, tmpErrorMessage)
def test_authorize_sms_max_user_limit(self, description, messageInfo , errorMessage): actualListIdGettingUsedInAllCases = self.listId actualCampaignIdGettingUsedInAllCases = self.campaignId try: self.listId = constant.config['message_recurring']['SMS']['listId'] self.campaignId = constant.config['message_recurring']['SMS']['campaignId'] payloadData = construct.constructCreateMessageBody(self.listId, messageInfo[0], messageInfo[1], messageInfo[2], messageInfo[3]) payloadData['schedule'].update({'maxUsers': 1}) response = campaignMessage.createMessage(self, payloadData=payloadData)[0] messageId = response['json']['entity']['messageId'] authorize.makeAuthorizeRequest(self.campaignId, messageId) time.sleep(80) authorize.dbAssertAuthorize_HealthDashboardNotification(self.campaignId, messageId, ExpectedMsg=errorMessage, channel='users_recurring_campaign') except AssertionError, reason: Assertion.constructAssertion(False, reason)
def test_veneno_inboxUser_GroupTagPresent(self): messagePayloadToUpdate = { 'senderDetails': { 'domainGatewayMapId': constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId': constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults': False, 'cdmaSenderId': constant.config['message_senders']['cdmaSenderId'] }, 'message': 'This Message is Going to Inbox Due to group Tag Present in List :{{group_tag_1}} {{optout}}' } mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList( { 'groupTags': ['TestAutomation_GroupTag1', 'TestAutomation_GroupTag2'] }, campaignId=self.campaignId) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId( mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] messageResponse, messagePayload = campaignMessage.createMessage( self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest( self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody( self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId, communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId( self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message']).check() authorize.assertUserPresenceInNsAdminTable( communicationDetailId, communicationDetailBucketId, 1)
def test_veneno_skippedUser_noGroupTagPresent_ProdSanity(self): messagePayloadToUpdate = { 'senderDetails':{ 'domainGatewayMapId':constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId':constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults':False, 'cdmaSenderId':constant.config['message_senders']['cdmaSenderId'] }, 'message' : 'This Message is Going to Skip Due to group Tag Not Present in List :{{group_tag_1}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody(self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId , communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType='skip', skippedReasons=['Group Tag Not Present']).check() authorize.assertUserPresenceInSkippedTable(communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['GROUP_TAG_NOT_PRESENT'], 'Group Tag Not Present')
def test_wechat_createMessage_using_templateIds(self, description, payload, incentives): payload.update({'templateId': self.templateIdDict[incentives.lower()]}) if incentives.lower() == 'coupons': payload.update({ 'incentive': construct.constructIncentivesForCreateMessage( [incentives, self.voucherId]) }) if incentives.lower() != 'plain' and incentives.lower() != 'coupons': payload.update({ 'incentive': construct.constructIncentivesForCreateMessage([incentives]) }) response, payload = campaignMessage.createMessage(self, payload) campaignMessage.assertCreateMessage(response, 200) campaignMessage.assertCreateMessageDbCalls( response['json']['entity']['messageId'], self.campaignId, payload)
def test_authorize_sms_Domain_not_available(self, description, messageInfo , errorMessage): self.nsHelper.disableDomainPropertiesGatewayMap() self.nsHelper.addDefaultGateway('BULK') gatewayId = self.nsHelper.getDomainGatewayMapId('valuefirstmock') actualListIdGettingUsedInAllCases = self.listId actualCampaignIdGettingUsedInAllCases = self.campaignId try: self.listId = constant.config['message_recurring']['SMS']['listId'] self.campaignId = constant.config['message_recurring']['SMS']['campaignId'] payloadData = construct.constructCreateMessageBody(self.listId, messageInfo[0], messageInfo[1], messageInfo[2], messageInfo[3]) payloadData.update({'senderDetails': {'gsmSenderId': int(senderIds['gsm_sender_id']), 'useSystemDefaults': True, 'cdmaSenderId': int(senderIds['cdma_sender_id']), 'domainGatewayMapId' : gatewayId}, 'channel': 'SMS'}) response = campaignMessage.createMessage(self, payloadData=payloadData)[0] messageId = response['json']['entity']['messageId'] authorizeResult = authorize.makeAuthorizeRequest(self.campaignId, messageId) authorize.dbAssertAuthorize_HealthDashboardNotification(self.campaignId, messageId, ExpectedMsg=errorMessage, channel='campaign_authorized') except AssertionError, reason: Assertion.constructAssertion(False, reason)
def messageAuthorizeWithoutAssertions(self): messagePayloadToUpdate = { 'incentive': { 'type': 'COUPONS', 'voucherSeriesId': self.voucherId }, 'senderDetails': { 'domainGatewayMapId': constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId': constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults': False, 'cdmaSenderId': constant.config['message_senders']['cdmaSenderId'] }, 'message': 'This Message is Going to Skip Due to Coupon issuable : {{voucher}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage( self, payloadData=messagePayloadToUpdate) authorize.makeAuthorizeRequest( self.campaignId, messageResponse['json']['entity']['messageId'])
def test_veneno_inboxUser_CustomFiledValue_ProdSanity(self): obj = InTouchAPI(Customer.Add(body={'root':{'customer':{'custom_fields':{'field':{'name':'gender', 'value':'Male'}}}}})) mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList({'name': 'IRIS_LIST_' + str(int(time.time() * 100000)), 'recipients':{'dataSource':'CSV', 'schema':'firstName,lastName,mobile', 'data':['TestX,AutomationX,{}'.format(obj.params['mobile'])]}}, campaignId=self.campaignId) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId(mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] messagePayloadToUpdate = { 'senderDetails':{ 'domainGatewayMapId':constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId':constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults':False, 'cdmaSenderId':constant.config['message_senders']['cdmaSenderId'] }, 'message' : 'This Message is Going to Inbox Due to custom Field Value : {{custom_field.gender}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody(self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId , communicationDetailBucketId , communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType='skip').check() authorize.assertUserPresenceInNsAdminTable(communicationDetailId , communicationDetailBucketId, 1)
def test_authorize_sms_invalid_campaignId(self, description, messageInfo, campaignIdPassed, statusCode, errorCode, errorMessage): response = campaignMessage.createMessage(self, messageInfo=messageInfo)[0] messageId = response['json']['entity']['messageId'] authorizeResult = authorize.makeAuthorizeRequest(campaignIdPassed, messageId) authorize.assertAuthorize(authorizeResult, statusCode, errorCode, errorMessage)
def test_authorize_sms_expired_campaign(self, description, messageInfo, payload, statusCode, errorCode, errorMessage): response = campaignMessage.createMessage(self, messageInfo=messageInfo)[0] messageId = response['json']['entity']['messageId'] campaigns.updateCampaign(payload, campaignId=self.campaignId) authorizeResult = authorize.makeAuthorizeRequest(self.campaignId, messageId) authorize.assertAuthorize(authorizeResult, statusCode, errorCode, errorMessage[0].format(self.campaignId))
def messageAuthorize(self, skippedError=[], isSkippedMessage=False, couponConfig=None): if couponConfig is not None: VenenoHelper.couponConfigChange(self, couponConfig) messagePayloadToUpdate = { 'incentive': { 'type': 'COUPONS', 'voucherSeriesId': self.voucherId }, 'senderDetails': { 'domainGatewayMapId': constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId': constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults': False, 'cdmaSenderId': constant.config['message_senders']['cdmaSenderId'] }, 'message': 'This Message is Going to Skip Due to Coupon issuable : {{voucher}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage( self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest( self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = VenenoHelper.getAuthorizeResultBody( self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) if not isSkippedMessage: communicationDetailId, communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId( self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion( self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType=self.testControlType).check() authorize.assertUserPresenceInNsAdminTable( communicationDetailId, communicationDetailBucketId, int(communicationDetailExpectedCount)) else: communicationDetailId, communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId( self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion( self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], skippedReasons=[skippedError[1]], testControlType=self.testControlType).check() authorize.assertUserPresenceInSkippedTable( communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors'][skippedError[0]], skippedError[1]) return communicationDetailId, communicationDetailBucketId, communicationDetailExpectedCount
def test_authorize_sms_invalid_messageId(self, description, messageInfo, messageIdPassed, statusCode, errorCode, errorMessage): campaignMessage.createMessage(self, messageInfo=messageInfo)[0] authorizeResult = authorize.makeAuthorizeRequest(self.campaignId, messageIdPassed) authorize.assertAuthorize(authorizeResult, statusCode, errorCode, errorMessage)