Ejemplo n.º 1
0
 def est_venenoThrift_inboxUser_WeChat_Sanity(self):
     actualOrgId = construct.updateOrgId(constant.config['wechat']['orgId'])
     actualOrgName = construct.updateOrgName(constant.config['wechat']['orgName'])
     try:
         details = VenenoHelper.preRequisitesForVenenoWechat(testControlType='skip')
         campaignMessage.getWeCRMTemplates()
         subject = {
             "template_id" : unicodedata.normalize('NFKD', constant.config['templateId']).encode('ascii', 'ignore'),
             "touser" : "{{wechat_open_id}}",
             "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':details['campaignId'],
              'communicationType':'WECHAT',
              'subject': str(subject),
              'body': 'Thrift Created Automation Wechat Body',
              'recipientListId':details['groupVersionResult']['TEST']['id'],
              'overallRecipientCount':details['groupVersionResult']['TEST']['customer_count'],
              'expectedDeliveryCount':details['groupVersionResult']['TEST']['customer_count'],
              'groupName':details['groupName']
             }
         communicationDetailObject = VenenoObject.communicationDetail(cdDetailsBody)
         communicationId = self.connObj.addMessageForRecipients(communicationDetailObject)
         VenenoDBAssertion(cdDetailsBody['campaignId'], cdDetailsBody['communicationType'], communicationId, cdDetailsBody['overallRecipientCount'], cdDetailsBody['recipientListId'], cdDetailsBody['subject'], testControlType='skip', skippedReasons=['Captured OpenId for user seems to be unsubscribed']).check()
     except Exception, exp:
         raise Exception('Wechat Case Failed due to :{}'.format(exp))
