Exemplo n.º 1
0
 def setUp(self):
     super(TestExistingUsers, self).setUp()
     self.user = User(username='******',
                      fullname='Test User',
                      passhash='hash')
     server.db.session.add(self.user)
     server.db.session.commit()
     self.user.get_token()
Exemplo n.º 2
0
 def setUp(self):
     # leave the database blank to make it in memory
     super(TestToken, self).setUp()
     # add a user
     self.test_user = User(username='******',
                           fullname='Testing user',
                           passhash='hash')
     server.db.session.add(self.test_user)
     server.db.session.commit()
Exemplo n.º 3
0
 def setUp(self):
     super(TestGroups, self).setUp()
     # create a user to have a token
     self.user = User(username='******',
                      fullname='Test User',
                      passhash='hash')
     self.user.verified = True
     server.db.session.add(self.user)
     server.db.session.commit()
     self.user.get_token()
     return
Exemplo n.º 4
0
    def test_get_members_by_non_member(self):
        """A user that is not part of the group ask for members."""
        new_user = User(username='******',
                        fullname='Another user',
                        passhash='hash')
        server.db.session.add(new_user)
        server.db.session.commit()
        new_user.get_token()

        url = '/group/{group_id}/users/'.format(group_id=self.group.id)
        rv = self.get(url, token=new_user.token)
        self.assertJsonError(rv, 403, 'User is not member of this group')
        return
Exemplo n.º 5
0
    def test_delete_not_admin(self):
        """Try to delete a group when the user is not the admin."""
        new_user = User(username='******',
                        fullname='Another user',
                        passhash='hash')
        server.db.session.add(new_user)
        server.db.session.commit()
        new_user.get_token()

        rv = self.delete('/group/{group_id}/'.format(group_id=self.group.id),
                         token=new_user.token)
        self.assertJsonError(rv, 403, 'User is not admin')
        return
Exemplo n.º 6
0
    def test_add_user(self):
        """Try to add another user in the group."""
        new_user = User(username='******',
                        fullname='Another user',
                        passhash='hash')
        server.db.session.add(new_user)
        server.db.session.commit()

        request = {'usernames': [new_user.username]}

        url = '/group/{group_id}/users/'.format(group_id=self.group.id)
        rv = self.post(url, request, token=self.user.token)
        self.assertJsonOk(rv)
        return
Exemplo n.º 7
0
    def test_add_no_owner(self):
        """Try to add users without being the group admin."""
        new_user = User(username='******',
                        fullname='Another user',
                        passhash='hash')
        server.db.session.add(new_user)
        server.db.session.commit()
        new_user.get_token()

        request = {'usernames': [new_user.username]}

        url = '/group/{group_id}/users/'.format(group_id=self.group.id)
        rv = self.post(url, request, token=new_user.token)
        self.assertJsonError(rv, 403, 'User is not admin')
        return
Exemplo n.º 8
0
    def setUp(self):
        super(TestExistingGroups, self).setUp()
        # create a user to have a token
        self.user = User(username='******',
                         fullname='Test User',
                         passhash='hash')
        self.user.verified = True
        server.db.session.add(self.user)

        # create a group for the user
        self.group = Group(name='Test group', owner=self.user)
        server.db.session.add(self.group)
        server.db.session.commit()
        self.user.get_token()
        return
Exemplo n.º 9
0
    def test_get_members_by_member(self):
        """Non admin user requests the list of group members."""
        new_user = User(username='******',
                        fullname='Another user',
                        passhash='hash')
        server.db.session.add(new_user)
        new_user.groups.append(self.group)
        server.db.session.commit()
        new_user.get_token()

        url = '/group/{group_id}/users/'.format(group_id=self.group.id)
        rv = self.get(url, token=new_user.token)
        self.assertJsonOk(rv)

        json = loads(rv.data)
        self.assertTrue('users' in json)
        self.assertEqual(len(json['users']), 2)  # owner and new user
        return
Exemplo n.º 10
0
def create_user():
    """Create a new user.

    **Example request**

    .. sourcecode:: http

       { "username": "******",
         "full_name": "I'm a person",
         "password": "******" }

    **Success (200)**:

    .. sourcecode:: http

       HTTP/1.1 200 OK
       Content-Type: application/json

       { "status": "OK" }

    :statuscode 200: Success
    :statuscode 406: Invalid characters in username
        (:py:class:`InvalidUsernameException`)
    :statuscode 409: Username already exists
        (:py:class:`UsernameAlreadyExistsException`)
    """
    json = request.get_json(force=True)
    invalid_characters = ' !@#$%^&*()|[]{}/\\\'"`~"'
    for char in invalid_characters:
        if char in json['username']:
            raise InvalidUsernameException()

    try:
        new_user = User(username=json['username'],
                        fullname=json['full_name'],
                        passhash=json['password'],
                        verified=False)

        db.session.add(new_user)
        db.session.commit()
    except IntegrityError:
        raise UsernameAlreadyExistsException()

    return jsonify(status='OK')
Exemplo n.º 11
0
    def create_user(self, name='test', fullname='Test User', passhash='hash',
                    verified=True, create_token=False):
        """Add a user.

        :param name: The name for the user
        :param fullname: The full name of the user
        :param passhash: The user passhash

        :return: The user
        :rtype: :py:class:`server.User`"""
        user = User(username=name,
                    fullname=fullname,
                    passhash=passhash)
        user.verified = verified
        server.db.session.add(user)
        server.db.session.commit()

        if create_token:
            user.get_token()
        return user
Exemplo n.º 12
0
    def test_update_owner(self):
        """Change the group owner."""
        new_user = User(username='******',
                        fullname='Another user',
                        passhash='hash')
        server.db.session.add(new_user)
        server.db.session.commit()

        group_id = self.group.id
        new_username = new_user.username

        request = {'admin': new_user.username}
        rv = self.put('/group/{group_id}/'.format(group_id=group_id),
                      request,
                      token=self.user.token)
        self.assertJsonOk(rv)

        # check the database
        group = Group.query.get(group_id)
        self.assertEqual(group.owner, new_username)
        return