Exemple #1
0
    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(), '')
Exemple #2
0
    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: '))
Exemple #3
0
 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(), [])
Exemple #4
0
    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\.$')
Exemple #5
0
    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(), '')
Exemple #6
0
    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))
Exemple #7
0
    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(), '')