Exemple #1
0
 def test_get_valid_post(self):
     response = client.get(
         f'/api/author/{self.author.id}/posts/{self.post.id}/')
     post = Post.objects.get(id=self.post.id)
     serializer = PostSerializer(post)
     self.assertEqual(response.data, serializer.data)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
Exemple #2
0
    def test_get_all_posts_for_myself(self):
        self.auth_client.force_authenticate(user=self.user1)
        response = self.auth_client.get(
            f'/api/author/{self.author1.id}/posts/')

        posts = Post.objects.filter(author=self.author1.id)
        serializer = PostSerializer(posts, many=True)
        self.assertEqual(response.data, serializer.data)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Exemple #3
0
    def create(self, request, author, id):
        try:
            author = Author.objects.get(id=author)
            post = Post.objects.create(author=author, id=id, **request.data)
            serializer = PostSerializer(post)
        except Author.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        return Response(serializer.data, status=status.HTTP_201_CREATED)
Exemple #4
0
    def list(self, request):
        try:
            # Warning: visibility='PUBLIC' (single quotes) does not work.
            queryset = Post.objects.filter(visibility="PUBLIC", unlisted=False)
            serializer = PostSerializer(queryset, many=True)
        except Post.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        return Response(serializer.data)
Exemple #5
0
    def test_create_post(self):
        response = client.put(
            f'/api/author/{self.author.id}/posts/{self.uuid}/',
            data=json.dumps(self.payload),
            content_type='application/json')
        post = Post.objects.get(id=self.uuid)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(response.data, PostSerializer(post).data)
Exemple #6
0
    def test_create_post(self):
        self.auth_client.force_authenticate(user=self.user)
        response = self.auth_client.post(
            f'/api/author/{self.author.id}/posts/',
            data=json.dumps(self.payload),
            content_type='application/json')
        post = Post.objects.get(id=response.data['id'])

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(response.data, PostSerializer(post).data)
Exemple #7
0
  def tests_get_all_public_posts(self):
    response = client.get(f'/api/public-posts/')

    posts = Post.objects.filter(visibility='PUBLIC', unlisted=False)

    serializer = PostSerializer(posts, many=True)

    self.assertEqual(response.data, serializer.data)
    self.assertEqual(response.status_code, status.HTTP_200_OK)

    self.assertEqual(len(response.data), 2)
Exemple #8
0
    def test_get_all_posts_for_another_author(self):
        self.auth_client.force_authenticate(user=self.user2)
        response = self.auth_client.get(
            f'/api/author/{self.author1.id}/posts/')

        posts = Post.objects.filter(author=self.author1.id,
                                    visibility="PUBLIC",
                                    unlisted=False)
        serializer = PostSerializer(posts, many=True)

        self.assertEqual(response.data, serializer.data)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Exemple #9
0
    def post(self, request, pk=None):
    
        serializer_context = {
            'request': request,
        }

        serializer = PostSerializer(data=request.data, context=serializer_context)
        print("P",serializer.is_valid())
        if serializer.is_valid() == True:
            print("sucessful backend")

            # Compare the userID from request with userID from provided token
            userIDFromRequest = serializer.validated_data['userID']
            userIDFromToken = request.user

            if(userIDFromRequest == userIDFromToken):
                instance = serializer.save()
                messages.success(request._request, 'Success')
                return Response(serializer.data, status=status.HTTP_201_CREATED)
            else:
                raise ValidationError("Sorry, you are trying to post as another user which is forbidden..")
        
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemple #10
0
    def test_update_post(self):
        response = client.post(
            f'/api/author/{self.author.id}/posts/{self.post.id}/',
            data=json.dumps(self.payload),
            content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Compare each payload field with the updated Post object.
        serializer = PostSerializer(Post.objects.get(id=self.post.id))
        for k in self.payload:
            self.assertEqual(serializer.data[k], self.payload[k])

        # Ensure other fields are unchanged
        self.assertEqual(serializer.data['id'], str(self.post.id))
        self.assertEqual(serializer.data['type'], self.post.type)
Exemple #11
0
    def list(self, request, author):
        try:
            authenticated_author = Author.objects.get(
                user__username=request.user)
            # Check if the authenticated author is the same as the author we're querying for posts.
            if str(authenticated_author.id) == author:
                queryset = Post.objects.filter(author=author)
            else:
                queryset = Post.objects.filter(author=author,
                                               visibility="PUBLIC",
                                               unlisted=False)

            serializer = PostSerializer(queryset, many=True)
        except (Author.DoesNotExist, Post.DoesNotExist):
            return Response(status=status.HTTP_404_NOT_FOUND)

        return Response(serializer.data)