def test_irisv2_message_execute_mobilePush_android_image_secondCTA_Multiplevalue_primaryCTAEmable_IOS_Text( self, campaignType, testControlType, listType, channel, messageInfo): approveRespone = AuthorizeMessage.approve(campaignType, testControlType, listType, channel, messageInfo, updateNode=True) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] response = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['RESPONSE'] payload = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['PAYLOAD'] AuthorizeMessageDBAssertion(campaignId, response, payload, testControlType).check()
def test_irisv2_message_personalize_execute_upload_sms_sms_immediate_plain_plain_live_multiCategory( self, campaignType, testControlType, listType, channel, messageInfo): approveRespone = AuthorizeMessage.approve(campaignType, testControlType, listType, channel, messageInfo) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] response = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['RESPONSE'] payload = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['PAYLOAD'] AuthorizeMessageDBAssertion(campaignId, response, payload, testControlType, personalizedMessage=True).check()
def test_irisv2_message_Sanity_execute_mobilePush_android_text_ios_image_secondCTA_DeepLink_PrimaryCTA_ExternalURL_customTrue( self, campaignType, testControlType, listType, channel, messageInfo): approveRespone = AuthorizeMessage.approve(campaignType, testControlType, listType, channel, messageInfo, updateNode=True) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] response = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['RESPONSE'] payload = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['PAYLOAD'] AuthorizeMessageDBAssertion(campaignId, response, payload, testControlType).check()
def test_irisv2_message_execute_upload_push_immediate_coupon_live_pushThread( self, campaignType, testControlType, listType, channel, messageInfo): try: actualOrgId = IrisHelper.updateOrgId( constant.config['mobilepush']['orgId']) actualOrgName = IrisHelper.updateOrgName( constant.config['mobilepush']['orgName']) campaignInfo = CreateCampaign.create(campaignType, testControlType, updateNode=True, lockNode=True) couponSeriesId = CreateMessage.getCouponSeriesId( campaignInfo['ID']) approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, campaignId=campaignInfo['ID'], couponSeriesId=couponSeriesId) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = campaignInfo['ID'] response = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][ messageInfo['scheduleType']['type']][ messageInfo['offerType']]['RESPONSE'] payload = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][ messageInfo['scheduleType']['type']][ messageInfo['offerType']]['PAYLOAD'] AuthorizeMessageDBAssertion(campaignId, response, payload, testControlType).check() finally: IrisHelper.updateOrgId(actualOrgId) IrisHelper.updateOrgName(actualOrgName)
def irisv2_message_execute_stickyList_immediate_plain_additionalProperties_UsingRateLimit( self, campaignType, testControlType, listType, channel, messageInfo): messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, derivedListInfo={ 'excludeUsers': [], 'includeUsers': ':1', 'groupId': self.listInfo[0]['gId'], 'label': self.listInfo[0]['gLabel'] }) approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] response = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['RESPONSE'] payload = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['PAYLOAD'] AuthorizeMessageDBAssertion(campaignId, response, payload, testControlType).check()
def test_irisv2_messageStatus_stickylist_sms_recurring_points_Approved_Stop( self, campaignType, testControlType, listType, channel, messageInfo): messageDetails = CreateMessage.create(campaignType, testControlType, 'ORG_USERS', channel, messageInfo, derivedListInfo={ 'excludeUsers': [], 'includeUsers': ':1' }) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) stopResponse = CreateMessage.stop( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], approveRespone['json']['entity']['messageId']) CreateMessage.assertResponse(stopResponse, 200) CreateMessageDBAssertion( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD'], reject={ 'status': 'CLOSED' }, approved='STOPPED').check()
def test_irisv2_message_execute_flow_precheck_particularDate_with2HoursInterval_RemindCheck( self, campaignType, testControlType, listType, channel, messageInfo): scheduleType = { 'scheduleType': 'PARTICULAR_DATE', 'scheduledDate': Utils.getTime(hours=2, minutes=1, seconds=30, milliSeconds=True) } messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, scheduleType=scheduleType, updateNode=True, lockNode=True) approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) Precheck_calls().waitForJobTypeUpdate( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], 'REMIND', 'PRECHECK', 'SUCCESS') PreCheckDBValidation( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageInfo['scheduleType']['type'], ['REMINDED', 'OPENED'], executeCheck=False, variantCheck=False).validateMessageFlow()
def test_irisv2_message_personalize_execute_derived_smssssssssssssss_email_immediate_plain_plain_live_multiCategory( self, campaignType, testControlType, channel, messageInfo): messageDetails = CreateMessage.create( campaignType, testControlType, 'DERIVED', channel, messageInfo, derivedListInfo={ 'includedGroups': ['UPLOAD', 'LOYALTY', 'DERIVED'], 'excludedGroup': ['UPLOADOLD'], 'derived': ['UPLOADOLD', 'UPLOAD', 'LOYALTY'], 'noOfUserUpload': 5 }) approveRespone = AuthorizeMessage.approve( campaignType, testControlType, 'DERIVED', channel, messageInfo=messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] response = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['RESPONSE'] payload = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['PAYLOAD'] AuthorizeMessageDBAssertion(campaignId, response, payload, testControlType, personalizedMessage=True).check()
def irisv2_message_Sanity_create_execute_stickyList_recurring_plain( self, campaignType, testControlType, listType, channel, messageInfo): approveRespone = AuthorizeMessage.approve(campaignType, testControlType, listType, channel, messageInfo, derivedListInfo={ 'excludeUsers': [], 'includeUsers': ':1' }) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] response = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['RESPONSE'] payload = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][messageInfo['scheduleType'][ 'type']][messageInfo['offerType']]['PAYLOAD'] AuthorizeMessageDBAssertion(campaignId, response, payload, testControlType).check()
def test_irisv2_getStatusBy_messageId_Sanity(self, campaignType, testControlType, channel, messageInfo, queryParam): messageDetails = CreateMessage.create(campaignType, testControlType, 'LOYALTY', channel, messageInfo, updateNode=True, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') approveRespone = AuthorizeMessage.approve( campaignType, testControlType, 'LOYALTY', channel, messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] AuthorizeMessageDBAssertion(campaignId, messageDetails['RESPONSE'], messageDetails['PAYLOAD'], testControlType).check() response = GetMonitoringDetails.getByMessageId( campaignId, messageDetails['RESPONSE']['json']['entity']['id'], queryParam) actualResponse, expectedResponse = GetMonitoringDetails.formatingMonitorDetails( response, isScheduledMsg=True, isDeliveryBreakEnabled=True) Assertion.constructAssertion( actualResponse == expectedResponse, 'Monitoring Details response Matched Actual: {} and Expected: {}'. format(actualResponse, expectedResponse))
def irisv2_message_sanity_execute_filter_immediate_plain_storeTag_lasttransactedstore( self, campaignType, testControlType, listType, channel, messageInfo): messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] AuthorizeMessageDBAssertion(campaignId, messageDetails['RESPONSE'], messageDetails['PAYLOAD'], testControlType).check()
def test_irisv2_message_execute_flow_precheck_immediate_GatewayUnavialable_remind( self, campaignType, testControlType, listType, channel, messageInfo): preCheckError = { 'status': 'TEMPORARY_FAILURE', 'errorDescription': 'GATEWAY_NOT_AVAILABLE' } try: messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) IrisHelper.disableDomainGatewayMapId(channel) approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) PreCheckDBValidation( constant.config['node'][campaignType][testControlType] ['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageInfo['scheduleType']['type'], ['REMINDED', 'OPENED'], remindCheck=False, precheck=preCheckError, variantCheck=False).validateMessageFlow() except AssertionError, exp: Assertion.constructAssertion(False, '{}'.format(exp))
def test_irisv2_message_execute_flow_precheck_recurring__RemindCheck( self, campaignType, testControlType, listType, channel, messageInfo): try: precheckError = { 'remind': { 'status': 'TEMPORARY_FAILURE', 'errorDescription': 'CAMPAIGN_NOT_AUTHORIZED' }, 'execute': { 'status': 'TEMPORARY_FAILURE', 'errorDescription': 'BULK_CREDITS_NOT_AVAILABLE' } } messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) PreCheckDBValidation( constant.config['node'][campaignType][testControlType] ['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageInfo['scheduleType']['type'], ['REMINDED', 'OPENED'], executeCheck=False, variantCheck=False, precheck=precheckError['remind'], reloadCheck={ 'GROUP_RELOAD_NFS': 'SUCCESS', 'GROUP_RELOAD_CREATE_AUDIENCE': 'SUBMITTED' }, byPassPrecheckValidation=True).validateMessageFlow() IrisHelper.updateCredit(0, channel) approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) Precheck_calls().waitForJobTypeUpdate( constant.config['node'][campaignType][testControlType] ['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], 'REMIND', 'PRECHECK', 'TEMPORARY_FAILURE', expectedError='BULK_CREDITS_NOT_AVAILABLE') PreCheckDBValidation( constant.config['node'][campaignType][testControlType] ['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageInfo['scheduleType']['type'], ['REMINDED', 'OPENED'], executeCheck=False, variantCheck=False, precheck=precheckError['execute']).validateMessageFlow() finally: IrisHelper.updateCredit(99999, channel)
def test_irisv2_getStatusBy_campaignId_Sanity(self, campaignType, testControlType, channel, messageInfo, queryParam): campaignInfo = CreateCampaign.create(campaignType, testControlType, updateNode=True, lockNode=True) Logger.log('campaign id is', campaignInfo['ID']) messageDetails = CreateMessage.create(campaignType, testControlType, 'LOYALTY', channel, messageInfo, campaignId=campaignInfo['ID'], updateNode=True, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') approveRespone = AuthorizeMessage.approve( campaignType, testControlType, 'LOYALTY', channel, messageInfo, messageCreateResponse=messageDetails, campaignId=campaignInfo['ID']) AuthorizeMessage.assertResponse(approveRespone, 200) messageDetails = CreateMessage.create(campaignType, testControlType, 'LOYALTY', channel, messageInfo, campaignId=campaignInfo['ID'], updateNode=True, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') approveRespone = AuthorizeMessage.approve( campaignType, testControlType, 'LOYALTY', channel, messageInfo, messageCreateResponse=messageDetails, campaignId=campaignInfo['ID']) AuthorizeMessage.assertResponse(approveRespone, 200) time.sleep(150) message_calls().getCommunicationDetailsWithOnlyMessageId( approveRespone['json']['entity']['messageId']) response = GetMonitoringDetails.getByCampaignId( campaignInfo['ID'], queryParam) actualResponse, expectedResponse = GetMonitoringDetails.formatingMonitorDetails( response, isScheduledMsg=False, isDeliveryBreakEnabled=True) Assertion.constructAssertion( actualResponse == expectedResponse, 'Monitoring Details response Matched Actual: {} and Expected: {}'. format(actualResponse, expectedResponse))
def irisv2_message_edit_reject_edit_stop_execute_Sanity( self, campaignType, testControlType, listType, channel, messageInfo): messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') messageDetails['PAYLOAD'].update({ 'schedule': { 'scheduleType': 'PARTICULAR_DATE', 'scheduledDate': int(time.time() * 1000) + 4 * 60 * 1000 } }) #editing message editInfo = CreateMessage.edit( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessageDBAssertion(constant.config['node'][campaignType] [testControlType]['CAMPAIGN']['ID'], editInfo['RESPONSE']['json']['entity']['id'], editInfo['PAYLOAD'], version=1).check() #rejecting message rejectResponse = CreateMessage.reject( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id']) CreateMessage.assertResponse(rejectResponse, 200) CreateMessageDBAssertion( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD'], approved='REJECTED').check() #editing message messageDetails['PAYLOAD'].update({ 'schedule': { 'scheduleType': 'PARTICULAR_DATE', 'scheduledDate': int(time.time() * 1000) + 4 * 60 * 1000 } }) editInfo = CreateMessage.edit( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessage.assertResponse(editInfo['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( editInfo['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION', version=2) CreateMessageDBAssertion(constant.config['node'][campaignType] [testControlType]['CAMPAIGN']['ID'], editInfo['RESPONSE']['json']['entity']['id'], editInfo['PAYLOAD'], version=2).check() #approving message approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=editInfo) AuthorizeMessage.assertResponse(approveRespone, 200) time.sleep(15) #stopping the message stopResponse = CreateMessage.stop( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], approveRespone['json']['entity']['messageId']) CreateMessage.assertResponse(stopResponse, 200) CreateMessageDBAssertion( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD'], reject={ 'status': 'CLOSED' }, approved='STOPPED').check() #editing message messageDetails['PAYLOAD'].update({ 'schedule': { 'scheduleType': 'PARTICULAR_DATE', 'scheduledDate': int(time.time() * 1000) + 4 * 60 * 1000 } }) editInfo = CreateMessage.edit( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessage.assertResponse(editInfo['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( editInfo['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION', version=3) CreateMessageDBAssertion(constant.config['node'][campaignType] [testControlType]['CAMPAIGN']['ID'], editInfo['RESPONSE']['json']['entity']['id'], editInfo['PAYLOAD'], version=3).check() #approving message approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=editInfo) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] AuthorizeMessageDBAssertion(campaignId, editInfo['RESPONSE'], editInfo['PAYLOAD'], testControlType, version=3).check()
def test_irisv2_message_execute_flow_precheck_failed_particularDate_gatewayNotAvialable_remind_execute_creditNotAvialable( self, campaignType, testControlType, listType, channel, messageInfo): preCheckError = { 'create': { 'status': 'TEMPORARY_FAILURE', 'errorDescription': 'CAMPAIGN_NOT_AUTHORIZED,GATEWAY_NOT_AVAILABLE' }, 'execute': { 'status': 'TEMPORARY_FAILURE', 'errorDescription': 'BULK_CREDITS_NOT_AVAILABLE' } } dummyGatewayCreated = False try: messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) IrisHelper.disableDomainGatewayMapId(channel) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) PreCheckDBValidation( constant.config['node'][campaignType][testControlType] ['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageInfo['scheduleType']['type'], ['REMINDED', 'OPENED'], executeCheck=False, precheck=preCheckError['create'], variantCheck=False).validateMessageFlow() IrisHelper.updateCredit(0, channel) if IrisHelper.createNewDummyGateway(channel): dummyGatewayCreated = True approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) Precheck_calls().waitForJobTypeUpdate( constant.config['node'][campaignType][testControlType] ['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], 'REMIND', 'PRECHECK', 'TEMPORARY_FAILURE', expectedError='BULK_CREDITS_NOT_AVAILABLE') PreCheckDBValidation( constant.config['node'][campaignType][testControlType] ['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageInfo['scheduleType']['type'], ['REMINDED', 'OPENED'], executeCheck=False, precheck=preCheckError['execute'], variantCheck=False).validateMessageFlow() finally: IrisHelper.updateCredit(99999, channel) if not dummyGatewayCreated: IrisHelper.createNewDummyGateway(channel)