Esempio n. 1
0
 def test_different_username(self):
     info = Mock()
     with self.assertRaises(graphql_jwt.exceptions.JSONWebTokenError):
         schema.get_mutation_type().fields["tokenAuth"].resolver(
             root=Mock(),
             info=info,
             username="******",
             password="******",
         )
    def test_invalid_email(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (
            schema.get_mutation_type()
            .fields["updateEmail"]
            .resolver(self=Mock(), info=info, email="not an email address",)
        )

        self.assertEqual(
            result,
            UpdateEmail(success=False, error="Please provide a valid email address.",),
        )

        self.assertEqual(
            FeedbackGroupsUser.objects.filter(
                user__username="******",
            ).count(),
            1,
        )
        self.assertEqual(
            FeedbackGroupsUser.objects.filter(
                user__username="******",
            ).count(),
            0,
        )
    def test_existing_account_with_email(self):
        other_user = FeedbackGroupsUser.create(
            email="*****@*****.**", password="******",
        )
        other_user.save()

        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (
            schema.get_mutation_type()
            .fields["updateEmail"]
            .resolver(self=Mock(), info=info, email="*****@*****.**",)
        )

        self.assertEqual(
            result,
            UpdateEmail(
                success=False,
                error="An account for that email address already exists.",
            ),
        )

        self.assertEqual(
            FeedbackGroupsUser.objects.filter(
                user__username="******",
            ).count(),
            1,
        )
        self.assertEqual(
            FeedbackGroupsUser.objects.filter(
                user__username="******",
            ).count(),
            1,
        )
Esempio n. 4
0
    def test_bad_rating(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.request_user.user
        result = (
            schema.get_mutation_type()
            .fields["rateFeedbackResponse"]
            .resolver(
                self=Mock(),
                info=info,
                feedback_response_id=self.feedback_response.id,
                rating=10,
            )
        )

        self.assertEqual(
            result, RateFeedbackResponse(success=False, error="Invalid rating",)
        )

        self.assertEqual(
            FeedbackResponse.objects.filter(
                user=self.response_user,
                feedback_request=self.feedback_request,
                feedback="feedback",
                rating=None,
            ).count(),
            1,
        )
Esempio n. 5
0
    def test_duplicates(self):
        """Since some accounts had already been created with the same email
        in different cases when this change was made, allow logging into these
        existing accounts using the exact email they were registered with,
        including casing.
        """
        duplicate_user = FeedbackGroupsUser.create(
            email="*****@*****.**",
            password="******",
        )
        duplicate_user.save()

        info = Mock()
        result = (schema.get_mutation_type().fields["tokenAuth"].resolver(
            root=Mock(),
            info=info,
            username="******",
            password="******",
        ))
        self.assertIsNotNone(result)
        self.assertIsNotNone(result.token)
        self.assertEqual(
            graphql_jwt.utils.jwt_decode(result.token).get("username"),
            "*****@*****.**",
        )
Esempio n. 6
0
    def test_dropbox(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (schema.get_mutation_type().fields["createFeedbackRequest"].
                  resolver(
                      self=Mock(),
                      info=info,
                      media_url="https://www.dropbox.com/s/nonsense/file.wav",
                      feedback_prompt="feedback_prompt",
                      email_when_grouped=True,
                      genre=GenreChoice.ELECTRONIC.name,
                  ))

        self.assertEqual(
            result,
            CreateFeedbackRequest(
                success=True,
                error=None,
                invalid_media_url=False,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(
                user=self.user,
                media_url="https://www.dropbox.com/s/nonsense/file.wav",
                media_type=MediaTypeChoice.DROPBOX.name,
                feedback_prompt="feedback_prompt",
                email_when_grouped=True,
                genre=GenreChoice.ELECTRONIC.name,
            ).count(),
            1,
        )
    def test_bad_id(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.response_user.user
        result = (schema.get_mutation_type().fields["submitFeedbackResponse"].
                  resolver(
                      self=Mock(),
                      info=info,
                      feedback_response_id=1901,
                      feedback="feedback",
                      allow_replies=True,
                  ))

        self.assertEqual(
            result,
            SubmitFeedbackResponse(
                success=False,
                error="Invalid feedback_response_id",
            ),
        )

        self.assertEqual(
            FeedbackResponse.objects.filter(
                user=self.response_user,
                feedback_request=self.feedback_request,
                feedback="feedback",
                submitted=True,
            ).count(),
            0,
        )
Esempio n. 8
0
    def test_googledrive(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (schema.get_mutation_type(
        ).fields["createFeedbackRequest"].resolver(
            self=Mock(),
            info=info,
            media_url="https://drive.google.com/file/d/roflcopter/view",
            feedback_prompt="feedback_prompt",
            email_when_grouped=True,
            genre=GenreChoice.ELECTRONIC.name,
        ))

        self.assertEqual(
            result,
            CreateFeedbackRequest(
                success=True,
                error=None,
                invalid_media_url=False,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(
                user=self.user,
                media_url="https://drive.google.com/file/d/roflcopter/view",
                media_type=MediaTypeChoice.GOOGLEDRIVE.name,
                feedback_prompt="feedback_prompt",
                email_when_grouped=True,
                genre=GenreChoice.ELECTRONIC.name,
            ).count(),
            1,
        )
    def test_bad_id(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.request_user.user
        result = (schema.get_mutation_type().
                  fields["addFeedbackResponseReply"].resolver(
                      self=Mock(),
                      info=info,
                      feedback_response_id=1901,
                      text="thanks pal",
                      allow_replies=True,
                  ))

        self.assertEqual(
            result,
            AddFeedbackResponseReply(
                reply=None,
                error="Invalid feedback_response_id",
            ),
        )

        self.assertEqual(
            FeedbackResponseReply.objects.filter(
                feedback_response=self.feedback_response, ).count(),
            0,
        )
    def test_invalid_url(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (
            schema.get_mutation_type()
            .fields["editFeedbackRequest"]
            .resolver(
                self=Mock(),
                info=info,
                feedback_request_id=self.existing_request.id,
                media_url="not a real url",
                feedback_prompt="feedback_prompt",
                email_when_grouped=False,
                genre=GenreChoice.HIPHOP.name,
            )
        )

        self.assertEqual(
            result,
            EditFeedbackRequest(
                success=False, error=INVALID_MEDIA_URL_MESSAGE, invalid_media_url=True,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(
                user=self.user,
                media_url="https://soundcloud.com/ruairidx/grey",
                media_type=MediaTypeChoice.SOUNDCLOUD.name,
                feedback_prompt="feedback_prompt",
                genre=GenreChoice.ELECTRONIC.name,
            ).count(),
            1,
        )
Esempio n. 11
0
    def test_soundcloud(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (schema.get_mutation_type().fields["createFeedbackRequest"].
                  resolver(
                      self=Mock(),
                      info=info,
                      media_url="https://soundcloud.com/ruairidx/bruno",
                      feedback_prompt="feedback_prompt",
                      email_when_grouped=True,
                      genre=GenreChoice.ELECTRONIC.name,
                  ))

        self.assertEqual(
            result,
            CreateFeedbackRequest(
                success=True,
                error=None,
                invalid_media_url=False,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(
                user=self.user,
                media_url="https://soundcloud.com/ruairidx/bruno",
                media_type=MediaTypeChoice.SOUNDCLOUD.name,
                feedback_prompt="feedback_prompt",
                email_when_grouped=True,
                genre=GenreChoice.ELECTRONIC.name,
            ).count(),
            1,
        )
    def test_logged_in_unsubmitted(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.response_user.user
        result = (schema.get_mutation_type().fields["submitFeedbackResponse"].
                  resolver(
                      self=Mock(),
                      info=info,
                      feedback_response_id=self.feedback_response.id,
                      feedback="feedback",
                      allow_replies=True,
                  ))

        self.assertEqual(result,
                         SubmitFeedbackResponse(
                             success=True,
                             error=None,
                         ))

        self.assertEqual(
            FeedbackResponse.objects.filter(
                user=self.response_user,
                feedback_request=self.feedback_request,
                feedback="feedback",
                submitted=True,
                allow_replies=True,
            ).count(),
            1,
        )
    def test_logged_out(self):
        info = Mock()
        result = (schema.get_mutation_type().fields["submitFeedbackResponse"].
                  resolver(
                      self=Mock(),
                      info=info,
                      feedback_response_id=self.feedback_response.id,
                      feedback="feedback",
                      allow_replies=True,
                  ))

        self.assertEqual(
            result,
            SubmitFeedbackResponse(
                success=False,
                error="Not logged in.",
            ))

        self.assertEqual(
            FeedbackResponse.objects.filter(
                user=self.response_user,
                feedback_request=self.feedback_request,
                feedback="feedback",
                submitted=True,
            ).count(),
            0,
        )
Esempio n. 14
0
    def test_assigned_request(self):
        feedback_group = FeedbackGroup(name="name")
        feedback_group.save()
        self.existing_request.feedback_group = feedback_group
        self.existing_request.save()

        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (schema.get_mutation_type().fields["deleteFeedbackRequest"].
                  resolver(
                      self=Mock(),
                      info=info,
                      feedback_request_id=self.existing_request.id,
                  ))

        self.assertEqual(
            result,
            DeleteFeedbackRequest(
                success=False,
                error=
                "This request has already been assigned to a feedback group and cannot be edited.",
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.count(),
            1,
        )
Esempio n. 15
0
    def test_logged_out(self):
        info = Mock()
        result = (schema.get_mutation_type().fields["createFeedbackRequest"].
                  resolver(
                      self=Mock(),
                      info=info,
                      media_url="https://soundcloud.com/ruairidx/bruno",
                      feedback_prompt="feedback_prompt",
                      email_when_grouped=True,
                      genre=GenreChoice.ELECTRONIC.name,
                  ))

        self.assertEqual(
            result,
            CreateFeedbackRequest(
                success=False,
                error="Not logged in.",
                invalid_media_url=False,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(user=self.user, ).count(),
            0,
        )
Esempio n. 16
0
    def test_already_rated(self):
        self.feedback_response.rating = 5
        self.feedback_response.save()

        info = Mock()
        info.context = Mock()
        info.context.user = self.request_user.user
        result = (
            schema.get_mutation_type()
            .fields["rateFeedbackResponse"]
            .resolver(
                self=Mock(),
                info=info,
                feedback_response_id=self.feedback_response.id,
                rating=3,
            )
        )

        self.assertEqual(
            result,
            RateFeedbackResponse(
                success=False, error="Feedback has already been rated",
            ),
        )

        self.assertEqual(
            FeedbackResponse.objects.filter(
                user=self.response_user,
                feedback_request=self.feedback_request,
                feedback="feedback",
                submitted=True,
                rating=5,
            ).count(),
            1,
        )
    def test_reject_reply_if_response_is_unsubmitted(self):
        self.feedback_response.submitted = False
        self.feedback_response.save()

        info = Mock()
        info.context = Mock()
        info.context.user = self.feedback_response.user.user
        result = (schema.get_mutation_type().
                  fields["addFeedbackResponseReply"].resolver(
                      self=Mock(),
                      info=info,
                      feedback_response_id=self.feedback_response.id,
                      text="thanks pal",
                      allow_replies=True,
                  ))

        self.assertEqual(
            result,
            AddFeedbackResponseReply(
                reply=None,
                error="You cannot reply to this feedback.",
            ),
        )

        self.assertEqual(
            FeedbackResponseReply.objects.filter(
                feedback_response=self.feedback_response, ).count(),
            0,
        )
    def test_reject_reply_if_not_existing_reply_allow_replies(self):
        existing_reply = FeedbackResponseReply(
            feedback_response=self.feedback_response,
            user=self.feedback_request.user,
            text="danke mate",
            allow_replies=False,
        )
        existing_reply.save()

        info = Mock()
        info.context = Mock()
        info.context.user = self.feedback_response.user.user
        result = (schema.get_mutation_type().
                  fields["addFeedbackResponseReply"].resolver(
                      self=Mock(),
                      info=info,
                      feedback_response_id=self.feedback_response.id,
                      text="thanks pal",
                      allow_replies=True,
                  ))

        self.assertEqual(
            result,
            AddFeedbackResponseReply(
                reply=None,
                error="You cannot reply to this feedback.",
            ),
        )

        self.assertEqual(
            FeedbackResponseReply.objects.filter(
                feedback_response=self.feedback_response, ).count(),
            1,
        )
Esempio n. 19
0
    def test_unsupported_platform(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (schema.get_mutation_type().fields["createFeedbackRequest"].
                  resolver(
                      self=Mock(),
                      info=info,
                      media_url="https://twitter.com/ruairidx",
                      feedback_prompt="feedback_prompt",
                      email_when_grouped=True,
                      genre=GenreChoice.ELECTRONIC.name,
                  ))

        self.assertEqual(
            result,
            CreateFeedbackRequest(
                success=False,
                error=INVALID_MEDIA_URL_MESSAGE,
                invalid_media_url=True,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(user=self.user, ).count(),
            0,
        )
    def test_invalid_user(self):
        unrelated_user = FeedbackGroupsUser.create(
            email="*****@*****.**",
            password="******",
        )
        unrelated_user.save()

        info = Mock()
        info.context = Mock()
        info.context.user = unrelated_user.user
        result = (schema.get_mutation_type().
                  fields["addFeedbackResponseReply"].resolver(
                      self=Mock(),
                      info=info,
                      feedback_response_id=self.feedback_response.id,
                      text="thanks pal",
                      allow_replies=True,
                  ))

        self.assertEqual(
            result,
            AddFeedbackResponseReply(
                reply=None,
                error="You are not authorised to reply to this feedback.",
            ),
        )

        self.assertEqual(
            FeedbackResponseReply.objects.filter(
                feedback_response=self.feedback_response, ).count(),
            0,
        )
Esempio n. 21
0
 def test_different_case(self):
     info = Mock()
     result = (schema.get_mutation_type().fields["tokenAuth"].resolver(
         root=Mock(),
         info=info,
         username="******",
         password="******",
     ))
     self.assertIsNotNone(result)
     self.assertIsNotNone(result.token)
     self.assertEqual(
         graphql_jwt.utils.jwt_decode(result.token).get("username"),
         "*****@*****.**",
     )
Esempio n. 22
0
    def test_invalid_user(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.request_user.user
        result = (
            schema.get_mutation_type()
            .fields["markRepliesAsRead"]
            .resolver(self=Mock(), info=info, reply_ids=[1],)
        )

        self.assertEqual(result, MarkRepliesAsRead(success=True, error=None,))

        self.assertEqual(
            FeedbackResponseReply.objects.filter(time_read__isnull=True,).count(), 1,
        )
Esempio n. 23
0
    def test_logged_out(self):
        info = Mock()
        result = (
            schema.get_mutation_type()
            .fields["markRepliesAsRead"]
            .resolver(self=Mock(), info=info, reply_ids=[1],)
        )

        self.assertEqual(
            result, MarkRepliesAsRead(success=False, error="Not logged in.",)
        )

        self.assertEqual(
            FeedbackResponseReply.objects.filter(time_read__isnull=True,).count(), 1,
        )
Esempio n. 24
0
    def test_existing_assigned_request(self):
        # Add a previous assigned request, user should be able to add another.
        feedback_group = FeedbackGroup(name="name")
        feedback_group.save()

        FeedbackRequest(
            user=self.user,
            media_url="https://soundcloud.com/ruairidx/bruno",
            media_type=MediaTypeChoice.SOUNDCLOUD.name,
            feedback_prompt="feedback_prompt",
            feedback_group=feedback_group,
            email_when_grouped=True,
            genre=GenreChoice.HIPHOP.name,
        ).save()

        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (schema.get_mutation_type().fields["createFeedbackRequest"].
                  resolver(
                      self=Mock(),
                      info=info,
                      media_url="https://www.dropbox.com/s/nonsense/file.wav",
                      feedback_prompt="feedback_prompt",
                      email_when_grouped=True,
                      genre=GenreChoice.ELECTRONIC.name,
                  ))

        self.assertEqual(
            result,
            CreateFeedbackRequest(
                success=True,
                error=None,
                invalid_media_url=False,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(
                user=self.user,
                media_url="https://www.dropbox.com/s/nonsense/file.wav",
                media_type=MediaTypeChoice.DROPBOX.name,
                feedback_prompt="feedback_prompt",
                email_when_grouped=True,
                genre=GenreChoice.ELECTRONIC.name,
            ).count(),
            1,
        )
Esempio n. 25
0
    def test_same_url_different_account(self):
        self.another_user = FeedbackGroupsUser.create(
            email="*****@*****.**",
            password="******",
        )
        self.another_user.save()
        # Add a previous unassigned request, should prevent adding another.
        FeedbackRequest(
            user=self.another_user,
            media_url="https://soundcloud.com/ruairidx/bruno",
            media_type=MediaTypeChoice.SOUNDCLOUD.name,
            feedback_prompt="feedback_prompt",
            email_when_grouped=True,
            genre=GenreChoice.ELECTRONIC.name,
        ).save()

        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (schema.get_mutation_type().fields["createFeedbackRequest"].
                  resolver(
                      self=Mock(),
                      info=info,
                      media_url="https://soundcloud.com/ruairidx/bruno",
                      feedback_prompt="feedback_prompt",
                      email_when_grouped=True,
                      genre=GenreChoice.ELECTRONIC.name,
                  ))

        self.assertEqual(
            result,
            CreateFeedbackRequest(
                success=False,
                error="A request for this track is already pending.",
                invalid_media_url=False,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(
                media_url="https://soundcloud.com/ruairidx/bruno",
                user=self.user,
            ).count(),
            0,
        )
    def test_assigned_request(self):
        feedback_group = FeedbackGroup(name="name")
        feedback_group.save()
        self.existing_request.feedback_group = feedback_group
        self.existing_request.save()

        info = Mock()
        info.context = Mock()
        info.context.user = self.user.user
        result = (
            schema.get_mutation_type()
            .fields["editFeedbackRequest"]
            .resolver(
                self=Mock(),
                info=info,
                feedback_request_id=self.existing_request.id,
                media_url="https://www.dropbox.com/s/nonsense/file.wav",
                feedback_prompt="feedback_prompt",
                email_when_grouped=False,
                genre=GenreChoice.HIPHOP.name,
            )
        )

        self.assertEqual(
            result,
            EditFeedbackRequest(
                success=False,
                error="This request has already been assigned to a feedback group and cannot be edited.",
                invalid_media_url=False,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(
                user=self.user,
                media_url="https://soundcloud.com/ruairidx/grey",
                media_type=MediaTypeChoice.SOUNDCLOUD.name,
                feedback_prompt="feedback_prompt",
                email_when_grouped=True,
                genre=GenreChoice.ELECTRONIC.name,
            ).count(),
            1,
        )
    def test_successful_reply(self):
        info = Mock()
        info.context = Mock()
        info.context.user = self.feedback_request.user.user
        result = (schema.get_mutation_type().
                  fields["addFeedbackResponseReply"].resolver(
                      self=Mock(),
                      info=info,
                      feedback_response_id=self.feedback_response.id,
                      text="thanks pal",
                      allow_replies=True,
                  ))

        self.assertEqual(
            FeedbackResponseReply.objects.filter(
                feedback_response=self.feedback_response,
                user=self.feedback_request.user,
                text="thanks pal",
                allow_replies=True,
            ).count(),
            1,
        )

        reply = FeedbackResponseReply.objects.filter(
            feedback_response=self.feedback_response,
            user=self.feedback_request.user,
            text="thanks pal",
            allow_replies=True,
        ).first()

        self.assertEqual(
            result,
            AddFeedbackResponseReply(
                reply=FeedbackResponseReplyType(
                    id=1,
                    username="******",
                    text="thanks pal",
                    allow_replies=True,
                    time_created=reply.time_created,
                ),
                error=None,
            ),
        )
    def test_unauthorised(self):
        self.new_user = FeedbackGroupsUser.create(
            email="*****@*****.**", password="******",
        )
        self.new_user.save()
        info = Mock()
        info.context = Mock()
        info.context.user = self.new_user.user
        result = (
            schema.get_mutation_type()
            .fields["editFeedbackRequest"]
            .resolver(
                self=Mock(),
                info=info,
                feedback_request_id=self.existing_request.id,
                media_url="https://www.dropbox.com/s/nonsense/file.wav",
                feedback_prompt="feedback_prompt",
                email_when_grouped=False,
                genre=GenreChoice.HIPHOP.name,
            )
        )

        self.assertEqual(
            result,
            EditFeedbackRequest(
                success=False,
                error="You are not the owner of this feedback request.",
                invalid_media_url=False,
            ),
        )

        self.assertEqual(
            FeedbackRequest.objects.filter(
                user=self.user,
                media_url="https://soundcloud.com/ruairidx/grey",
                media_type=MediaTypeChoice.SOUNDCLOUD.name,
                feedback_prompt="feedback_prompt",
                email_when_grouped=True,
                genre=GenreChoice.ELECTRONIC.name,
            ).count(),
            1,
        )
Esempio n. 29
0
    def test_no_account(self):
        info = Mock()
        result = (schema.get_mutation_type().fields["registerUser"].resolver(
            self=Mock(),
            info=info,
            email="*****@*****.**",
            password="******",
            password_repeat="sussexbythesea1901",
        ))

        self.assertEqual(result, RegisterUser(
            success=True,
            error=None,
        ))

        self.assertEqual(
            FeedbackGroupsUser.objects.filter(
                user__username="******", ).count(),
            1,
        )
Esempio n. 30
0
    def test_logged_out(self):
        info = Mock()
        result = (schema.get_mutation_type().fields["deleteFeedbackRequest"].
                  resolver(
                      self=Mock(),
                      info=info,
                      feedback_request_id=self.existing_request.id,
                  ))

        self.assertEqual(
            result,
            DeleteFeedbackRequest(
                success=False,
                error="Not logged in.",
            ))

        self.assertEqual(
            FeedbackRequest.objects.count(),
            1,
        )