Example #1
0
    def test_build_metadata_context(self):
        render_data = build_metadata_context(self.metadata)

        self.assertIsNotNone(render_data)

        survey_data = render_data['survey']
        self.assertIsNotNone(survey_data)

        self.assertEqual('7 July 2016',
                         survey_data['return_by'].strftime('%-d %B %Y'))
        self.assertEqual('2 February 2016',
                         survey_data['start_date'].strftime('%-d %B %Y'))
        self.assertEqual('3 March 2016',
                         survey_data['end_date'].strftime('%-d %B %Y'))
        self.assertIsNone(survey_data['employment_date'])
        self.assertIsNone(survey_data['region_code'])
        self.assertEqual(self.jwt["period_str"], survey_data['period_str'])

        respondent = render_data['respondent']
        self.assertIsNotNone(respondent)

        self.assertEqual(self.jwt["ru_ref"], respondent['respondent_id'])
        self.assertEqual(self.jwt["ru_name"], respondent['address']['name'])
        self.assertEqual(self.jwt["trad_as"],
                         respondent['address']['trading_as'])
    def metadata_context_wrapper(*args, **kwargs):
        metadata = get_metadata(current_user)
        if not metadata:
            raise NoTokenException(401)

        metadata_context = build_metadata_context(metadata)

        return func(*args, metadata_context=metadata_context, **kwargs)
Example #3
0
    def url_prefix_wrapper(*args, **kwargs):
        metadata = get_metadata(current_user)
        metadata_context = build_metadata_context(metadata)

        url_prefix = '/questionnaire/{}/{}/{}'.format(
            metadata_context['eq_id'],
            metadata_context['form_type'],
            metadata_context['collection_id'],
        )

        return func(*args, url_prefix=url_prefix, **kwargs)
Example #4
0
    def test_build_metadata_context(self):
        metadata_context = build_metadata_context(self.jwt)

        self.assertIsNotNone(metadata_context)
        self.assertEqual('2016-07-17', metadata_context['return_by'])
        self.assertEqual('2016-02-22', metadata_context['ref_p_start_date'])
        self.assertEqual('2016-03-30', metadata_context['ref_p_end_date'])
        self.assertIsNone(metadata_context.get('employment_date'))
        self.assertIsNone(metadata_context.get('region_code'))
        self.assertEqual(self.jwt['period_str'], metadata_context['period_str'])
        self.assertEqual(self.jwt['ru_ref'], metadata_context['ru_ref'])
        self.assertEqual(self.jwt['ru_name'], metadata_context['ru_name'])
        self.assertEqual(self.jwt['trad_as'], metadata_context['trad_as'])
Example #5
0
def _build_template(current_location, context, template, routing_path=None):
    metadata = get_metadata(current_user)
    metadata_context = build_metadata_context(metadata)

    answer_store = get_answer_store(current_user)
    front_end_navigation = _get_front_end_navigation(answer_store,
                                                     current_location,
                                                     metadata, routing_path)

    path_finder = PathFinder(g.schema_json, answer_store, metadata)
    previous_location = path_finder.get_previous_location(current_location)

    previous_url = previous_location.url(
        metadata) if previous_location is not None else None
    return _render_template(context, current_location, template,
                            front_end_navigation, metadata_context,
                            previous_url)
Example #6
0
    def test_defend_against_XSS_attack(self):
        jwt = self.jwt.copy()
        escaped_bad_characters = r'<">\\'

        for key in PROPERTIES:
            jwt[key] = '<">\\'

        metadata_context = build_metadata_context(jwt)

        self.assertEqual(escaped_bad_characters, metadata_context['user_id'])
        self.assertEqual(escaped_bad_characters, metadata_context['period_id'])
        self.assertEqual(escaped_bad_characters, metadata_context['period_str'])
        self.assertEqual(escaped_bad_characters, metadata_context['ru_ref'])
        self.assertEqual(escaped_bad_characters, metadata_context['ru_name'])
        self.assertEqual(escaped_bad_characters, metadata_context['trad_as'])
        self.assertEqual(escaped_bad_characters, metadata_context['region_code'])
        self.assertEqual(escaped_bad_characters, metadata_context['collection_id'])
Example #7
0
def _build_template(current_location, context=None, template=None):
    metadata = get_metadata(current_user)
    metadata_context = build_metadata_context(metadata)

    answer_store = get_answer_store(current_user)
    completed_blocks = get_completed_blocks(current_user)

    navigation = Navigation(g.schema_json, answer_store, metadata, completed_blocks)
    front_end_navigation = navigation.build_navigation(current_location.group_id, current_location.group_instance)

    path_finder = PathFinder(g.schema_json, answer_store, metadata)
    previous_location = path_finder.get_previous_location(current_location)

    previous_url = None

    is_first_block_for_group = SchemaHelper.is_first_block_id_for_group(g.schema_json, current_location.group_id, current_location.block_id)

    if previous_location is not None and not is_first_block_for_group and not current_location.block_id == 'thank-you':
        previous_url = previous_location.url(metadata)

    return _render_template(context, current_location.block_id, front_end_navigation, metadata_context, current_location, previous_url, template)
Example #8
0
    def metadata_context_wrapper(*args, **kwargs):
        metadata = get_metadata(current_user)
        metadata_context = build_metadata_context(metadata)

        return func(*args, metadata_context=metadata_context, **kwargs)