def check_address_valid_case_updated_events(context):
    address_valid_case_ids = [case_id['CASE_ID'] for case_id in context.bulk_uninvalidated_addresses]
    context.case_updated_events = get_case_updated_events(context, len(address_valid_case_ids))
    test_helper.assertEqual(len(context.case_updated_events), len(context.bulk_uninvalidated_addresses))
    for event in context.case_updated_events:
        test_helper.assertFalse(event['payload']['collectionCase']['addressInvalid'],
                                'Address invalid flag must be "False" on all updated events')
        test_helper.assertIn(event['payload']['collectionCase']['id'], address_valid_case_ids,
                             'Unexpected case ID found on updated event')
예제 #2
0
def test_uacs_correct_for_estab_units(context, expected_uacs,
                                      questionnaire_type):
    questionnaire_types_list = questionnaire_type.replace('[', '').replace(
        ']', '').split(',')
    test_helper.assertEqual(len(context.messages_received), expected_uacs)

    for msg in context.uac_created_events:
        _validate_uac_message(msg)
        test_helper.assertIn(msg['payload']['uac']['questionnaireId'][:2],
                             questionnaire_types_list)
def check_for_bad_messages(context):
    time.sleep(30)
    response = requests.get(f'{Config.EXCEPTION_MANAGER_URL}/badmessages/summary')
    bad_messages = response.json()

    for bad_message in bad_messages:
        test_helper.assertGreater(bad_message['seenCount'], 1,
                                  msg=f'Seen count is not greater than 1, failed bad message summary: {bad_message}')
        test_helper.assertIn(bad_message['messageHash'], context.message_hashes,
                             msg=f'Unknown bad message hash, message summary: {bad_message}')
def rops_get_case_details_page(context):
    context.case_details = context.case_created_events[0]['payload'][
        'collectionCase']
    case_details_page_response = requests.get(
        f'{Config.PROTOCOL}://{Config.ROPS_HOST}:{Config.ROPS_PORT}/case-details?case_id={context.first_case["id"]}'
    )
    case_details_page_response.raise_for_status()
    context.case_details_text = case_details_page_response.text

    test_helper.assertIn('Link QID', context.case_details_text)
예제 #5
0
def check_qid_link_confirmation_page(context):
    qid_link_page = context.qid_link_response.text
    test_helper.assertIn('Confirm linking this QID and Case ID', qid_link_page)
    test_helper.assertIn(f'<b>QID:</b> {context.requested_qid}', qid_link_page)
    test_helper.assertIn(f'<b>Case ID:</b> {context.case_details["id"]}',
                         qid_link_page)
    test_helper.assertIn('Link QID', qid_link_page)
예제 #6
0
def check_survey_launched_case_updated_events(context, case_ids):
    context.messages_received = []
    start_listening_to_rabbit_queue(
        Config.RABBITMQ_RH_OUTBOUND_CASE_QUEUE,
        functools.partial(store_all_msgs_in_context,
                          context=context,
                          expected_msg_count=len(case_ids),
                          type_filter='CASE_UPDATED'))
    for message in context.messages_received:
        test_helper.assertTrue(
            message['payload']['collectionCase']['surveyLaunched'],
            (f'Expected to find {len(case_ids)} CASE_UPDATED events as a result of survey launches '
             f'found event with "surveyLaunched"=False, cases expected={case_ids}'
             ))
        test_helper.assertIn(message['payload']['collectionCase']['id'],
                             case_ids, 'Found event for unexpected case')
def check_case_updated_event(context):
    context.case_updated_events = get_case_updated_events(context, 1)
    collection_case = context.case_updated_events[0]['payload']['collectionCase']

    test_helper.assertIn(collection_case['id'], context.rm_case_updated['caseId'])
    test_helper.assertEqual(collection_case['treatmentCode'], context.rm_case_updated['treatmentCode'])
    test_helper.assertEqual(collection_case['address']['estabType'], context.rm_case_updated['estabType'])
    test_helper.assertEqual(collection_case['oa'], context.rm_case_updated['oa'])
    test_helper.assertEqual(collection_case['lsoa'], context.rm_case_updated['lsoa'])
    test_helper.assertEqual(collection_case['msoa'], context.rm_case_updated['msoa'])
    test_helper.assertEqual(collection_case['lad'], context.rm_case_updated['lad'])
    test_helper.assertEqual(collection_case['fieldCoordinatorId'],
                            context.rm_case_updated['fieldCoordinatorId'])
    test_helper.assertEqual(collection_case['fieldOfficerId'], context.rm_case_updated['fieldOfficerId'])
    test_helper.assertEqual(collection_case['address']['latitude'], context.rm_case_updated['latitude'])
    test_helper.assertEqual(collection_case['address']['longitude'], context.rm_case_updated['longitude'])
    test_helper.assertFalse(collection_case['skeleton'], 'Skeleton flag should be removed from updated case')
