def test_route_discussion_post_v2(test_app, discussion_with_2_phase_interface_v2, post_related_to_sub_idea_1, subidea_1, test_session): from assembl.lib.frontend_urls import FrontendUrls from assembl import models slug = discussion_with_2_phase_interface_v2.slug route = "/%s/posts/%s" % (slug, quote_plus( post_related_to_sub_idea_1.uri())) print route resp = test_app.get(route) assert resp.status_int == 303 thread_phase = test_session.query(models.DiscussionPhase).filter( models.DiscussionPhase.identifier == "thread").all()[0] headers = get_response_headers(resp) furl = FrontendUrls(discussion_with_2_phase_interface_v2) idea_id = subidea_1.graphene_id() phase_identifier = thread_phase.identifier phase_id = thread_phase.graphene_id() post_id = post_related_to_sub_idea_1.graphene_id() expected_path = furl.get_frontend_url('post', phase=phase_identifier, themeId=idea_id, phaseId=phase_id, element=post_id) assert expected_path in headers['Location']
def test_route_discussion_idea_v2(test_app, discussion_with_2_phase_interface_v2, post_related_to_sub_idea_1, subidea_1, test_session): from assembl.lib.frontend_urls import FrontendUrls from assembl import models slug = discussion_with_2_phase_interface_v2.slug route = "/debate/%s/idea/%s" % (slug, quote_plus(subidea_1.uri())) print(route) resp = test_app.get(route) assert resp.status_int == 303 thread_phase = test_session.query(models.DiscussionPhase).\ filter_by(identifier='thread').first() furl = FrontendUrls(discussion_with_2_phase_interface_v2) headers = get_response_headers(resp) phase_identifier = thread_phase.identifier phase_id = thread_phase.graphene_id() idea_id = subidea_1.graphene_id() expected_path = furl.get_frontend_url('idea', phase=phase_identifier, phaseId=phase_id, themeId=idea_id) assert expected_path in headers['Location']
def resolve_login_data(self, args, context, info): # if the debate is public, but has an SSO set and a prefernece to redirect publically # this URL would be used discussion_id = context.matchdict['discussion_id'] discussion = models.Discussion.get(discussion_id) prefs = discussion.preferences next_view = args.get('next_view') or False auth_backend = prefs.get('authorization_server_backend') or None landing_page = prefs.get('landing_page') or False if auth_backend and landing_page: from assembl.views.auth.views import get_social_autologin route = get_social_autologin(context, discussion, next_view) local = False url = urljoin(discussion.get_base_url(), route) else: # Just a regular discussion login, but a route from perspective of React-Router # Do not pass any next view by default. It's responsibility of the caller from assembl.lib.frontend_urls import FrontendUrls furl = FrontendUrls(discussion) route = furl.get_frontend_url('ctxLogin') if next_view: route = furl.append_query_string(route, next=next_view) local = True url = route return URLMeta(local=local, url=url)
def test_get_frontend_route_none(discussion, idea_with_en_fr, reply_post_1): from assembl.lib.frontend_urls import FrontendUrls route_name = None route_name_2 = "" route_name_3 = "I definitely don't exist" furl = FrontendUrls(discussion) resp = furl.get_frontend_url(route_name) assert resp is None resp = furl.get_frontend_url(route_name_2) assert resp is None resp = furl.get_frontend_url(route_name_3) assert resp is None
def test_route_discussion_idea_v2(test_app, discussion_with_2_phase_interface_v2, timeline_phase2_interface_v2, post_related_to_sub_idea_1, subidea_1): slug = discussion_with_2_phase_interface_v2.slug route = "/debate/%s/idea/%s" % (slug, quote_plus(subidea_1.uri())) print route resp = test_app.get(route) assert resp.status_int == 303 from assembl.lib.frontend_urls import FrontendUrls furl = FrontendUrls(discussion_with_2_phase_interface_v2) headers = get_response_headers(resp) phase_id = timeline_phase2_interface_v2['identifier'] idea_id = subidea_1.graphene_id() expected_path = furl.get_frontend_url('idea', phase=phase_id, themeId=idea_id) assert expected_path in headers['Location']
def test_get_frontend_route_post(phases, discussion, idea_with_en_fr, reply_post_1): from assembl.lib.frontend_urls import FrontendUrls route_name = "post" furl = FrontendUrls(discussion) idea_id = to_global_id('Idea', idea_with_en_fr.id) element = to_global_id('Post', reply_post_1) thread = phases['thread'] options = { 'slug': discussion.slug, 'phase': thread.identifier, 'themeId': idea_id, 'element': element } resp = furl.get_frontend_url(route_name, **options) expected = "/{slug}/debate/{phase}/theme/{themeId}/#{element}".format( slug=discussion.slug, phase=thread.identifier, themeId=idea_id, element=element) assert resp == expected
def test_route_discussion_idea_v2( test_app, discussion_with_2_phase_interface_v2, post_related_to_sub_idea_1, subidea_1, test_session): from assembl.lib.frontend_urls import FrontendUrls from assembl import models slug = discussion_with_2_phase_interface_v2.slug route = "/debate/%s/idea/%s" % ( slug, quote_plus(subidea_1.uri())) print route resp = test_app.get(route) assert resp.status_int == 303 thread_phase = test_session.query(models.DiscussionPhase).\ filter_by(identifier='thread').first() furl = FrontendUrls(discussion_with_2_phase_interface_v2) headers = get_response_headers(resp) phase_identifier = thread_phase.identifier phase_id = thread_phase.graphene_id() idea_id = subidea_1.graphene_id() expected_path = furl.get_frontend_url( 'idea', phase=phase_identifier, phaseId=phase_id, themeId=idea_id) assert expected_path in headers['Location']
def test_route_discussion_post_v2( test_app, discussion_with_2_phase_interface_v2, post_related_to_sub_idea_1, subidea_1, test_session): from assembl.lib.frontend_urls import FrontendUrls from assembl import models slug = discussion_with_2_phase_interface_v2.slug route = "/%s/posts/%s" % ( slug, quote_plus(post_related_to_sub_idea_1.uri())) print route resp = test_app.get(route) assert resp.status_int == 303 thread_phase = test_session.query(models.DiscussionPhase).filter( models.DiscussionPhase.identifier == "thread").all()[0] headers = get_response_headers(resp) furl = FrontendUrls(discussion_with_2_phase_interface_v2) idea_id = subidea_1.graphene_id() phase_identifier = thread_phase.identifier phase_id = thread_phase.graphene_id() post_id = post_related_to_sub_idea_1.graphene_id() expected_path = furl.get_frontend_url( 'post', phase=phase_identifier, themeId=idea_id, phaseId=phase_id, element=post_id) assert expected_path in headers['Location']