Ejemplo n.º 2
0
 def test_veneno_skippedUser_noCouponForUser_ProdSanity(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'], testControlType='skip', 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 def test_venenoThrift_skippedUser_CallTask(self):
     cdDetailsBody = {
         'campaignId':
         self.details['campaignId'],
         'communicationType':
         'CALL_TASK',
         'subject':
         'Automation Generated Body {{first_name}} {{last_name}} {{fullname}} {{custom_tag_2}} {{optout}}',
         'recipientListId':
         self.details['groupVersionResult']['TEST']['id'],
         'overallRecipientCount':
         self.details['groupVersionResult']['TEST']['customer_count'],
         'expectedDeliveryCount':
         self.details['groupVersionResult']['TEST']['customer_count'],
         'groupName':
         self.details['groupName']
     }
     communicationDetailObject = VenenoObject.communicationDetail(
         cdDetailsBody)
     communicationId = self.connObj.addMessageForRecipients(
         communicationDetailObject)
     VenenoDBAssertion(cdDetailsBody['campaignId'],
                       cdDetailsBody['communicationType'],
                       communicationId,
                       cdDetailsBody['overallRecipientCount'],
                       cdDetailsBody['recipientListId'],
                       cdDetailsBody['subject'],
                       testControlType='custom',
                       skippedReasons=['Custom Tag Not Present']).check()
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 def test_venenoThrift_inboxUser_Email_GenericTags(self):
     cdDetailsBody = {
         'campaignId':
         self.details['campaignId'],
         'communicationType':
         'EMAIL',
         'subject':
         'Automation Generated Body {{first_name}} {{last_name}} {{fullname}} {{unsubscribe}}',
         'recipientListId':
         self.details['groupVersionResult']['TEST']['id'],
         'overallRecipientCount':
         self.details['groupVersionResult']['TEST']['customer_count'],
         'expectedDeliveryCount':
         self.details['groupVersionResult']['TEST']['customer_count'],
         'groupName':
         self.details['groupName']
     }
     communicationDetailObject = VenenoObject.communicationDetail(
         cdDetailsBody)
     communicationId = self.connObj.addMessageForRecipients(
         communicationDetailObject)
     VenenoDBAssertion(cdDetailsBody['campaignId'],
                       cdDetailsBody['communicationType'],
                       communicationId,
                       cdDetailsBody['overallRecipientCount'],
                       cdDetailsBody['recipientListId'],
                       cdDetailsBody['subject'],
                       testControlType='custom').check()
Ejemplo n.º 7
0
 def test_venenoThrift_skippeduser_Email_pointsMessageConfiguredError(self):
     cdDetailsBody = {'campaignId':self.details['campaignId'],
          'communicationType':'EMAIL',
          'subject':'Automation Generated Body {{first_name}} {{last_name}} {{fullname}} {{promotion_points}} {{unsubscribe}}',
          'recipientListId':self.details['groupVersionResult']['TEST']['id'],
          'overallRecipientCount':self.details['groupVersionResult']['TEST']['customer_count'],
          'expectedDeliveryCount':self.details['groupVersionResult']['TEST']['customer_count'],
          'groupName':self.details['groupName']
         }
     extraDefaultPrams = {
         "default_argument":{
             "drag_drop_id": None,
             "entity_id":-1,
             "expiry_strategy_id": "7496",
             "is_drag_drop": 0,
             "is_list_processed_for_reachability": True,
             "msg_count": "1",
             "program_id": "1215",
             "promotion_id": 8616,
             "reachability_rules": "UNABLE_TO_VERIFY,VALID,SOFTBOUNCED",
             "sendToNdnc": "false",
             "till_id": "50012200",
             "useTinyUrl": "false"
             }
         }
     communicationDetailObject = VenenoObject.communicationDetail(cdDetailsBody, extraParams=extraDefaultPrams)
     communicationId = self.connObj.addMessageForRecipients(communicationDetailObject)
     VenenoDBAssertion(cdDetailsBody['campaignId'], cdDetailsBody['communicationType'], communicationId, cdDetailsBody['overallRecipientCount'], cdDetailsBody['recipientListId'], cdDetailsBody['subject'], testControlType='skip', skippedReasons=['Message is not configured properly and is missing points related properties']).check()
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
 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')
Ejemplo n.º 10
0
    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_rateLimit_reconfig_allStrategySatisified_StatsUpdateCheck(self, listType):
     VenenoHelper.setupStrategy(daily=3, weekly=3, monthly=3)
     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':3, 'MONTHLY':3})
 def test_veneno_rateLimitsss_dailyLimitExceed(self, listType):
     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_rateLimitsss_allStrategySatisified_sms_sanity(self, listType):
     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':1, 'WEEKLY':1, 'MONTHLY':1})
 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})
Ejemplo n.º 15
0
    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)
Ejemplo n.º 16
0
    def validateVariantToCommunicationDetailsFlow(self):
        variant_creation_key = 'VARIANT_CREATION' if not self.personalizedMessage else 'PERSONALIZED_VARIANT_CREATION'
        for eachVariant in self.messageDbInfo['messageJobDetails_collection'][
                variant_creation_key]:
            for varient in eachVariant['variant_detail']:
                if varient['skipTestControl']:
                    self.testControlType = 'skip'
                messageQueueId = varient['messageVariantId']
                communicationDetailId, channel = message_calls(
                ).getCommunicationDetails(self.messageId, messageQueueId)
                listMetaInfo = meta_details(
                    groupId=varient['audienceId'],
                    groupVersionDetails=True).metaDetail
                numberOfUsers = listMetaInfo['groupVersionDetails']['TEST'][
                    'customer_count']
                groupVersionIdForTargetAudience = listMetaInfo[
                    'groupVersionDetails']['TEST']['id']
                self.validateEntryInCron(varient['cronTaskId'], varient['_id'])
                if channel in ['SMS', 'CALL_TASK']:
                    messageBody = varient['messageContent']['messageBody']
                elif channel == 'EMAIL':
                    messageBody = varient['messageContent']['emailSubject']
                elif channel == 'PUSH':
                    messageBody = varient['messageContent']['messageSubject']
                else:
                    raise Exception('OtherChannelNotSupportedException')
                venenoObject = VenenoDBAssertion(
                    self.campaignId, channel, communicationDetailId,
                    numberOfUsers,
                    groupVersionIdForTargetAudience, messageBody,
                    self.testControlType.lower(), self.skippedReason,
                    self.cguhVerify)
                if venenoObject.initFailureForStickyList:
                    venenoObject.check()

                if channel == 'PUSH':
                    self.validatePushBody(
                        venenoObject.communicationDetailResult['body'])