예제 #8
0
def check_address_invalid_case_updated_events(context):
    address_invalid_case_ids = set(context.bulk_invalid_addresses.keys())
    case_updated_events = get_case_updated_events(
        context, len(address_invalid_case_ids))
    test_helper.assertEqual(len(case_updated_events),
                            len(context.bulk_invalid_addresses))
    for event in case_updated_events:
        test_helper.assertTrue(
            event['payload']['collectionCase']['addressInvalid'],
            'Address invalid flag must be "True" on all updated events')
        test_helper.assertIn(event['payload']['collectionCase']['id'],
                             address_invalid_case_ids,
                             'Unexpected case ID found on updated event')

    context.bulk_invalid_address_file.unlink()
    if Config.BULK_INVALID_ADDRESS_BUCKET_NAME:
        clear_bucket(Config.BULK_INVALID_ADDRESS_BUCKET_NAME)
예제 #9
0
def deactivate_uac_events_logged_against_all_uac_qid_pairs(context):
    for case in context.case_created_events:
        actual_logged_events = get_logged_events_for_case_by_id(
            case["payload"]["collectionCase"]["id"])
        actual_logged_event_types = [
            event['eventType'] for event in actual_logged_events
        ]
        test_helper.assertIn(
            'DEACTIVATE_UAC',
            actual_logged_event_types,
            msg=(f'Expected event type = {"DEACTIVATE_UAC"},'
                 f' actual logged event types = {actual_logged_event_types}'))

    if hasattr(context, 'bulk_deactivate_uac_file'):
        context.bulk_deactivate_uac_file.unlink()

    if Config.BULK_DEACTIVATE_UAC_BUCKET_NAME:
        clear_bucket(Config.BULK_DEACTIVATE_UAC_BUCKET_NAME)
예제 #10
0
def check_cases_are_updated_with_correct_refusal_types(context):
    case_updated_events = get_case_updated_events(context,
                                                  len(context.bulk_refusals))
    for event in case_updated_events:
        test_helper.assertIn(
            event['payload']['collectionCase']['id'],
            context.bulk_refusals.keys(),
            'Case updated events should only be emitted for refused cases')
        expected_refusal_type = context.bulk_refusals[event['payload']
                                                      ['collectionCase']['id']]
        test_helper.assertEqual(
            event['payload']['collectionCase']['refusalReceived'],
            expected_refusal_type,
            'Refusal type on the case updated events should match the expected type from the bulk file'
        )

    context.bulk_refusals_file.unlink()
    if Config.BULK_REFUSAL_BUCKET_NAME:
        clear_bucket(Config.BULK_REFUSAL_BUCKET_NAME)
예제 #11
0
def check_address_valid_case_updated_events(context):
    address_valid_case_ids = [
        case_id['CASE_ID'] for case_id in context.bulk_uninvalidated_addresses
    ]
    context.case_updated_events = get_case_updated_events(
        context, len(address_valid_case_ids))
    test_helper.assertEqual(len(context.case_updated_events),
                            len(context.bulk_uninvalidated_addresses))
    for event in context.case_updated_events:
        test_helper.assertFalse(
            event['payload']['collectionCase']['addressInvalid'],
            'Address invalid flag must be "False" on all updated events')
        test_helper.assertIn(event['payload']['collectionCase']['id'],
                             address_valid_case_ids,
                             'Unexpected case ID found on updated event')

    context.bulk_uninvalidated_addresses_file.unlink()
    if Config.BULK_UNINVALIDATED_ADDRESS_BUCKET_NAME:
        clear_bucket(Config.BULK_UNINVALIDATED_ADDRESS_BUCKET_NAME)
예제 #12
0
 def new_address_load_success_callback(db_result, timeout_deadline):
     # Check we have the right number of cases and all the expected case ID's are present
     if len(db_result) == len(context.bulk_new_addresses):
         new_address_case_ids = {
             case_created['payload']['collectionCase']['id']
             for case_created in context.case_created_events
         }
         for case_id in (result[0] for result in db_result):
             test_helper.assertIn(
                 case_id, new_address_case_ids,
                 f'Found case ID {case_id} in action plan {context.action_plan_id} '
                 f'with no matching created event from the new address bulk load'
             )
         return True
     if time.time() > timeout_deadline:
         test_helper.fail(
             "Didn't find all new address cases in action database before the time out"
         )
     return False
