Ejemplo n.º 1
0
    def setUp(self):
        # Creator
        self.username = "******"
        self.email = "*****@*****.**"
        self.password = "******"
        self.creator = User.objects.create_superuser(username=self.username,
                                                     email_address=self.email,
                                                     password=self.password)
        token = generate_token(self.creator)
        self.creator_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # User
        self.username = "******"
        self.email = "*****@*****.**"
        self.password = "******"
        self.member = User.objects.create_user(username=self.username,
                                               email_address=self.email,
                                               password=self.password)
        token = generate_token(self.member)
        self.member_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # Group
        response = self.client.post(url_prefix + '/group/',
                                    {"name": "testing group"},
                                    HTTP_AUTHORIZATION=self.creator_token)
        self.group_id = response.data.setdefault('data', {}).get('id', '')

        self.url = "{}/group/{}/".format(url_prefix, self.group_id)
Ejemplo n.º 2
0
    def setUp(self):
        self.url = url_prefix + '/group/'

        # Creator
        self.username = "******"
        self.email = "*****@*****.**"
        self.password = "******"
        self.creator = User.objects.create_superuser(username=self.username,
                                                     email_address=self.email,
                                                     password=self.password)
        token = generate_token(self.creator)
        self.creator_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # A member
        username = "******"
        email = "*****@*****.**"
        password = "******"
        self.member = User.objects.create_user(username=username,
                                               email_address=email,
                                               password=password)
        token = generate_token(self.member)
        self.member_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # Create a group
        response = self.client.post(url_prefix + '/group/',
                                    {"name": "testing group"},
                                    HTTP_AUTHORIZATION=self.creator_token)
        self.group = Group.objects.get(
            id=response.data.get('data', {}).get('id'))
        self.url = "{}/group/{}/setting/".format(url_prefix, self.group.id)
        self.group.add_member(self.member)
Ejemplo n.º 3
0
    def setUp(self):
        # Creator
        self.username = "******"
        self.email = "*****@*****.**"
        self.password = "******"
        self.creator = User.objects.create_superuser(username=self.username,
                                                     email_address=self.email,
                                                     password=self.password)
        token = generate_token(self.creator)
        self.creator_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # User
        self.username = "******"
        self.email = "*****@*****.**"
        self.password = "******"
        self.user = User.objects.create_user(username=self.username,
                                             email_address=self.email,
                                             password=self.password)
        token = generate_token(self.user)
        self.user_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # Member
        username = "******"
        email = "*****@*****.**"
        password = "******"
        member = User.objects.create_user(username=username,
                                          email_address=email,
                                          password=password)
        token = generate_token(member)
        self.member_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # Create a Group
        response = self.client.post(url_prefix + '/group/',
                                    {"name": "testing group"},
                                    HTTP_AUTHORIZATION=self.creator_token)
        self.group_id = response.data.get('data', {}).get('id', '')
        Group.objects.get(id=self.group_id).add_member(member)

        #self.url = "{}/group/{}/".format(url_prefix, self.group_id)

        # Create a post
        self.post = Post.objects.create_post(
            content='Need someone to eat lunch at pgp?',
            creator=self.creator,
            group=Group.objects.get(id=self.group_id))

        self.post2 = Post.objects.create_post(
            content='Another post',
            creator=self.creator,
            group=Group.objects.get(id=self.group_id))

        # Create a comment
        self.comment = Comment.objects.create_comment(content='OKAY',
                                                      post=self.post,
                                                      creator=self.creator)

        # Create another comment
        self.another_comment = Comment.objects.create_comment(
            content='not okay at all', post=self.post, creator=self.creator)
Ejemplo n.º 4
0
 def setUp(self):
     self.url = url_prefix + '/batch/'
     self.username = "******"
     self.email = "*****@*****.**"
     self.password = "******"
     self.user = User.objects.create_superuser(username=self.username,
                                               email_address=self.email,
                                               password=self.password)
     token = generate_token(self.user)
     self.token = 'Bearer {0}'.format(token.decode('utf-8'))
Ejemplo n.º 5
0
    def setUp(self):
        # Create a superuser
        username = "******"
        email = "*****@*****.**"
        password = "******"
        self.creator = User.objects.create_superuser(username=username,
                                                     email_address=email,
                                                     password=password)
        token = generate_token(self.creator)
        self.creator_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # Create a member
        username = "******"
        email = "snake@in_my.boot"
        password = "******"
        self.member = User.objects.create_user(username=username,
                                               email_address=email,
                                               password=password)
        token = generate_token(self.member)
        self.member_token = 'Bearer {0}'.format(token.decode('utf-8'))

        # Create a Group
        response = self.client.post(url_prefix + '/group/',
                                    {"name": "testing group"},
                                    HTTP_AUTHORIZATION=self.creator_token)
        self.group_id = response.data.get('data', {}).get('id', '')
        self.group = Group.objects.get(id=self.group_id)
        self.group.add_member(self.member)
        #self.url = "{}/group/{}/".format(url_prefix, self.group_id)

        # Create a post
        self.post = Post.objects.create_post(
            content='Stop talking shit, n***a',
            creator=self.creator,
            group=self.group)

        # Create a comment
        self.comment = Comment.objects.create_comment(content='F**k you s**t',
                                                      post=self.post,
                                                      creator=self.creator)
