예제 #1
0
def test_save(monkeypatch, db):
    user = UserFactory()

    team = Team(name=(team_name := "Team"))
예제 #2
0
 def setUp(self):
     super(TestExternalProviderOAuth2, self).setUp()
     self.user = UserFactory()
     self.provider = MockOAuth2Provider()
예제 #3
0
 def test_to_json(self):
     settings = self.node_settings
     user = UserFactory()
     result = settings.to_json(user)
     assert_equal(result['addon_short_name'], self.short_name)
예제 #4
0
 def test_must_be_logged_in_decorator_with_user(self, mock_from_kwargs):
     user = UserFactory()
     mock_from_kwargs.return_value = Auth(user=user)
     protected()
예제 #5
0
 def test_get_user_by_id(self):
     user = UserFactory()
     assert_equal(User.load(user._id), user)
 def setUp(self):
     super(TestSendRetractionAndEmbargoAdditionMessage, self).setUp()
     self.registration_contrib = UserFactory()
     self.other_user = UserFactory()
     self.registration = RegistrationFactory(
         creator=self.registration_contrib)
예제 #7
0
 def test_logged_in(self):
     user = UserFactory()
     auth_obj = Auth(user=user)
     assert_true(auth_obj.logged_in)
     auth2 = Auth(user=None)
     assert_false(auth2.logged_in)
예제 #8
0
 def test_repr(self):
     self.user_settings.owner = UserFactory()
     assert_in(self.user_settings.owner._id, repr(self.user_settings))
     oauth_settings = GitHubOauthSettingsFactory()
예제 #9
0
 def test_before_page_load_not_contributor(self):
     message = self.node_settings.before_page_load(self.project,
                                                   UserFactory())
     assert_false(message)
예제 #10
0
 def test_get_user_ids_for_site(self):
     expected_users = [UserFactory() for i in range(3)]
     with mock.patch('figures.helpers.settings.FEATURES', self.features):
         user_ids = figures.sites.get_user_ids_for_site(self.site)
         assert set(user_ids) == set([user.id for user in expected_users])
예제 #11
0
    def test_permission_required_views(self, client):
        e = EvaluationFactory()
        u = UserFactory()
        VerificationFactory(user=u, is_verified=True)

        for view_name, kwargs, permission, obj in [
            (
                "phase-create",
                {},
                "change_challenge",
                e.submission.phase.challenge,
            ),
            (
                "phase-update",
                {"slug": e.submission.phase.slug},
                "change_phase",
                e.submission.phase,
            ),
            (
                "method-create",
                {},
                "change_challenge",
                e.submission.phase.challenge,
            ),
            ("method-detail", {"pk": e.method.pk}, "view_method", e.method),
            (
                "submission-create",
                {"slug": e.submission.phase.slug},
                "create_phase_submission",
                e.submission.phase,
            ),
            (
                "submission-create-legacy",
                {"slug": e.submission.phase.slug},
                "change_challenge",
                e.submission.phase.challenge,
            ),
            (
                "submission-detail",
                {"pk": e.submission.pk},
                "view_submission",
                e.submission,
            ),
            ("update", {"pk": e.pk}, "change_evaluation", e),
            ("detail", {"pk": e.pk}, "view_evaluation", e),
        ]:
            response = get_view_for_user(
                client=client,
                viewname=f"evaluation:{view_name}",
                reverse_kwargs={
                    "challenge_short_name": e.submission.phase.challenge.short_name,
                    **kwargs,
                },
                user=u,
            )

            assert response.status_code == 403

            assign_perm(permission, u, obj)

            response = get_view_for_user(
                client=client,
                viewname=f"evaluation:{view_name}",
                reverse_kwargs={
                    "challenge_short_name": e.submission.phase.challenge.short_name,
                    **kwargs,
                },
                user=u,
            )

            assert response.status_code == 200

            remove_perm(permission, u, obj)
    def setUp(self):
        super(TestMigrateRegistrationExtra, self).setUp()
        self.user = UserFactory()
        self.node = ProjectFactory(creator=self.user)
        self.prereg_schema = get_prereg_schema()
        self.file = self._get_test_file()
        self.data = {
            'uploader': {
                'extra': {
                    'hasSelectedFile': True,
                    'nodeId': self.node._id,
                    'selectedFileName': 'file.txt',
                    'sha256': fake.sha256(),
                    'viewUrl': '/project/{}/files/osfstorage/5723787136b74e1a953d9612/'.format(
                        self.node._id
                    )
                },
                'value': 'file.txt'
            },
            'other': {
                'value': 'foo'
            },
            'bad': {
                'value': 'foobarbaz',
                'extra': [
                    {
                        'viewUrl': '/project/{}/files/osfstorage/5723787136b74e1a953d9612/'.format(
                            self.node._id
                        ),
                        'hasSelectedFile': True,
                        'selectedFileName': 'file.txt'
                    }
                ]

            },
            'nested': {
                'value': {
                    'uploader': {
                        'extra': {
                            'hasSelectedFile': True,
                            'nodeId': self.node._id,
                            'selectedFileName': 'file.txt',
                            'sha256': fake.sha256(),
                            'viewUrl': '/project/{}/files/osfstorage/5723787136b74e1a953d9612/'.format(
                                self.node._id
                            )
                        },
                        'value': 'file.txt'
                    },
                    'question': {
                        'value': 'bar',
                        'extra': {}
                    },
                    'other': {
                        'value': 'foo',
                        'extra': []

                    }
                }
            }
        }