예제 #13
0
def mark_cases_as_invalid(context):
    invalid_address_case_ids = [
        case['payload']['collectionCase']['id']
        for case in context.case_created_events
    ]

    for case_id in invalid_address_case_ids:
        send_invalid_address_message_to_rabbit(case_id, "CC")

    case_updated_events = get_case_updated_events(
        context, len(context.case_created_events))
    for event in case_updated_events:
        test_helper.assertIn(event['payload']['collectionCase']['id'],
                             invalid_address_case_ids,
                             'Unexpected case ID found on updated event')
    context.cancels_to_ignore = []
    start_listening_to_rabbit_queue(
        Config.RABBITMQ_OUTBOUND_FIELD_QUEUE,
        functools.partial(ignore_field_cancel_msgs,
                          context=context,
                          expected_msg_count=len(case_updated_events)))
예제 #14
0
def rops_results(context):
    sorted_cases = sorted(context.cases_by_postcode,
                          key=operator.itemgetter('organisationName',
                                                  'addressLine1', 'caseType',
                                                  'addressLevel'))

    # Check the order returned by case API
    test_helper.assertEqual(
        context.cases_by_postcode, sorted_cases,
        'The API should return the cases in the correct order')

    # Check the expected data is on the page
    postcode_result_text = context.postcode_result.text
    test_helper.assertIn(
        f'{context.number_of_cases} results for postcode: "{context.postcode}"',
        postcode_result_text)
    case_page_locations = []
    for case in context.cases_by_postcode:
        test_helper.assertIn(case['caseRef'], postcode_result_text)
        test_helper.assertIn(case['addressLine1'], postcode_result_text)
        test_helper.assertIn(case['uprn'], postcode_result_text)
        test_helper.assertIn(case['estabType'], postcode_result_text)
        case_page_locations.append({
            'id':
            case['id'],
            'location':
            postcode_result_text.find(case['caseRef'])
        })

    # Check the cases appear in the expected order on the page
    case_order_on_page = [
        case['id'] for case in sorted(case_page_locations,
                                      key=operator.itemgetter('location'))
    ]
    test_helper.assertEqual(
        case_order_on_page, [case['id'] for case in sorted_cases],
        'The order of cases should be in order on the page')
예제 #15
0
def rops_check_case_details_page(context):
    test_helper.assertIn(context.case_details["caseRef"],
                         context.case_details_text)
    test_helper.assertIn(context.case_details["address"]["addressLevel"],
                         context.case_details_text)
    test_helper.assertIn(context.case_details["caseType"],
                         context.case_details_text)
    test_helper.assertIn(str(context.case_details["skeleton"]),
                         context.case_details_text)
    test_helper.assertIn(context.case_details["collectionExerciseId"],
                         context.case_details_text)
    test_helper.assertIn(context.case_details["lsoa"],
                         context.case_details_text)
    test_helper.assertNotIn("RM_UAC_CREATED", context.case_details_text)
예제 #16
0
def rops_get_CCS_case_details_page(context):
    context.case_details = context.first_case
    context.case_details_text = get_case_details_page(
        context.first_case['id']).text
    test_helper.assertIn('Link QID', context.case_details_text)
예제 #17
0
def rops_get_case_details_page(context):
    context.case_details = context.case_created_events[0]['payload'][
        'collectionCase']
    context.case_details_text = get_case_details_page(
        context.first_case['id']).text
    test_helper.assertIn('Link QID', context.case_details_text)
예제 #18
0
def qid_details_page(context):
    response_text = context.qid_link_response.text

    test_helper.assertIn(f'<b>QID:</b> {context.requested_qid}', response_text)
예제 #19
0
def linking_non_ccs_qid_to_ccs_case_forbidden_message(context):
    response_text = context.qid_link_response.text

    test_helper.assertIn('Linking a non CCS QID to a CCS case is forbidden',
                         response_text)
예제 #20
0
def qid_failed_message(context):
    response_text = context.qid_link_response.text

    test_helper.assertIn('QID does not exist in RM', response_text)
예제 #21
0
def qid_linked_message_appears(context):
    response_text = context.qid_link_response.text

    test_helper.assertIn('QID link has been submitted', response_text)
예제 #22
0
def search_for_fake_qid(context):
    test_helper.assertIn('Link QID', context.case_details_text)
    context.qid_link_response = get_rops_qid_link_page(
        case_id=context.case_details['id'], qid='nonsense')

    test_helper.assertEqual(context.qid_link_response.status_code, 200)
예제 #23
0
def rops_home_page(context):
    home_page_response = requests.get(
        f'{Config.PROTOCOL}://{Config.ROPS_HOST}:{Config.ROPS_PORT}')
    home_page_response.raise_for_status()
    home_text = home_page_response.text
    test_helper.assertIn('Enter a postcode', home_text)
