Esempio n. 1
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']))
    def test_irisv2_message_edit_particularDate_live_create_plain_mobile_editMessage_approvedAndExecuted(
            self, campaignType, testControlType, listType, channel,
            messageInfo, editInfo, statusCode, errorCode, errorDescription):
        messageDetails = CreateMessage.create(campaignType,
                                              testControlType,
                                              listType,
                                              channel,
                                              messageInfo,
                                              updateNode=True)
        CreateMessage.assertResponse(messageDetails['RESPONSE'], 200)
        approveRespone = AuthorizeMessage.approve(
            campaignType,
            testControlType,
            listType,
            channel,
            messageInfo,
            messageCreateResponse=messageDetails)
        AuthorizeMessage.assertResponse(approveRespone, 200)
        time.sleep(180)

        editInfo = CreateMessage.edit(
            constant.config['node'][campaignType][testControlType]['CAMPAIGN']
            ['ID'], messageDetails['RESPONSE']['json']['entity']['id'],
            messageDetails['PAYLOAD'], editInfo)
        CreateMessage.assertResponse(
            editInfo['RESPONSE'],
            400,
            expectedErrorCode=[errorCode],
            expectedErrorMessage=errorDescription.format(
                messageDetails['RESPONSE']['json']['entity']['id']))
Esempio n. 3
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)
Esempio n. 4
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()
Esempio n. 6
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']))
Esempio n. 7
0
 def test_irisv2_message_edit_immediate_live_create_plain_mobile_negativeCases(self, campaignType,
                                                                               testControlType, listType,
                                                                               channel, messageInfo,
                                                                               editInfo, statusCode, errorCode,
                                                                               errorDescription):
     messageDetails = CreateMessage.create(campaignType, testControlType, listType, channel, messageInfo,
                                           updateNode=True, lockNode=True)
     CreateMessage.assertResponse(messageDetails['RESPONSE'], 200)
     editInfo = CreateMessage.edit(constant.config['node'][campaignType][testControlType]['CAMPAIGN']['ID'],
                                   messageDetails['RESPONSE']['json']['entity']['id'], messageDetails['PAYLOAD'],
                                   editInfo)
     CreateMessage.assertResponse(editInfo['RESPONSE'], 400, expectedErrorCode=[errorCode],
                                  expectedErrorMessage=errorDescription)
Esempio n. 8
0
 def test_irisV2_editMessage_afterCampaign_expires(self, description, campaignType, testControlType, channel,
                                                   messageInfo, statusCode, errorCode, errorDescription):
     messageDetails = CreateMessage.create(campaignType, testControlType, 'LOYALTY', channel, messageInfo,
                                           updateNode=True)
     campaignInfo = constant.config['node'][campaignType][testControlType]['CAMPAIGN']
     CreateMessage.assertResponse(messageDetails['RESPONSE'], 200)
     editInfo = {'endDate': Utils.getTime(minutes=1, milliSeconds=True)}
     editInfo = CreateCampaign.edit(campaignInfo, editInfo)
     time.sleep(61)
     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)
Esempio n. 9
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)
Esempio n. 10
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))
Esempio n. 11
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()
Esempio n. 12
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()
Esempio n. 13
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)
Esempio n. 14
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
Esempio n. 15
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.'])
Esempio n. 16
0
    def test_irisv2_message_edit_immediate_live_create_plain_mobile_editStickyListMessage_negativeCase(self,
                                                                                                         campaignType,
                                                                                                         testControlType,
                                                                                                         channel,
                                                                                                         messageInfo,statusCode,errorCode,errorDescription):

        CreateAudience.getPocUsers()
        constant.config['FilterListID'] = CreateAudience.FilterList('LAPSED', 'ORG', campaignCheck=False)['ID']
        messageDetails = CreateMessage.create(campaignType, testControlType, 'ORG_USERS', channel, messageInfo,
                                              derivedListInfo={'excludeUsers': [], 'includeUsers': ':1'})
        CreateMessage.assertResponse(messageDetails['RESPONSE'], 200)
        messageDetails['PAYLOAD'].pop('targetAudience')
        messageDetails['PAYLOAD'].update({
            'targetAudience': {
                'orgUsers': [self.listInfoFilter['ID']]
            }
        })
        message_calls().waitForJobDetailsStatusToClose(messageDetails['RESPONSE']['json']['entity']['id'],
                                                       'VARIANT_CREATION')
        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)
Esempio n. 17
0
    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()