Skip to content

Commit 37b419a

Browse files
committed
fix issues with migrate schema response task deletion
1 parent b0d8bdc commit 37b419a

File tree

6 files changed

+305
-281
lines changed

6 files changed

+305
-281
lines changed

api_tests/users/views/test_user_settings.py

Lines changed: 0 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
from unittest import mock
22
import pytest
3-
import urllib
43

54
from api.base.settings.defaults import API_BASE
6-
from api.base.settings import CSRF_COOKIE_NAME
75
from api.base.utils import hashids
86
from osf_tests.factories import (
97
AuthUserFactory,
108
UserFactory,
119
)
12-
from django.middleware import csrf
1310
from osf.models import Email, NotableDomain
1411
from framework.auth.views import auth_email_logout
1512

@@ -167,128 +164,6 @@ def test_multiple_errors(self, app, user_one, url, payload):
167164
assert res.json['errors'][1]['detail'] == 'Password should be at least eight characters'
168165

169166

170-
@pytest.mark.django_db
171-
@pytest.mark.usefixtures('mock_send_grid')
172-
class TestResetPassword:
173-
174-
@pytest.fixture()
175-
def user_one(self):
176-
user = UserFactory()
177-
user.set_password('password1')
178-
user.auth = (user.username, 'password1')
179-
user.save()
180-
return user
181-
182-
@pytest.fixture()
183-
def url(self):
184-
return f'/{API_BASE}users/reset_password/'
185-
186-
@pytest.fixture
187-
def csrf_token(self):
188-
return csrf._mask_cipher_secret(csrf._get_new_csrf_string())
189-
190-
def test_get(self, mock_send_grid, app, url, user_one):
191-
encoded_email = urllib.parse.quote(user_one.email)
192-
url = f'{url}?email={encoded_email}'
193-
res = app.get(url)
194-
assert res.status_code == 200
195-
196-
user_one.reload()
197-
assert mock_send_grid.call_args[1]['to_addr'] == user_one.username
198-
199-
def test_get_invalid_email(self, mock_send_grid, app, url):
200-
url = f'{url}?email={'invalid_email'}'
201-
res = app.get(url)
202-
assert res.status_code == 200
203-
assert not mock_send_grid.called
204-
205-
def test_post(self, app, url, user_one, csrf_token):
206-
app.set_cookie(CSRF_COOKIE_NAME, csrf_token)
207-
encoded_email = urllib.parse.quote(user_one.email)
208-
url = f'{url}?email={encoded_email}'
209-
res = app.get(url)
210-
user_one.reload()
211-
payload = {
212-
'data': {
213-
'attributes': {
214-
'uid': user_one._id,
215-
'token': user_one.verification_key_v2['token'],
216-
'password': 'password2',
217-
}
218-
}
219-
}
220-
221-
res = app.post_json_api(url, payload, headers={'X-CSRFToken': csrf_token})
222-
user_one.reload()
223-
assert res.status_code == 200
224-
assert user_one.check_password('password2')
225-
226-
def test_post_empty_payload(self, app, url, csrf_token):
227-
app.set_cookie(CSRF_COOKIE_NAME, csrf_token)
228-
payload = {
229-
'data': {
230-
'attributes': {
231-
}
232-
}
233-
}
234-
res = app.post_json_api(url, payload, expect_errors=True, headers={'X-CSRFToken': csrf_token})
235-
assert res.status_code == 400
236-
237-
def test_post_invalid_token(self, app, url, user_one, csrf_token):
238-
app.set_cookie(CSRF_COOKIE_NAME, csrf_token)
239-
payload = {
240-
'data': {
241-
'attributes': {
242-
'uid': user_one._id,
243-
'token': 'invalid_token',
244-
'password': 'password2',
245-
}
246-
}
247-
}
248-
res = app.post_json_api(url, payload, expect_errors=True, headers={'X-THROTTLE-TOKEN': 'test-token', 'X-CSRFToken': csrf_token})
249-
assert res.status_code == 400
250-
251-
def test_post_invalid_password(self, app, url, user_one, csrf_token):
252-
app.set_cookie(CSRF_COOKIE_NAME, csrf_token)
253-
encoded_email = urllib.parse.quote(user_one.email)
254-
url = f'{url}?email={encoded_email}'
255-
res = app.get(url)
256-
user_one.reload()
257-
payload = {
258-
'data': {
259-
'attributes': {
260-
'uid': user_one._id,
261-
'token': user_one.verification_key_v2['token'],
262-
'password': user_one.username,
263-
}
264-
}
265-
}
266-
267-
res = app.post_json_api(url, payload, expect_errors=True, headers={'X-THROTTLE-TOKEN': 'test-token', 'X-CSRFToken': csrf_token})
268-
assert res.status_code == 400
269-
270-
def test_throrrle(self, app, url, user_one):
271-
encoded_email = urllib.parse.quote(user_one.email)
272-
url = f'{url}?email={encoded_email}'
273-
res = app.get(url)
274-
user_one.reload()
275-
payload = {
276-
'data': {
277-
'attributes': {
278-
'uid': user_one._id,
279-
'token': user_one.verification_key_v2['token'],
280-
'password': '12345',
281-
}
282-
}
283-
}
284-
285-
res = app.post_json_api(url, payload, expect_errors=True)
286-
assert res.status_code == 429
287-
288-
res = app.get(url, expect_errors=True)
289-
assert res.json['message'] == 'You have recently requested to change your password. Please wait a few minutes before trying again.'
290-
291-
292167
@pytest.mark.django_db
293168
class TestUserEmailsList:
294169

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
import pytest
2+
import urllib
3+
4+
from api.base.settings.defaults import API_BASE
5+
from api.base.settings import CSRF_COOKIE_NAME
6+
from osf_tests.factories import (
7+
UserFactory,
8+
)
9+
from django.middleware import csrf
10+
11+
12+
@pytest.mark.django_db
13+
@pytest.mark.usefixtures('mock_send_grid')
14+
class TestResetPassword:
15+
16+
@pytest.fixture()
17+
def user_one(self):
18+
user = UserFactory()
19+
user.set_password('password1')
20+
user.auth = (user.username, 'password1')
21+
user.save()
22+
return user
23+
24+
@pytest.fixture()
25+
def url(self):
26+
return f'/{API_BASE}users/reset_password/'
27+
28+
@pytest.fixture
29+
def csrf_token(self):
30+
return csrf._mask_cipher_secret(csrf._get_new_csrf_string())
31+
32+
def test_get(self, mock_send_grid, app, url, user_one):
33+
encoded_email = urllib.parse.quote(user_one.email)
34+
url = f'{url}?email={encoded_email}'
35+
res = app.get(url)
36+
assert res.status_code == 200
37+
38+
user_one.reload()
39+
assert mock_send_grid.call_args[1]['to_addr'] == user_one.username
40+
41+
def test_get_invalid_email(self, mock_send_grid, app, url):
42+
url = f'{url}?email={'invalid_email'}'
43+
res = app.get(url)
44+
assert res.status_code == 200
45+
assert not mock_send_grid.called
46+
47+
def test_post(self, app, url, user_one, csrf_token):
48+
app.set_cookie(CSRF_COOKIE_NAME, csrf_token)
49+
encoded_email = urllib.parse.quote(user_one.email)
50+
url = f'{url}?email={encoded_email}'
51+
res = app.get(url)
52+
user_one.reload()
53+
payload = {
54+
'data': {
55+
'attributes': {
56+
'uid': user_one._id,
57+
'token': user_one.verification_key_v2['token'],
58+
'password': 'password2',
59+
}
60+
}
61+
}
62+
63+
res = app.post_json_api(url, payload, headers={'X-CSRFToken': csrf_token})
64+
user_one.reload()
65+
assert res.status_code == 200
66+
assert user_one.check_password('password2')
67+
68+
def test_post_empty_payload(self, app, url, csrf_token):
69+
app.set_cookie(CSRF_COOKIE_NAME, csrf_token)
70+
payload = {
71+
'data': {
72+
'attributes': {
73+
}
74+
}
75+
}
76+
res = app.post_json_api(url, payload, expect_errors=True, headers={'X-CSRFToken': csrf_token})
77+
assert res.status_code == 400
78+
79+
def test_post_invalid_token(self, app, url, user_one, csrf_token):
80+
app.set_cookie(CSRF_COOKIE_NAME, csrf_token)
81+
payload = {
82+
'data': {
83+
'attributes': {
84+
'uid': user_one._id,
85+
'token': 'invalid_token',
86+
'password': 'password2',
87+
}
88+
}
89+
}
90+
res = app.post_json_api(url, payload, expect_errors=True, headers={'X-THROTTLE-TOKEN': 'test-token', 'X-CSRFToken': csrf_token})
91+
assert res.status_code == 400
92+
93+
def test_post_invalid_password(self, app, url, user_one, csrf_token):
94+
app.set_cookie(CSRF_COOKIE_NAME, csrf_token)
95+
encoded_email = urllib.parse.quote(user_one.email)
96+
url = f'{url}?email={encoded_email}'
97+
res = app.get(url)
98+
user_one.reload()
99+
payload = {
100+
'data': {
101+
'attributes': {
102+
'uid': user_one._id,
103+
'token': user_one.verification_key_v2['token'],
104+
'password': user_one.username,
105+
}
106+
}
107+
}
108+
109+
res = app.post_json_api(url, payload, expect_errors=True, headers={'X-THROTTLE-TOKEN': 'test-token', 'X-CSRFToken': csrf_token})
110+
assert res.status_code == 400
111+
112+
def test_throttle(self, app, url, user_one):
113+
encoded_email = urllib.parse.quote(user_one.email)
114+
url = f'{url}?email={encoded_email}'
115+
app.get(url)
116+
user_one.reload()
117+
payload = {
118+
'data': {
119+
'attributes': {
120+
'uid': user_one._id,
121+
'token': user_one.verification_key_v2['token'],
122+
'password': '12345',
123+
}
124+
}
125+
}
126+
127+
res = app.post_json_api(url, payload, expect_errors=True)
128+
assert res.status_code == 429
129+
130+
res = app.get(url, expect_errors=True)
131+
assert res.json['message'] == 'You have recently requested to change your password. Please wait a few minutes before trying again.'

osf/management/commands/migrate_notifications.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from osf.models.notifications import NotificationSubscriptionLegacy
55
from django.core.management.base import BaseCommand
66
from django.db import transaction
7-
from osf.management.commands.local_setup.populate_notification_types import populate_notification_types
7+
from osf.management.commands.populate_notification_types import populate_notification_types
88

99
logger = logging.getLogger(__name__)
1010

0 commit comments

Comments
 (0)