예제 #13
0
 def setUp(self):
     super(TestUserSettingsModel, self).setUp()
     self.user = UserFactory()
예제 #14
0
def test_example_ground_truth(client, tmpdir):
    rs = ReaderStudyFactory()
    reader, editor = UserFactory(), UserFactory()
    q1, q2, q3 = (
        QuestionFactory(
            reader_study=rs,
            question_text="q1",
            answer_type=Question.AnswerType.BOOL,
        ),
        QuestionFactory(
            reader_study=rs,
            question_text="q2",
            answer_type=Question.AnswerType.CHOICE,
        ),
        QuestionFactory(
            reader_study=rs,
            question_text="q3",
            answer_type=Question.AnswerType.SINGLE_LINE_TEXT,
        ),
    )
    CategoricalOptionFactory(question=q2, title="option")
    im1, im2, im3 = (ImageFactory(), ImageFactory(), ImageFactory())
    rs.images.set([im1, im2, im3])
    rs.add_reader(reader)
    rs.add_editor(editor)
    rs.generate_hanging_list()

    response = get_view_for_user(
        viewname="reader-studies:example-ground-truth",
        client=client,
        method=client.get,
        reverse_kwargs={"slug": rs.slug},
        follow=True,
        user=reader,
    )
    assert response.status_code == 403

    response = get_view_for_user(
        viewname="reader-studies:example-ground-truth",
        client=client,
        method=client.get,
        reverse_kwargs={"slug": rs.slug},
        follow=True,
        user=editor,
    )
    assert response.status_code == 200
    assert Answer.objects.count() == 0

    gt = io.BytesIO()
    gt.write(response.content)
    gt.seek(0)
    response = get_view_for_user(
        viewname="reader-studies:add-ground-truth",
        client=client,
        method=client.post,
        reverse_kwargs={"slug": rs.slug},
        follow=True,
        data={"ground_truth": gt},
        user=editor,
    )
    assert response.status_code == 200
    assert Answer.objects.count() == rs.images.count() * rs.questions.count()
    for image in [im1, im2, im3]:
        for question in [q1, q2, q3]:
            assert Answer.objects.filter(images=image,
                                         question=question,
                                         is_ground_truth=True).exists()
예제 #15
0
def test_bulk_create(monkeypatch, db):
    user = UserFactory()

    team_1 = Team(name=(team_1_name := "Team 1"))
예제 #16
0
 def test_get_user_by_email(self):
     user = UserFactory()
     assert_equal(auth.get_user(email=user.username), user)
예제 #17
0
def test_bulk_delete(monkeypatch, db):
    user = UserFactory()

    team_1 = TeamFactory(name=(team_1_name := "Team 1"), _base_log_user=user)
    team_2 = TeamFactory(name=(team_2_name := "Team 2"), _base_log_user=user)

    player_1 = PlayerFactory(name=(player_1_name := "Player 1"),
                             team=team_1,
                             _base_log_user=user)
    player_2 = PlayerFactory(name=(player_2_name := "Player 2"),
                             team=team_2,
                             _base_log_user=user)
    player_3 = PlayerFactory(
        name=(player_3_name := "Player 3"),
        team=team_2,
        is_active=True,
        _base_log_user=user,
    )

    # It is not possible to delete all teams because 3rd player is active and it is not possible
    # to delete him
    with pytest.raises(ValidationError):
        Team.objects.all().delete(_base_log_user=user)

    assert Team.objects.count() == 2
    assert Player.objects.count() == 3

    player_3.is_active = False
    player_3.save(_base_log_user=user)

    def bulk_delete_signal(sender, **kwargs):
        assert sender in (Team, Player)

        objs = list(kwargs["objs"])

        if sender == Team:
            assert len(objs) == 2

            assert objs[0].pk == team_1.pk
            assert objs[0].name == team_1_name

            assert objs[1].pk == team_2.pk
            assert objs[1].name == team_2_name

        if sender == Player:
            assert len(objs) == 3

            assert objs[0].pk == player_1.pk
            assert objs[0].name == player_1_name

            assert objs[1].pk == player_2.pk
            assert objs[1].name == player_2_name

            assert objs[2].pk == player_3.pk
            assert objs[2].name == player_3_name

        assert kwargs["user"] == user

    monkeypatch.setattr("django_base_model.signals.base_bulk_delete.send",
                        bulk_delete_signal)

    Team.objects.all().delete(_base_log_user=user)

    assert Team.objects.count() == 0
    assert Player.objects.count() == 0
예제 #18
0
 def test_cant_get_if_not_team_member(self):
     self.user = UserFactory(with_token=True)
     response = self.fetch_with_headers("/teams/%s/projects/%s" %
                                        (self.team.name, "whatever"))
     expect(response.code).to_equal(403)