Ejemplo n.º 17
0
 def test_veneno_inboxUser_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))
Ejemplo n.º 18
0
 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')
Ejemplo n.º 19
0
    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)
Ejemplo n.º 20
0
 def test_venenoThrift_inboxUser_Line_Sanity(self):
     actualOrgId = construct.updateOrgId(constant.config['line']['orgId'])
     actualOrgName = construct.updateOrgName(constant.config['line']['orgName'])
     try:
         details = VenenoHelper.preRequisitesForVenenoLine(testControlType='skip')
         cdDetailsBody = {
              'campaignId':details['campaignId'],
              'communicationType':'LINE',
              'subject':'{"to":"{{line_id}}","messages":[{"type":"text","text":"Automated Call {{user_id_b64}}"}]}',
              'body':'',
              'recipientListId':details['groupVersionResult']['TEST']['id'],
              'overallRecipientCount':details['groupVersionResult']['TEST']['customer_count'],
              'expectedDeliveryCount':details['groupVersionResult']['TEST']['customer_count'],
              'groupName':details['groupName']
             }
         communicationDetailObject = VenenoObject.communicationDetail(cdDetailsBody)
         communicationId = self.connObj.addMessageForRecipients(communicationDetailObject)
         VenenoDBAssertion(cdDetailsBody['campaignId'], cdDetailsBody['communicationType'], communicationId, cdDetailsBody['overallRecipientCount'], cdDetailsBody['recipientListId'], cdDetailsBody['subject'], testControlType='skip').check()
     except Exception, exp:
         raise Exception('Line Failure ,due to :{}'.format(exp))
Ejemplo n.º 21
0
 def est_venenoThrift_inboxUser_MobilePush_IOS(self):
     actualOrgId = construct.updateOrgId(constant.config['mobilepush']['orgId'])
     actualOrgName = construct.updateOrgName(constant.config['mobilepush']['orgName'])
     try:
         details = VenenoHelper.preRequisitesForVenenoMobilePush('ios',testControlType='skip')
 
         cdDetailsBody = {
              'campaignId':details['campaignId'],
              'communicationType':'PUSH',
              'subject':'Automation Generated Body ',
              'body':'{"templateData":{"ANDROID":{"luid":"{{luid}}","cuid":"{{cuid}}","communicationId":"{{communicationId}}","title":"hi {{first_name}}","message":"{{first_name}}","expandableDetails":{"style":"BIG_TEXT","message":"{{first_name}}"},"custom":[]},"IOS":{"luid":"{{luid}}","cuid":"{{cuid}}","communicationId":"{{communicationId}}","title":"hi {{first_name}}","message":"{{first_name}}","expandableDetails":{"style":"BIG_TEXT","message":"hi {{first_name}}","ctas":[]},"custom":[]}}}',
              'recipientListId':details['groupVersionResult']['TEST']['id'],
              'overallRecipientCount':details['groupVersionResult']['TEST']['customer_count'],
              'expectedDeliveryCount':details['groupVersionResult']['TEST']['customer_count'],
              'groupName':details['groupName']
             }
         communicationDetailObject = VenenoObject.communicationDetail(cdDetailsBody)
         communicationId = self.connObj.addMessageForRecipients(communicationDetailObject)
         VenenoDBAssertion(cdDetailsBody['campaignId'], cdDetailsBody['communicationType'], communicationId, cdDetailsBody['overallRecipientCount'], cdDetailsBody['recipientListId'], cdDetailsBody['subject'], testControlType='skip').check()
     except Exception, exp:
         raise Exception('MobilePush Failure ,due to :{}'.format(exp))
Ejemplo n.º 22
0
    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)
Ejemplo n.º 23
0
 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)
Ejemplo n.º 24
0
    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
Ejemplo n.º 25
0
 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')