def test_veneno_rateLimit_MonthlyByPass(self, listType): VenenoHelper.setupStrategy(daily=3, weekly=2, monthly=1, channel='PUSH') VenenoHelper.updateWindowValueToByPassStrategy( self.testObjectForRateLimit['list'][listType] ['campaignGroupRecipients']['TEST'], 'MONTHLY', channel='PUSH') self.listId = self.testObjectForRateLimit['list'][listType][ 'groupDetails']['id'] cdDetailsBody = { 'campaignId': self.testObjectForRateLimit['campaign']['id'], 'communicationType': 'PUSH', 'subject': 'Automation Generated Body', 'body': '{"templateData":{"CHANNELACCOUNTNAME":{"luid":"{{luid}}","cuid":"{{cuid}}","communicationId":"{{communicationId}}","title":"asas","message":"asasas","expandableDetails":{"style":"BIG_TEXT","message":"asasas"},"custom":[]}}}' .replace('CHANNELACCOUNTNAME', self.account), 'recipientListId': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['id'], 'overallRecipientCount': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['customer_count'], 'expectedDeliveryCount': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['customer_count'], 'groupName': self.testObjectForRateLimit['list'][listType]['groupDetails'] ['group_label'] } communicationDetailObject = VenenoObject.communicationDetail( cdDetailsBody) communicationId = self.connObj.addMessageForRecipients( communicationDetailObject) VenenoDBAssertion(cdDetailsBody['campaignId'], cdDetailsBody['communicationType'], communicationId, cdDetailsBody['overallRecipientCount'], cdDetailsBody['recipientListId'], cdDetailsBody['subject']).check() authorize.assertUserPresenceInNsAdminTable( communicationId, VenenoHelper.getCommunicationBucketId(communicationId), int( json.loads( self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['params'])['test_count']), verify=False) authorize.dbAssertRateLimitStats( self.testObjectForRateLimit['list'][listType] ['campaignGroupRecipients']['TEST'], { 'DAILY': 3, 'WEEKLY': 2, 'MONTHLY': 1 }, channel='PUSH')
def test_veneno_rateLimit_SetWithSomeNegativeValue(self, listType): VenenoHelper.setupStrategy(daily=-1, weekly=-1, monthly=-1) VenenoHelper.updateWindowValueToByPassStrategy(self.testObjectForRateLimit['list'][listType]['campaignGroupRecipients']['TEST'], 'MONTHLY') 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',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':3, 'WEEKLY':2, 'MONTHLY':1})
def test_veneno_rateLimit_MonthlyByPass(self, listType): VenenoHelper.setupStrategy(daily=3, weekly=2, monthly=1) VenenoHelper.updateWindowValueToByPassStrategy(self.testObjectForRateLimit['list'][listType]['campaignGroupRecipients']['TEST'], 'MONTHLY') 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':3, 'WEEKLY':2, 'MONTHLY':1})
def test_veneno_rateLimit_MonthlyByPass(self, listType): VenenoHelper.setupStrategy(daily=3, weekly=2, monthly=1, channel='EMAIL') VenenoHelper.updateWindowValueToByPassStrategy( self.testObjectForRateLimit['list'][listType] ['campaignGroupRecipients']['TEST'], 'MONTHLY', channel='EMAIL') self.listId = self.testObjectForRateLimit['list'][listType][ 'groupDetails']['id'] cdDetailsBody = { 'campaignId': self.campaignId, 'communicationType': 'EMAIL', 'subject': 'Automation Generated Body {{unsubscribe}}', 'recipientListId': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['id'], 'overallRecipientCount': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['customer_count'], 'expectedDeliveryCount': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['customer_count'], 'groupName': self.testObjectForRateLimit['list'][listType]['groupDetails'] ['group_label'] } communicationDetailObject = VenenoObject.communicationDetail( cdDetailsBody) communicationId = self.connObj.addMessageForRecipients( communicationDetailObject) authorize.assertUserPresenceInNsAdminTable( communicationId, VenenoHelper.getCommunicationBucketId(communicationId), int( json.loads( self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['params'])['test_count']), verify=False, channel='EMAIL') authorize.dbAssertRateLimitStats( self.testObjectForRateLimit['list'][listType] ['campaignGroupRecipients']['TEST'], { 'DAILY': 3, 'WEEKLY': 2, 'MONTHLY': 1 }, channel='EMAIL')
def test_veneno_rateLimit_MonthlyByPass(self, listType): VenenoHelper.setupStrategy(daily=3, weekly=2, monthly=1, channel='WECHAT') VenenoHelper.updateWindowValueToByPassStrategy( self.testObjectForRateLimit['list'][listType] ['campaignGroupRecipients']['TEST'], 'MONTHLY', channel='WECHAT') self.listId = self.testObjectForRateLimit['list'][listType][ 'groupDetails']['id'] campaignMessage.getWeCRMTemplates() subject = { "template_id": unicodedata.normalize('NFKD', constant.config['templateId']).encode( 'ascii', 'ignore'), "touser": "******", "OriginalId": constant.config['wechat']['OriginalId'], "Title": "", "BrandId": "f", "url": "http://we.capillarytech-cn.com/web?appid=wxc7bf989decc7e35b&redirect_uri=http://somelink.com/someword?nowAParam=firstParam&second=second.Param&response_type=code&scope=snsapi_base&state=STATE", "TopColor": "#000000", "data": { "productType": { "value": "HakeemProduct", "color": "#00000" }, "name": { "value": "Hakeem {{first_name}} Lukka", "color": "#00000" }, "number": { "value": "898767 skdjnjn", "color": "#00000" }, "expDate": { "value": "look down", "color": "#00000" }, "remark": { "value": "Look up", "color": "#00000" } } } cdDetailsBody = { 'campaignId': self.testObjectForRateLimit['campaign']['id'], 'communicationType': 'WECHAT', 'subject': str(subject), 'body': 'Thrift Created Automation Wechat Body', 'recipientListId': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['id'], 'overallRecipientCount': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['customer_count'], 'expectedDeliveryCount': self.testObjectForRateLimit['list'][listType] ['groupVersionDetails']['TEST']['customer_count'], 'groupName': self.testObjectForRateLimit['list'][listType]['groupDetails'] ['group_label'] } communicationDetailObject = VenenoObject.communicationDetail( cdDetailsBody) communicationId = self.connObj.addMessageForRecipients( communicationDetailObject) VenenoDBAssertion( cdDetailsBody['campaignId'], cdDetailsBody['communicationType'], communicationId, cdDetailsBody['overallRecipientCount'], cdDetailsBody['recipientListId'], cdDetailsBody['subject'], skippedReasons=[ 'Captured OpenId for user seems to be unsubscribed', 'rate limit crossed for user' ]).check() authorize.dbAssertRateLimitStats( self.testObjectForRateLimit['list'][listType] ['campaignGroupRecipients']['TEST'], { 'DAILY': 3, 'WEEKLY': 2, 'MONTHLY': 1 }, channel='WECHAT')