Merge ~blake-rouse/maas:fix-1844796 into maas:master

Proposed by Blake Rouse
Status: Merged
Approved by: Blake Rouse
Approved revision: 27114089970ef34ee7f9fe98a0812685974fbc31
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~blake-rouse/maas:fix-1844796
Merge into: maas:master
Diff against target: 34 lines (+5/-0)
2 files modified
src/maasserver/views/account.py (+2/-0)
src/maasserver/views/tests/test_account.py (+3/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Needs Fixing
Adam Collard (community) Approve
Review via email: mp+373083@code.launchpad.net

Commit message

Fixes LP: #1844796 - Exempt CSRF on the CSRF post request.

To post a comment you must log in.
Revision history for this message
Adam Collard (adam-collard) wrote :

+1

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b fix-1844796 lp:~blake-rouse/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci-jenkins.internal:8080/job/maas/job/branch-tester/6473/console
COMMIT: 27114089970ef34ee7f9fe98a0812685974fbc31

review: Needs Fixing

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/views/account.py b/src/maasserver/views/account.py
2index 8ebcf39..72a27f4 100644
3--- a/src/maasserver/views/account.py
4+++ b/src/maasserver/views/account.py
5@@ -27,6 +27,7 @@ from django.http import (
6 )
7 from django.middleware.csrf import get_token
8 from django.shortcuts import render
9+from django.views.decorators.csrf import csrf_exempt
10 from maasserver.audit import create_audit_event
11 from maasserver.enum import ENDPOINT
12 from maasserver.models import UserProfile
13@@ -153,6 +154,7 @@ def authenticate(request):
14 })
15
16
17+@csrf_exempt
18 def csrf(request):
19 """Get the CSRF token for the authenticated user."""
20 if request.method != "POST":
21diff --git a/src/maasserver/views/tests/test_account.py b/src/maasserver/views/tests/test_account.py
22index cbf0c2d..fe4999b 100644
23--- a/src/maasserver/views/tests/test_account.py
24+++ b/src/maasserver/views/tests/test_account.py
25@@ -385,6 +385,9 @@ class TestCSRF(MAASServerTestCase):
26 self.assertThat(response, HasStatusCode(HTTPStatus.FORBIDDEN))
27
28 def test__returns_csrf(self):
29+ # Force the client to test for CSRF because the view should be CSRF
30+ # exempt. If not exempt then the `client.post` would fail.
31+ self.client.handler.enforce_csrf_checks = True
32 self.client.login(user=factory.make_User())
33 response = self.client.post(reverse('csrf'))
34 self.assertThat(response, HasStatusCode(HTTPStatus.OK))

Subscribers

People subscribed via source and target branches