def test_set_password(self): self.create_user(username1, password1) frm = username1 if six.PY3 else username1.encode('utf-8') with capture() as (stdout, stderr): restauth_user(['set-password', '--password', password2, frm]) self.assertFalse(user_backend.check_password(username1, password1)) self.assertTrue(user_backend.check_password(username1, password2)) self.assertEqual(stdout.getvalue(), '') self.assertEqual(stderr.getvalue(), '') # test with generated password with capture() as (stdout, stderr): restauth_user(['set-password', '--gen-password', frm]) stdout, stderr = self.decode(stdout, stderr) self.assertFalse(user_backend.check_password(username1, password1)) self.assertFalse(user_backend.check_password(username1, password2)) self.assertTrue(user_backend.check_password(username1, stdout.strip())) # invalid password with capture() as (stdout, stderr): restauth_user(['set-password', '--password', 'a', frm]) self.assertFalse(user_backend.check_password(username1, password1)) self.assertFalse(user_backend.check_password(username1, password2)) self.assertEqual(stdout.getvalue(), '') self.assertEqual(stderr.getvalue(), '')
def test_rename(self): self.create_user(username1, password1) frm = username1 if six.PY3 else username1.encode('utf-8') to = username2 if six.PY3 else username2.encode('utf-8') with capture() as (stdout, stderr): restauth_user(['rename', frm, to]) self.assertEqual(stdout.getvalue(), '') self.assertEqual(stderr.getvalue(), '') with capture() as (stdout, stderr): try: restauth_user(['rename', 'foo', 'bar']) self.fail('Renaming inexistent user succeeded.') except SystemExit as e: self.assertEqual(e.code, 2) self.assertEqual(stdout.getvalue(), '') self.assertTrue(stderr.getvalue().startswith('usage: ')) self.create_user(username3, password1) frm = username3 if six.PY3 else username3.encode('utf-8') with capture() as (stdout, stderr): try: restauth_user(['rename', frm, to]) self.fail('Renaming user to existing username succeeded.') except SystemExit as e: self.assertEqual(e.code, 2) self.assertEqual(stdout.getvalue(), '') self.assertTrue(stderr.getvalue().startswith('usage: '))
def test_rm(self): self.create_user(username1, password1) frm = username1 if six.PY3 else username1.encode('utf-8') with capture() as (stdout, stderr): restauth_user(['rm', frm]) self.assertEqual(stdout.getvalue(), '') self.assertEqual(stderr.getvalue(), '') self.assertEqual(user_backend.list(), [])
def test_add_exists(self): self.create_user(username1, password1) with capture() as (stdout, stderr): try: restauth_user(['add', '--password', password2, username1 if six.PY3 else username1.encode('utf-8')]) except SystemExit as e: self.assertEqual(e.code, 2) self.assertEqual(stdout.getvalue(), '') self.assertHasLine(stderr, 'User already exists\.$')
def test_verify(self): self.create_user(username1, password1) frm = username1 if six.PY3 else username1.encode('utf-8') with capture() as (stdout, stderr): restauth_user(['verify', '--password', password1, frm,]) self.assertEqual(stdout.getvalue(), 'Ok.\n') self.assertEqual(stderr.getvalue(), '') with capture() as (stdout, stderr): try: restauth_user(['verify', '--password', password2, frm,]) except SystemExit as e: self.assertEqual(e.code, 1) self.assertEqual(stdout.getvalue(), 'Failed.\n') self.assertEqual(stderr.getvalue(), '')
def test_add(self): with capture() as (stdout, stderr): restauth_user(['add', '--password', password1, username1 if six.PY3 else username1.encode('utf-8')]) self.assertEqual(stdout.getvalue(), '') self.assertEqual(stderr.getvalue(), '') self.assertItemsEqual(user_backend.list(), [username1]) self.assertTrue(user_backend.check_password(username1, password1)) self.assertFalse(user_backend.check_password(username1, password2)) # create anotheruser with a generated password: gen_password = None with capture() as (stdout, stderr): restauth_user(['add', '--gen-password', username2 if six.PY3 else username2.encode('utf-8')]) gen_password = stdout.getvalue().strip() self.assertEqual(stderr.getvalue(), '') self.assertItemsEqual(user_backend.list(), [username1, username2]) self.assertTrue(user_backend.check_password(username2, gen_password))
def test_view(self): user = self.create_user(username1, password1) frm = username1 if six.PY3 else username1.encode('utf-8') with capture() as (stdout, stderr): restauth_user(['view', frm]) self.assertHasLine(stdout, '^Joined: ') self.assertHasLine(stdout, '^No groups.$') self.assertEqual(stderr.getvalue(), '') property_backend.set(user, 'last login', 'foobar') with capture() as (stdout, stderr): restauth_user(['view', frm]) self.assertHasLine(stdout, '^Joined: ') self.assertHasLine(stdout, '^Last login: foobar') self.assertHasLine(stdout, '^No groups.$') self.assertEqual(stderr.getvalue(), '') property_backend.remove(user, 'date joined') with capture() as (stdout, stderr): restauth_user(['view', frm]) self.assertHasNoLine(stdout, '^Joined: ') self.assertHasLine(stdout, '^Last login: foobar') self.assertHasLine(stdout, '^No groups.$') self.assertEqual(stderr.getvalue(), '') # test with service: with capture() as (stdout, stderr): restauth_user(['view', '--service', self.service.name, frm]) self.assertHasNoLine(stdout, '^Joined: ') self.assertHasLine(stdout, '^Last login: foobar') self.assertHasLine(stdout, '^No groups.$') self.assertEqual(stderr.getvalue(), '') # add group to service: group = group_backend.create(groupname1, self.service) group_backend.add_user(group, user) with capture() as (stdout, stderr): restauth_user(['view', '--service', self.service.name, frm]) self.assertHasNoLine(stdout, '^Joined: ') self.assertHasLine(stdout, '^Last login: foobar') # no %s expansion because of py2 encoding pattern = '^Groups: %s' % groupname1 self.assertHasLine(stdout, pattern, flags=re.UNICODE) self.assertEqual(stderr.getvalue(), '') with capture() as (stdout, stderr): restauth_user(['view', frm]) self.assertHasNoLine(stdout, '^Joined: ') self.assertHasLine(stdout, '^Last login: foobar') self.assertHasLine(stdout, '^Groups:$') # no %s expansion because of py2 encoding pattern = '^\* %s: %s' % (self.service.username, groupname1) self.assertHasLine(stdout, pattern, flags=re.UNICODE) self.assertEqual(stderr.getvalue(), '') # add "global" group with no service group2 = group_backend.create(groupname2, None) group_backend.add_user(group2, user) with capture() as (stdout, stderr): restauth_user(['view', frm]) self.assertHasNoLine(stdout, '^Joined: ') self.assertHasLine(stdout, '^Last login: foobar') self.assertHasLine(stdout, '^Groups:$') # no %s expansion because of py2 encoding pattern = '^\* no service: %s' % groupname2 self.assertHasLine(stdout, pattern, flags=re.UNICODE) # no %s expansion because of py2 encoding pattern = '^\* %s: %s' % (self.service.username, groupname1) self.assertHasLine(stdout, pattern, flags=re.UNICODE) self.assertEqual(stderr.getvalue(), '')