def test_irisv2_getMessageVariant_create_upload_mobile_immediate_plain( self, campaignType, testControlType, listType, channel, messageInfo): CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] messageId = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][ messageInfo['scheduleType']['type']][messageInfo['offerType']][ 'RESPONSE']['json']['entity']['id'] for eachType in ['MESSAGE_TARGET_AUDIENCE', 'VARIANT_CREATION']: status = message_calls().waitForJobDetailsStatusToClose( messageId, eachType, maxNumberOfAttempts=20) if status: getMessageResponse = GetMessage.getMessageVariantById( campaignId, message_calls().getVariantIdByMessageId(messageId)) GetMessage.assertResponse(getMessageResponse, 200) VariantDBAssertion(campaignId, messageId, [getMessageResponse['json']['entity']]).check() else: Assertion.constructAssertion( False, 'Variant_Creation is Not Closed in Specified time')
def test_irisv2_message_edit_upcoming_create_plain_mobile_particulardate_to_immediate( self, campaignType, testControlType, listType, channel, messageInfo, statusCode, errorCode, errorDescription): 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') dateTime = Utils.getTime(hours=5, minutes=32, dateTimeFormat=True) messageDetails['PAYLOAD'].update( {'schedule': { 'scheduleType': 'IMMEDIATE' }}) editInfo = CreateMessage.edit( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessage.assertResponse(editInfo['RESPONSE'], 400, expectedErrorCode=[errorCode], expectedErrorMessage=errorDescription)
def test_irisv2_message_edit_recurring_live_create_plain_mobile_editMessage_with_campaignId_of_another_campaign( self, campaignType, testControlType, listType, channel, messageInfo, statusCode, errorCode, errorDescription): 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') campaignInfo = CreateCampaign.create(campaignType, testControlType, updateNode=True) editInfo = CreateMessage.edit( campaignInfo['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessage.assertResponse( editInfo['RESPONSE'], 400, expectedErrorCode=[errorCode], expectedErrorMessage=errorDescription.format( messageDetails['RESPONSE']['json']['entity']['id']))
def test_reminder_create_sms_coupon_email_particulardate_nonResponders_Coupon_appoved(self, campaignType, testControlType, listType, channel, messageInfo): remindParams = { 'reminderStrategy': 'COUPON_NOT_REDEEMED', 'parentMessageId': constant.config['reminder']['coupon']['messageId'] } campaignId = constant.config['reminder']['coupon']['campaignId'] constant.config['node'][campaignType][testControlType]['CAMPAIGN']['ID'] = campaignId messageContent = CreateMessage.constructMessageContent(campaignType, testControlType, messageInfo['messageStrategy'], messageInfo['offerType'], channel) messageContent['message_content_id_1']['offers'] = [] messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, listInfo='', campaignId=campaignId, remindParams=remindParams, lockNode=True, messageContent=messageContent) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') approveRespone = AuthorizeMessage.approveWithCampaignAndMessageId(campaignId, messageDetails['RESPONSE']['json']['entity'][ 'id']) AuthorizeMessage.assertResponse(approveRespone, 200) AuthorizeMessageDBAssertion(campaignId, messageDetails['RESPONSE'], messageDetails['PAYLOAD'], testControlType).check()
def test_irisv2_messageStatus_sms_recurring_points_Approved_Stop( self, campaignType, testControlType, listType, channel, messageInfo): messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo) 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_messageStatus_upload_email_particulardate_point_notApproved_Reject( self, campaignType, testControlType, listType, channel, messageInfo): messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) 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'], reject={ 'status': 'CLOSED' }, approved='REJECTED').check()
def test_irisv2_getStatusBy_messageId_Yet_to_go(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) response = GetMonitoringDetails.getByMessageId( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], queryParam) actualResponse, expectedResponse = GetMonitoringDetails.formatingMonitorDetails( response, isScheduledMsg=True, isDeliveryBreakEnabled=False, forceUpdate=True) Assertion.constructAssertion( actualResponse == expectedResponse, 'Monitoring Details response Matched Actual: {} and Expected: {}'. format(actualResponse, expectedResponse))
def test_irisv2_message_edit_upcoming_create_plain_mobile_particulardate_datechangeTonow( self, campaignType, testControlType, listType, channel, messageInfo, statusCode, errorCode, errorDescription): 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) + 1 * 60 * 1000 } }) editInfo = CreateMessage.edit( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessage.assertResponse(editInfo['RESPONSE'], 400, expectedErrorCode=[errorCode], expectedErrorMessage=errorDescription)
def irisv2_message_edit_PARTICULARDATE_upcoming_create_execute_plain_mobile_schedulle_body_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') dateTime = Utils.getTime(hours=5, minutes=32, dateTimeFormat=True) messageDetails['PAYLOAD'].update({ 'schedule': { 'startDate': Utils.getTime(minutes=1, seconds=25, milliSeconds=True), 'endDate': Utils.getTime(minutes=40, milliSeconds=True), 'repeatOn': [1], 'repeatType': 'DAILY', 'scheduleType': 'RECURRING', 'hour': int(dateTime[11:13]), 'minute': int(dateTime[14:16]) } }) 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=1) 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=1).check()
def updateCronWithoutMessageId(messageId, cronStatus): if constant.config['cluster'] == 'nightly': cronDetails = message_calls().getCronIdWithVariantId( messageId, cronStatus) params = json.loads(['params']) params.pop('messageId') message_calls().updateParamsInCron(messageId) else: raise Exception('UpdateCronNotPermittedInCluster')
def validateOlderVersionsMarkedAsInactive(self,mapOfVersions): for version in range(self.version): listOfActiveStatus = message_calls().getVariantStatusByMessageId(self.messageId, version=mapOfVersions[version]) for eachStatus in listOfActiveStatus: Assertion.constructAssertion(eachStatus['active'] == False, 'Active Marked in Variant as :{}'.format(eachStatus['active']),verify=True) if eachStatus['cronTaskId'] != 0: cronDetail = message_calls().getCronDetails(eachStatus['cronTaskId']) Assertion.constructAssertion(cronDetail['status'] == 'CLOSED', 'For Older Version of Message where active is :{}, cron Detail have Status :{} and Expected is CLOSED'.format( eachStatus['active'], cronDetail['status']),verify=True)
def getStrategyIds(): programeId = message_calls().getProgrameId() allocationStrategyId = message_calls().getAllocationIdForPrograme( programeId) expirationStrategyId = message_calls().getExpiryIdForPrograme( programeId) return { 'programeId': int(programeId), 'allocationStrategyId': int(allocationStrategyId), 'expirationStrategyId': int(expirationStrategyId) }
def test_irisv2_editMessage_with_invalid_messageId(self, campaignType, testControlType, listType, channel, messageInfo, statusCode, errorCode, errorDescription): messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) editInfo = CreateMessage.edit(constant.config['node'][campaignType][testControlType]['CAMPAIGN']['ID'], 'hjsdgf7823jsd72v',messageDetails['PAYLOAD']) CreateMessage.assertResponse(editInfo['RESPONSE'], 400, expectedErrorCode=[errorCode], expectedErrorMessage=errorDescription.format(messageDetails['RESPONSE']['json']['entity']['id']))
def getDeepLinkValue(): deepLinkValue = message_calls().getDeepLinkvalue( message_calls().getAccountIdFromMeta( constant.config['mobilepush']['account']), message_calls().getKeyOfDeepLink()) randomKeyFromDeepLink = random.choice(list(deepLinkValue.keys())) linkFormed = deepLinkValue[randomKeyFromDeepLink]['link'] + '?' keysFrommLinked = deepLinkValue[randomKeyFromDeepLink]['keys'] for eachKey in keysFrommLinked: linkFormed = linkFormed + '{}={}&'.format( eachKey, randValues.randomString(5)) return linkFormed
def test_irisv2_editMessage_with_negative_campaignId(self, campaignType, testControlType, listType, channel, messageInfo, statusCode, errorCode, errorDescription): 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') editInfo = CreateMessage.edit(-1234, messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessage.assertResponse(editInfo['RESPONSE'], 400, expectedErrorCode=[errorCode], expectedErrorMessage=errorDescription)
def test_irisv2_getStatusBy_messageId_All_User_Skipp( self, campaignType, testControlType, channel, messageInfo, queryParam): messageDetails = CreateMessage.create(campaignType, testControlType, 'UPLOAD', channel, messageInfo, updateNode=True, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') messageDetails['PAYLOAD']['messageContent']['message_content_id_1'][ 'emailBody'] = '{{unsubscribe}},{{last_transacted_store_external_id_2}}' 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=1) approveRespone = AuthorizeMessage.approve( campaignType, testControlType, 'UPLOAD', channel, messageInfo, messageCreateResponse=editInfo) AuthorizeMessage.assertResponse(approveRespone, 200) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] AuthorizeMessageDBAssertion( campaignId, editInfo['RESPONSE'], editInfo['PAYLOAD'], testControlType, version=1, skippedReason=['No entry for last shopped store present']).check() response = GetMonitoringDetails.getByMessageId( constant.config['node'][campaignType][testControlType]['CAMPAIGN'] ['ID'], editInfo['RESPONSE']['json']['entity']['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 test_irisv2_messageStatus_push_particulardate_Approved_Stopt( 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) messageDetails = CreateMessage.create( campaignType, testControlType, listType, channel, messageInfo, campaignId=campaignInfo['ID'], updateNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') approveRespone = AuthorizeMessage.approve( campaignType, testControlType, listType, channel, messageInfo, campaignId=campaignInfo['ID'], messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) stopResponse = CreateMessage.stop( campaignInfo['ID'], approveRespone['json']['entity']['messageId']) CreateMessage.assertResponse(stopResponse, 200) CreateMessageDBAssertion( campaignInfo['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD'], reject={ 'status': 'CLOSED' }, approved='STOPPED').check() finally: IrisHelper.updateOrgId(actualOrgId) IrisHelper.updateOrgName(actualOrgName)
def test_reminder_edit_allToNotTransacted_particularDate_coupons(self, campaignType, testControlType, listType, channel, messageInfo): remindParams = { 'reminderStrategy': 'ALL', 'parentMessageId': constant.config['reminder']['coupon']['messageId'] } campaignId = constant.config['reminder']['coupon']['campaignId'] messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, listInfo='', campaignId=campaignId, remindParams=remindParams, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') editInfo = { 'messageContent': { 'message_content_id_1': { "storeType": "REGISTERED_STORE", "offers": [], "messageBody": "Edit Message {{first_name}} {{last_name}} {{fullname}} {{dynamic_expiry_date_after_1_days.FORMAT_2}} {{voucher}} {{valid_days_from_create}} {{valid_till_date.FORMAT_2}} {{optout}}", "channel": "SMS" } }, 'targetAudience': { "isDef": True, "orgUsers": [], "includeDefinition": { "parentMessageId": constant.config['reminder']['coupon']['messageId'], "defType": "parentMsgReminder", "reminderStrategy": "NOT_TRANSACTED" } }, 'schedule': {'scheduleType': 'PARTICULAR_DATE', 'scheduledDate': Utils.getTime(minutes=3, seconds=30, milliSeconds=True) } } editInfo = CreateMessage.edit(campaignId, messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD'], editInfo) message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION', version=1) approveRespone = AuthorizeMessage.approveWithCampaignAndMessageId(campaignId, editInfo['RESPONSE']['json']['entity'][ 'id']) AuthorizeMessage.assertResponse(approveRespone, 200) AuthorizeMessageDBAssertion(campaignId, editInfo['RESPONSE'], editInfo['PAYLOAD'], testControlType, version=1).check()
def getCampaignIDHavingNoMessage(campaignType, testControlType): campaigns = campaign_calls().getCampaignId(campaignType, testControlType) campaignId = None for each in campaigns: campaignId = each['campaignId'] if not message_calls().checkCampaignHaveMessage(campaignId): break return campaignId
def test_irisv2_getMessage_queryParam_withVariation_OfferType( self, campaignType, testControlType, listType, channel, messageInfo): CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo) campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] messageId = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][ messageInfo['scheduleType']['type']][messageInfo['offerType']][ 'RESPONSE']['json']['entity']['id'] for eachType in ['MESSAGE_TARGET_AUDIENCE', 'VARIANT_CREATION']: status = message_calls().waitForJobDetailsStatusToClose( messageId, eachType, maxNumberOfAttempts=20) if status: getMessageResponse = GetMessage.getMessageById( campaignId, messageId, [('includeVariant', 'true')]) GetMessage.assertResponse(getMessageResponse, 200) CreateMessageDBAssertion( campaignId, messageId, getMessageResponse['json']['entity']).check() VariantDBAssertion( campaignId, messageId, getMessageResponse['json']['entity']['messageVariantList'], offer=True).check() else: Assertion.constructAssertion( False, 'Variant_Creation is Not Closed in Specified time')
def test_irisv2_monitoring_partial_skippedReasons(self): listInfo = GetMonitoringDetails.createSkippedPartialList() messageInfo = { 'scheduleType': { 'type': 'IMMEDIATE' }, 'offerType': 'PLAIN', 'messageStrategy': { 'type': 'DEFAULT' }, 'channels': ['SMS', 'EMAIL'], 'useTinyUrl': False, 'encryptUrl': False, 'skipRateLimit': True } messageDetails = CreateMessage.create('LIVE', 'ORG', 'UPLOAD', 'MOBILE', messageInfo, listInfo=listInfo, updateNode=True, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose( messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') approveRespone = AuthorizeMessage.approve( 'LIVE', 'ORG', 'UPLOAD', 'MOBILE', messageInfo, messageCreateResponse=messageDetails) AuthorizeMessage.assertResponse(approveRespone, 200) time.sleep(150) queryParam = [('monitoring', 'true'), ('details', 'false'), ('deliveryBreakup', 'true')] response = GetMonitoringDetails.getByMessageId( constant.config['node']['LIVE']['ORG']['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['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 test_reminder_create_plain_transactionType_All_Sanity(self, campaignType, testControlType, listType, channel, messageInfo): remindParams = { 'reminderStrategy': 'ALL', 'parentMessageId': constant.config['reminder']['plain']['messageId'] } campaignId = constant.config['reminder']['plain']['campaignId'] messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, listInfo='', campaignId=campaignId, remindParams=remindParams, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION',sleepTime=20) approveRespone = AuthorizeMessage.approveWithCampaignAndMessageId(campaignId, messageDetails['RESPONSE']['json']['entity']['id']) AuthorizeMessage.assertResponse(approveRespone, 200) AuthorizeMessageDBAssertion(campaignId, messageDetails['RESPONSE'], messageDetails['PAYLOAD'], testControlType).check()
def check(self): self.validateMessageCollection() self.validateMessageJobDetailCollection() self.validateAuditLogs() if self.version > 0: mapOfVersions = message_calls().getMapOfVersions(self.messageId,self.version) self.validateOlderVersionsMarkedAsInactive(mapOfVersions) self.validateNumberOfInactiveVersions()
def validateGetAll(response, campaignId): numberOfMessageInCampaign = message_calls().getNumberOfMessagesInCampaign(campaignId) Assertion.constructAssertion(numberOfMessageInCampaign == len(response), 'NumberOf Messages In Db :{} and in response :{}'.format(numberOfMessageInCampaign, len(response))) for eachMessage in response: messageResponse = eachMessage CreateMessageDBAssertion(campaignId, messageResponse['messageId'], messageResponse, getAllTest=True).check()
def getCampaignID(campaignType, testControlType): campaigns = campaign_calls().getCampaignId(campaignType, testControlType) campaignId = None for each in campaigns: Logger.log('Checking Message for Campaign :{}'.format(each['campaignId'])) campaignId = each['campaignId'] if message_calls().checkCampaignHaveMessage(campaignId): break Logger.log('For GetCall CampaignId Finally Getting Used is :{}'.format(campaignId)) return campaignId
def test_irisv2_editMessage_with_negative_orgId(self, campaignType, testControlType, listType, channel, messageInfo, statusCode, errorCode, errorDescription): messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) actualOrgId = constant.config['orgId'] try: constant.config['orgId'] = -999999 editInfo = CreateMessage.edit(constant.config['node'][campaignType][testControlType]['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessage.assertResponse(editInfo['RESPONSE'], 401, expectedErrorCode=[errorCode], expectedErrorMessage=errorDescription) finally: constant.config['orgId'] = actualOrgId
def test_irisv2_editMessage_with_wrongAuth(self, campaignType, testControlType, listType, channel, messageInfo, statusCode, errorCode, errorDescription): messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, updateNode=True, lockNode=True) message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) previousUserName = None try: previousUserName = IrisHelper.updateUserName('WrongName') editInfo = CreateMessage.edit(constant.config['node'][campaignType][testControlType]['CAMPAIGN']['ID'], messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD']) CreateMessage.assertResponse(editInfo['RESPONSE'], 401, expectedErrorCode=[errorCode], expectedErrorMessage=errorDescription) finally: if previousUserName is not None: IrisHelper.updateUserName(previousUserName)
def irisv2_message_edit_RECURRING_upcoming_create_plain_mobile_schedulle_body_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) + 2 * 60 * 1000 } }) 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()
def test_reminder_edit_validation_parentMessageID_edit(self, campaignType, testControlType, listType, channel, messageInfo): remindParams = { 'reminderStrategy': 'ALL', 'parentMessageId': constant.config['reminder']['coupon']['messageId'] } campaignId = constant.config['reminder']['coupon']['campaignId'] messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo, listInfo='', campaignId=campaignId, remindParams=remindParams, lockNode=True) CreateMessage.assertResponse(messageDetails['RESPONSE'], 200) message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'], 'VARIANT_CREATION') editInfo = { 'messageContent': { 'message_content_id_1': { "storeType": "REGISTERED_STORE", "offers": [], "messageBody": "Edit Message {{first_name}} {{last_name}} {{fullname}} {{dynamic_expiry_date_after_1_days.FORMAT_2}} {{voucher}} {{valid_days_from_create}} {{valid_till_date.FORMAT_2}} {{optout}}", "channel": "SMS" } }, 'targetAudience': { "isDef": True, "orgUsers": [], "includeDefinition": { "parentMessageId": constant.config['reminder']['plain']['messageId'], "defType": "parentMsgReminder", "reminderStrategy": "COUPON_NOT_REDEEMED" } }, 'schedule': {'scheduleType': 'PARTICULAR_DATE', 'scheduledDate': Utils.getTime(minutes=3, seconds=30, milliSeconds=True) } } editInfo = CreateMessage.edit(campaignId, messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD'], editInfo) CreateMessage.assertResponse(editInfo['RESPONSE'], 400, expectedErrorCode=[3060], expectedErrorMessage=[ 'Invalid parent message id specified in target audience include definition for reminder message: Cannot change the parent message id of a reminder message while editing.'])
def getCronInfoWithVariants(self): mapOfVariantWithCron = dict() for eachJobDetails in self.messageDBDetails[ 'messageJobDetails_collection']['VARIANT_CREATION']: for varient in eachJobDetails['variant_detail']: cronInfo = message_calls().getCronIdWithVariantId( varient['_id'], self.cronStatus) if cronInfo is None: raise Exception( 'NoCronEntryFoundForVariantId :{}'.format(varient)) mapOfVariantWithCron.update({varient['_id']: cronInfo}) return mapOfVariantWithCron