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_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_unsubscribed(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'], 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_couponReedemed(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'], 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_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'], 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_noGroupTagPresent(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'], skippedReasons=['Group Tag Not Present']).check() authorize.assertUserPresenceInSkippedTable( communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['GROUP_TAG_NOT_PRESENT'], 'Group Tag Not Present')
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_noStore(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'], skippedReasons=[errorMessage]).check() authorize.assertUserPresenceInSkippedTable( communicationDetailId, communicationDetailBucketId, errorType, errorMessage) except Exception, exp: Assertion.constructAssertion(False, exp)
def test_veneno_inboxUser_incentives_generic_ProdSanity( self, description, messageInfo): authorizeResult = authorize.authorizeCampaign(self, messageInfo, False) authorize.assertAuthorize(authorizeResult['authorizeResponse'], 200) communicationDetailId, communicationDetailBucketId, communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId( self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, messageInfo[0], communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message']).check() authorize.assertUserPresenceInNsAdminTable( communicationDetailId, communicationDetailBucketId, int(communicationDetailExpectedCount))
def test_veneno_inboxUser_CustomFiledValue(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']).check() authorize.assertUserPresenceInNsAdminTable( communicationDetailId, communicationDetailBucketId, 1)
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_rateLimit_reconfig_allStrategySatisified(self, listType): VenenoHelper.setupStrategy(daily=2, weekly=2, monthly=2) self.listId = self.testObjectForRateLimit['list'][listType]['groupDetails']['id'] authorizeResult = VenenoHelper.authorizeForRateLimit(self, listType) authorize.assertAuthorize(authorizeResult['authorizeResponse'], 200) communicationDetailId ,communicationDetailBucketId ,communicationDetailExpectedCount=authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId,authorizeResult['groupVersionResult']['TEST']['id'],authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, authorizeResult['groupVersionResult']['TEST']['customer_count'], authorizeResult['groupVersionResult']['TEST']['id'], authorizeResult['payload']['message'],testControlType='custom').check() authorize.assertUserPresenceInNsAdminTable(communicationDetailId , communicationDetailBucketId, int(communicationDetailExpectedCount)) authorize.dbAssertRateLimitStats(self.testObjectForRateLimit['list'][listType]['campaignGroupRecipients']['TEST'], {'DAILY':2, 'WEEKLY':2, 'MONTHLY':2})
def test_veneno_rateLimit_dailyWeeklyMonthlyLimitExceed(self, listType): VenenoHelper.setupStrategy(daily=1, weekly=1, monthly=1) self.listId = self.testObjectForRateLimit['list'][listType]['groupDetails']['id'] authorizeResult = VenenoHelper.authorizeForRateLimit(self, listType) authorize.assertAuthorize(authorizeResult['authorizeResponse'], 200) communicationDetailId ,communicationDetailBucketId, communicationDetailExpectedCount=authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId,authorizeResult['groupVersionResult']['TEST']['id'],authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, authorizeResult['groupVersionResult']['TEST']['customer_count'], authorizeResult['groupVersionResult']['TEST']['id'], authorizeResult['payload']['message'],testControlType='custom',skippedReasons=['rate limit crossed for user']).check() authorize.assertUserPresenceInSkippedTable(communicationDetailId, communicationDetailBucketId, constant.config['skipped_errors']['RATE_LIMIT_ERROR'], 'rate limit crossed for user') authorize.dbAssertRateLimitStats(self.testObjectForRateLimit['list'][listType]['campaignGroupRecipients']['TEST'], {'DAILY':1, 'WEEKLY':1, 'MONTHLY':1})
def test_veneno_rateLimit_dailyByPass(self, listType): VenenoHelper.setupStrategy(daily=3, weekly=4, monthly=4) VenenoHelper.updateWindowValueToByPassStrategy(self.testObjectForRateLimit['list'][listType]['campaignGroupRecipients']['TEST'], 'DAILY') self.listId = self.testObjectForRateLimit['list'][listType]['groupDetails']['id'] authorizeResult = VenenoHelper.authorizeForRateLimit(self, listType) communicationDetailId ,communicationDetailBucketId ,communicationDetailExpectedCount=authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId,authorizeResult['groupVersionResult']['TEST']['id'],authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, authorizeResult['groupVersionResult']['TEST']['customer_count'], authorizeResult['groupVersionResult']['TEST']['id'], authorizeResult['payload']['message'],testControlType='custom').check() authorize.assertUserPresenceInNsAdminTable(communicationDetailId , communicationDetailBucketId, int(communicationDetailExpectedCount)) authorize.dbAssertRateLimitStats(self.testObjectForRateLimit['list'][listType]['campaignGroupRecipients']['TEST'], {'DAILY':1, 'WEEKLY':4, 'MONTHLY':4})
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