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)
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)
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'])
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)
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'])
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)
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)