def _render_tag(self, user, local_site=None): """Utility function to render the tag. This will render the template for the tag, providing all necessary arguments. It will also check the rendered string is of the expected type before returning it. Args: user (django.contrib.auth.models.User): The user to pass to the tag. local_site (reviewboard.site.models.LocalSite, optional): An optional Local Site for the request. Returns: django.utils.safestring.SafeText: The rendered content. """ request = RequestFactory().get('/s/local-site-1/') request.user = user if local_site is not None: request._local_site_name = local_site.name request.local_site = local_site t = Template('{% load accounts %}' '{% js_user_session_info %}') rendered = t.render(Context({ 'request': request, })) self.assertIsInstance(rendered, SafeText) return rendered
def test_dispatch_with_no_local_site(self): """Testing CheckLocalSiteAccessViewMixin.dispatch with no LocalSite""" class MyView(CheckLocalSiteAccessViewMixin, View): def get(view, *args, **kwargs): self.assertIsNone(view.local_site) return HttpResponse('success') view = MyView.as_view() request = RequestFactory().request() request.resolver_match = ResolverMatch(view, [], {}) request.local_site = None request.user = User.objects.get(username='******') response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(response.content, 'success')
def test_dispatch_with_local_site_and_anonymous(self): """Testing CheckLocalSiteAccessViewMixin.dispatch with LocalSite and anonymous user """ class MyView(CheckLocalSiteAccessViewMixin, View): def get(view, *args, **kwargs): self.assertIsNotNone(view.local_site) self.assertEqual(view.local_site.name, 'local-site-1') return HttpResponse('success') view = MyView.as_view() request = RequestFactory().request() request.resolver_match = ResolverMatch(view, [], {}) request.local_site = LocalSite.objects.get(name='local-site-1') request.user = AnonymousUser() response = view(request, local_site_name='local-site-1') self.assertIsInstance(response, HttpResponseRedirect)
def test_dispatch_with_local_site_and_allowed(self): """Testing CheckLocalSiteAccessViewMixin.dispatch with LocalSite and access allowed """ class MyView(CheckLocalSiteAccessViewMixin, View): def get(view, *args, **kwargs): self.assertIsNotNone(view.local_site) self.assertEqual(view.local_site.name, 'local-site-1') return HttpResponse('success') request = RequestFactory().request() request.local_site = LocalSite.objects.get(name='local-site-1') request.user = request.local_site.users.all()[0] view = MyView.as_view() response = view(request, local_site_name='local-site-1') self.assertEqual(response.status_code, 200) self.assertEqual(response.content, 'success')
def test_dispatch_with_local_site_and_not_allowed(self): """Testing CheckLocalSiteAccessViewMixin.dispatch with LocalSite and access not allowed """ class MyView(CheckLocalSiteAccessViewMixin, View): def get(view, *args, **kwargs): self.assertIsNotNone(view.local_site) self.assertEqual(view.local_site.name, 'local-site-1') return HttpResponse('success') view = MyView.as_view() request = RequestFactory().request() request.resolver_match = ResolverMatch(view, [], {}) request.local_site = LocalSite.objects.get(name='local-site-1') request.user = User.objects.create(username='******') response = view(request, local_site_name='local-site-1') self.assertEqual(response.status_code, 403)
def test_dispatch_with_local_site_and_not_allowed(self): """Testing CheckLocalSiteAccessViewMixin.dispatch with LocalSite and access not allowed """ class MyView(CheckLocalSiteAccessViewMixin, View): def get(view, *args, **kwargs): self.assertIsNotNone(view.local_site) self.assertEqual(view.local_site.name, 'local-site-1') return HttpResponse('success') view = MyView.as_view() request = RequestFactory().request() request.resolver_match = ResolverMatch(view, [], {}) request.local_site = LocalSite.objects.get(name='local-site-1') request.user = User.objects.create_user(username='******', email='*****@*****.**') response = view(request, local_site_name='local-site-1') self.assertEqual(response.status_code, 403)