예제 #1
0
    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')
예제 #2
0
 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)
예제 #3
0
 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']))
예제 #4
0
 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()
예제 #5
0
 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()
예제 #6
0
 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()
예제 #7
0
 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))
예제 #8
0
 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()
예제 #10
0
파일: preCheck.py 프로젝트: anupsl/pyApps
    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')
예제 #11
0
 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)
예제 #12
0
 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)
     }
예제 #13
0
 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']))
예제 #14
0
 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
예제 #15
0
 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)
예제 #16
0
 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))
예제 #17
0
    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)
예제 #18
0
    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()
예제 #19
0
 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
예제 #20
0
    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')
예제 #21
0
 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))
예제 #22
0
 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()
예제 #23
0
 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()
예제 #24
0
 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()
예제 #25
0
 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
예제 #26
0
 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
예제 #27
0
 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)
예제 #28
0
 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()
예제 #29
0
    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.'])
예제 #30
0
 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