1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#
# Copyright (C) 2018 FreeIPA Contributors see COPYING for license
#
import pytest
from ipatests.test_ipaserver.httptest import Unauthorized_HTTP_test
from ipatests.test_xmlrpc.xmlrpc_test import XMLRPC_test
from ipatests.util import assert_equal
from ipalib import api, errors
testuser = u'tuser'
password = u'password'
@pytest.mark.tier1
class test_migratepw(XMLRPC_test, Unauthorized_HTTP_test):
"""
Test password migrate end point
"""
app_uri = '/ipa/migration/migration.py'
def setup(self):
"""
Prepare for tests
"""
api.Command['user_add'](uid=testuser, givenname=u'Test', sn=u'User')
api.Command['passwd'](testuser, password=password)
def teardown(self):
"""
Clean up
"""
try:
api.Command['user_del']([testuser])
except errors.NotFound:
pass
def _migratepw(self, user, password, method='POST'):
"""
Make password migrate request to server
"""
return self.send_request(method, params={'username': str(user),
'password': str(password)},
)
def test_bad_params(self):
"""
Test against bad (missing, empty) params
"""
for params in (None, # no params
{'username': 'foo'}, # missing password
{'password': 'bar'}, # missing username
{'username': '',
'password': ''}, # empty options
{'username': '',
'password': 'bar'}, # empty username
{'username': 'foo',
'password': ''}, # empty password
):
response = self.send_request(params=params)
assert_equal(response.status, 400)
assert_equal(response.reason, 'Bad Request')
def test_not_post_method(self):
"""
Test redirection of non POST request
"""
response = self._migratepw(testuser, password, method='GET')
assert_equal(response.status, 302)
assert response.msg
assert_equal(response.msg['Location'], 'index.html')
def test_invalid_password(self):
"""
Test invalid password
"""
response = self._migratepw(testuser, 'wrongpassword')
assert_equal(response.status, 200)
assert_equal(response.getheader('X-IPA-Migrate-Result'),
'invalid-password')
def test_migration_success(self):
"""
Test successful migration scenario
"""
response = self._migratepw(testuser, password)
assert_equal(response.status, 200)
assert_equal(response.getheader('X-IPA-Migrate-Result'), 'ok')
|