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_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_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_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_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))
def test_veneno_rateLimit_allStrategySatisfied_email_sanity(self, listType): 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']), testControlType='custom', verify=False,groupVersionId=cdDetailsBody['recipientListId'],channel='EMAIL') authorize.dbAssertRateLimitStats(self.testObjectForRateLimit['list'][listType]['campaignGroupRecipients']['TEST'], {'DAILY':1, 'WEEKLY':1, 'MONTHLY':1}, channel='EMAIL')
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_replyMessage_CUSTOM_allErrorTypes(self, description, changeCouponConfig): Logger.log(self.Details[description]) if description == 'COUPON_EXPIRED': changeCouponConfig.update( {'fixedExpiryDate': Utils.getTime(days=2, milliSeconds=True)}) self.voucherId = self.Details[description]['voucherId'] self.commDetailsId = self.Details[description][ 'communicationDetailsId'] VenenoHelper.couponConfigChange(self, changeCouponConfig) time.sleep(70) authorize.dbAssertionInSkippedReplyTables(self.commDetailsId) campaignMessage.replyMessage(self) time.sleep(10) campaignReplyStats = dbCallsAuthorize.getVenenoReplyStats( self.Details[description]['communicationDetailsId']) Assertion.constructAssertion( len(campaignReplyStats) != 0, 'Campaign Reply Stats update status {}'.format( len(campaignReplyStats))) authorize.assertUserPresenceInNsAdminTable( self.Details[description]['communicationDetailsId'], self.Details[description]['communicationDetailBucketId'], int(self.Details[description]['communicationDetailExpectedCount']), verify=False, waitForInboxMsg=True) communcationDetailsDict = dbCallsAuthorize.getCommunicationDetailsWithId( self.Details[description]['communicationDetailsId']) Assertion.constructAssertion( communcationDetailsDict['state'] == 'REPLAYED', 'Communication Details MessageId state is Actual: {} and Expected: {}' .format(communcationDetailsDict['state'], 'REPLAYED')) Assertion.constructAssertion( communcationDetailsDict['expected_delivery_count'] == int( self.Details[description]['communicationDetailExpectedCount']), 'Communication Details Expected Delivery count Actual: {} and Expected: {}' .format( communcationDetailsDict['expected_delivery_count'], int(self.Details[description] ['communicationDetailExpectedCount']))) Assertion.constructAssertion( communcationDetailsDict['message_queue_id'] != 0, 'Communication Details Message Queue Id is not 0 Actual: {}'. format(communcationDetailsDict['message_queue_id']))
def test_veneno_replyMessage_CUSTOM_Sanity(self, description, couponConfig, skippedReason, configChange): couponConfig.update({'description': description}) self.voucherId = VenenoHelper.createCouponLuci(self, couponConfig) communicationDetailsId, communicationDetailBucketId, communicationDetailExpectedCount = VenenoHelper.messageAuthorize( self, skippedError=skippedReason, isSkippedMessage=True) VenenoHelper.couponConfigChange(self, configChange) time.sleep(2) self.commDetailsId = communicationDetailsId authorize.dbAssertionInSkippedReplyTables(communicationDetailsId) campaignMessage.replyMessage(self) time.sleep(10) campaignReplyStats = dbCallsAuthorize.getVenenoReplyStats( communicationDetailsId) Assertion.constructAssertion( len(campaignReplyStats) != 0, 'Campaign Reply Stats update status {}'.format( len(campaignReplyStats))) authorize.assertUserPresenceInNsAdminTable( communicationDetailsId, communicationDetailBucketId, int(communicationDetailExpectedCount), verify=False, waitForInboxMsg=True) communcationDetailsDict = dbCallsAuthorize.getCommunicationDetailsWithId( communicationDetailsId) Assertion.constructAssertion( communcationDetailsDict['state'] == 'REPLAYED', 'Communication Details MessageId state is Actual: {} and Expected: {}' .format(communcationDetailsDict['state'], 'REPLAYED')) Assertion.constructAssertion( communcationDetailsDict['expected_delivery_count'] == int( communicationDetailExpectedCount), 'Communication Details Expected Delivery count Actual: {} and Expected: {}' .format(communcationDetailsDict['expected_delivery_count'], int(communicationDetailExpectedCount))) Assertion.constructAssertion( communcationDetailsDict['message_queue_id'] != 0, 'Communication Details Message Queue Id is not 0 Actual: {}'. format(communcationDetailsDict['message_queue_id']))
def test_veneno_inboxUser_CustomFiledValue_ProdSanity(self): obj = InTouchAPI(Customer.Add(body={'root':{'customer':{'custom_fields':{'field':{'name':'gender', 'value':'Male'}}}}})) mergeListresponse, mergeListPayload, campaignId = campaignList.mergeList({'name': 'IRIS_LIST_' + str(int(time.time() * 100000)), 'recipients':{'dataSource':'CSV', 'schema':'firstName,lastName,mobile', 'data':['TestX,AutomationX,{}'.format(obj.params['mobile'])]}}, campaignId=self.campaignId) self.listId = mergeListresponse['json']['entity']['listId'] self.groupVersionResult = dbCallsList.getGroupVersionDetailsWithGroupId(mergeListresponse['json']['entity']['listId']) self.bucketId = self.groupVersionResult['TEST']['bucket_id'] messagePayloadToUpdate = { 'senderDetails':{ 'domainGatewayMapId':constant.config['message_senders']['domainGatewayMapId'], 'gsmSenderId':constant.config['message_senders']['gsmSenderId'], 'useSystemDefaults':False, 'cdmaSenderId':constant.config['message_senders']['cdmaSenderId'] }, 'message' : 'This Message is Going to Inbox Due to custom Field Value : {{custom_field.gender}} {{optout}}' } messageResponse, messagePayload = campaignMessage.createMessage(self, payloadData=messagePayloadToUpdate) authorizeResponse = authorize.makeAuthorizeRequest(self.campaignId, messageResponse['json']['entity']['messageId']) authorizeResult = self.getAuthorizeResultBody(self.campaignId, self.listId, self.groupVersionResult, self.bucketId, self.voucherId, self.strategy, messagePayload, str(messageResponse['json']['entity']['messageId']), authorizeResponse) communicationDetailId , communicationDetailBucketId , communicationDetailExpectedCount = authorize.assertMessageQueueAndGetCommunicationDetailsForReferenceMessageQueueId(self.campaignId, self.groupVersionResult['TEST']['id'], authorizeResult['messageId']) VenenoDBAssertion(self.campaignId, 'SMS', communicationDetailId, self.groupVersionResult['TEST']['customer_count'], self.groupVersionResult['TEST']['id'], authorizeResult['payload']['message'], testControlType='skip').check() authorize.assertUserPresenceInNsAdminTable(communicationDetailId , communicationDetailBucketId, 1)
def 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