Ejemplo n.º 6
0
    def test_view_all_members_as_non_member(self):
        username = "******"
        email = "*****@*****.**"
        password = "******"
        user = User.objects.create_user(username=username,
                                        email_address=email,
                                        password=password)
        token = generate_token(user)
        token = 'Bearer {0}'.format(token.decode('utf-8'))

        response = self.client.get("{}users/".format(self.url),
                                   HTTP_AUTHORIZATION=token)
        self.assertEqual(403, response.status_code)
Ejemplo n.º 7
0
    def test_create_group_by_non_superuser(self):
        # Create a non-super user
        username = "******"
        email = "*****@*****.**"
        password = "******"
        user = User.objects.create_user(username=username,
                                        email_address=email,
                                        password=password)
        token = generate_token(user)
        token = 'Bearer {0}'.format(token.decode('utf-8'))

        # Create a group
        response = self.client.post(url_prefix + '/group/',
                                    {"name": "testing group"},
                                    HTTP_AUTHORIZATION=token)
        self.assertEqual(403, response.status_code)
Ejemplo n.º 8
0
    def test_delete_group_by_non_creator(self):
        # Create a group
        group_response = self.client.post(
            self.url, {"name": "testing group"},
            HTTP_AUTHORIZATION=self.creator_token)
        group_id = str(
            group_response.data.setdefault('data', {}).get('id', ''))
        url = self.url + group_id + '/'

        # Creat a non-creator
        username = "******"
        email = "*****@*****.**"
        password = "******"
        user = User.objects.create_user(username=username,
                                        email_address=email,
                                        password=password)
        token = 'Bearer {0}'.format(generate_token(user).decode('utf-8'))

        response = self.client.delete(url, HTTP_AUTHORIZATION=token)
        self.assertEqual(403, response.status_code)
Ejemplo n.º 9
0
 def get_token(self, user):
     token = generate_token(user)
     return "Bearer {0}".format(token.decode("utf-8"))
Ejemplo n.º 10
0
 def get_token(self, user):
     token = generate_token(user)
     return 'Bearer {0}'.format(token.decode('utf-8'))
Ejemplo n.º 11
0
def login(request):
    """User login from SLS platform. An account on ClassBuzz for the user will be created."""
    request_data = request.data

    if "user-id" not in request_data:
        return Response(
            {"error": 'Missing field "user-id" in the body of the request.'},
            status=status.HTTP_400_BAD_REQUEST,
        )

    user_id = request_data["user-id"]
    sls_user_data = get_sls_user_data(user_id)

    if not sls_user_data or "errors" in sls_user_data:
        return Response(
            {"error": "Failed to receive the user from SLS."},
            status=status.HTTP_400_BAD_REQUEST,
        )
    user_data = convert_sls_user_to_classbuzz(
        sls_user_data.get("data", {}).get("user", {})
    )

    if not user_data:
        return Response(
            {"error": "Unable to get the user from SLS."},
            status=status.HTTP_400_BAD_REQUEST,
        )

    # Pop out the unnessary attributes for User's creation
    groups = user_data.pop("groups", [])

    # If the SLS link is already exist, just return the user
    if User.objects.filter(sls_id=user_data["sls_id"]).exists():
        try:
            user = User.objects.get(sls_id=user_data["sls_id"])
            token = generate_token(user)
        except Exception as exc:
            return Response({"error": str(exc)}, status=status.HTTP_400_BAD_REQUEST)

        # Create all the groups that the user is in
        create_and_add_sls_user_to_his_groups(user, groups)

        serializer = UserSerializer(user)
        return Response({"data": {"user": serializer.data, "token": token}})

    if (
        user_data["email_address"].strip() != ""
        and User.objects.filter(email_address=user_data["email_address"]).exists()
    ):
        user = User.objects.get(email_address=user_data["email_address"])
        del user_data["email_address"]
        for attr, value in user_data.items():
            setattr(user, attr, value)

        try:
            user.save()
            token = generate_token(user)
        except Exception as exc:
            return Response({"error": str(exc)}, status=status.HTTP_400_BAD_REQUEST)

        # Create all the groups that the user is in
        create_and_add_sls_user_to_his_groups(user, groups)

        serializer = UserSerializer(user)
        return Response({"data": {"user": serializer.data, "token": token}})

    # Create an account if the user has not registed under ClassBuzz
    create_user = User.objects.create_user
    if user_data.get("is_superuser", False):
        create_user = User.objects.create_superuser
    try:
        user = create_user(**user_data)
        token = generate_token(user)
    except Exception as exc:
        return Response({"error": str(exc)}, status=status.HTTP_400_BAD_REQUEST)

    # Create all the groups that the user is in
    create_and_add_sls_user_to_his_groups(user, groups)

    serializer = UserSerializer(user)
    return Response(
        {"data": {"user": serializer.data, "token": token}}, status=status.HTTP_200_OK
    )