예제 #24
0
def check_address_update_case_updated_events(context):
    address_update_case_ids = set(row['CASE_ID']
                                  for row in context.bulk_address_updates)
    context.case_updated_events = get_case_updated_events(
        context, len(address_update_case_ids))
    test_helper.assertEqual(len(context.case_updated_events),
                            len(context.bulk_address_updates))
    for event in context.case_updated_events:
        collection_case = event['payload']['collectionCase']
        test_helper.assertIn(collection_case['id'], address_update_case_ids,
                             'Unexpected case ID found on updated event')
        test_helper.assertEqual(
            collection_case['treatmentCode'],
            context.bulk_address_updates[0]['TREATMENT_CODE'])
        test_helper.assertEqual(collection_case['address']['estabType'],
                                context.bulk_address_updates[0]['ESTAB_TYPE'])
        test_helper.assertEqual(collection_case['oa'],
                                context.bulk_address_updates[0]['OA'])
        test_helper.assertEqual(collection_case['lsoa'],
                                context.bulk_address_updates[0]['LSOA'])
        test_helper.assertEqual(collection_case['msoa'],
                                context.bulk_address_updates[0]['MSOA'])
        test_helper.assertEqual(collection_case['lad'],
                                context.bulk_address_updates[0]['LAD'])
        test_helper.assertEqual(
            collection_case['fieldCoordinatorId'],
            context.bulk_address_updates[0]['FIELDCOORDINATOR_ID'])
        test_helper.assertEqual(
            collection_case['fieldOfficerId'],
            context.bulk_address_updates[0]['FIELDOFFICER_ID'])
        test_helper.assertEqual(collection_case['address']['latitude'],
                                context.bulk_address_updates[0]['LATITUDE'])
        test_helper.assertEqual(collection_case['address']['longitude'],
                                context.bulk_address_updates[0]['LONGITUDE'])
        test_helper.assertTrue(
            collection_case['metadata']['secureEstablishment'],
            'Secure flag should be changed to true')
        test_helper.assertEqual(collection_case['printBatch'],
                                context.bulk_address_updates[0]['PRINT_BATCH'])
        test_helper.assertEqual(
            collection_case['ceExpectedCapacity'],
            int(context.bulk_address_updates[0]['CE_EXPECTED_CAPACITY']))
        test_helper.assertEqual(
            collection_case['htcWillingness'],
            context.bulk_address_updates[0]['HTC_WILLINGNESS'])
        test_helper.assertEqual(collection_case['htcDigital'],
                                context.bulk_address_updates[0]['HTC_DIGITAL'])
        test_helper.assertEqual(collection_case['address']['uprn'],
                                context.bulk_address_updates[0]['UPRN'])
        test_helper.assertEqual(collection_case['address']['estabUprn'],
                                context.bulk_address_updates[0]['ESTAB_UPRN'])
        test_helper.assertEqual(
            collection_case['address']['addressLine1'],
            context.bulk_address_updates[0]['ADDRESS_LINE1'])
        test_helper.assertEqual(
            collection_case['address']['addressLine2'],
            context.bulk_address_updates[0]['ADDRESS_LINE2'])
        test_helper.assertEqual(
            collection_case['address']['addressLine3'],
            context.bulk_address_updates[0]['ADDRESS_LINE3'])
        test_helper.assertEqual(collection_case['address']['abpCode'],
                                context.bulk_address_updates[0]['ABP_CODE'])
        test_helper.assertEqual(
            collection_case['address']['organisationName'],
            context.bulk_address_updates[0]['ORGANISATION_NAME'])
        test_helper.assertEqual(collection_case['address']['postcode'],
                                context.bulk_address_updates[0]['POSTCODE'])
        test_helper.assertEqual(collection_case['address']['townName'],
                                context.bulk_address_updates[0]['TOWN_NAME'])

        test_helper.assertFalse(
            collection_case['skeleton'],
            'Skeleton flag should be removed from updated case')

    context.bulk_address_updates_file.unlink()
    if Config.BULK_ADDRESS_UPDATE_BUCKET_NAME:
        clear_bucket(Config.BULK_ADDRESS_UPDATE_BUCKET_NAME)
예제 #25
0
def submit_qid_link_on_r_ops(context):
    test_helper.assertIn('Link QID', context.case_details_text)
    context.qid_link_response = submit_rops_qid_link(
        case_id=context.case_details['id'], qid=context.requested_qid)
    test_helper.assertEqual(context.qid_link_response.status_code, 200)