Esempio n. 1
0
def test_staff_view(rf: RequestFactory, ChallengeSet, admin_user, mocker):
    # admin_user is a superuser, not a challenge admin
    creator = ChallengeSet.creator
    challenge = ChallengeSet.challenge
    participant = ChallengeSet.participant
    non_participant = ChallengeSet.non_participant

    # Messages need to be mocked when using request factory
    mock_messages = mocker.patch(
        "grandchallenge.core.permissions.mixins.messages"
    ).start()
    mock_messages.INFO = "INFO"

    assert_redirect(
        settings.LOGIN_URL, AnonymousUser(), StaffOnlyView, challenge, rf
    )
    assert_status(403, participant, StaffOnlyView, challenge, rf)
    assert_status(403, non_participant, StaffOnlyView, challenge, rf)
    assert_status(403, creator, StaffOnlyView, challenge, rf)
    assert_status(200, admin_user, StaffOnlyView, challenge, rf)

    participant.is_staff = True
    participant.save()

    assert_status(200, participant, StaffOnlyView, challenge, rf)
Esempio n. 2
0
        def assertions(driver, task_id, sandbox_directory):

            logging.info('Statuses: {}'.format(driver.statuses))
            self.assertEqual(2, len(driver.statuses))

            actual_status_0 = driver.statuses[0]
            expected_status_0 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_STARTING
            }
            assert_status(self, expected_status_0, actual_status_0)

            actual_status_1 = driver.statuses[1]
            expected_status_1 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_ERROR
            }
            assert_status(self, expected_status_1, actual_status_1)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertEqual(1, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {
                'sandbox-directory': sandbox_directory,
                'task-id': task_id
            }
            assert_message(self, expected_message_0, actual_encoded_message_0)
Esempio n. 3
0
 def test_create_status_running(self):
     task_id = get_random_task_id()
     actual_status = ce.create_status(task_id, cook.TASK_RUNNING)
     expected_status = {
         'task_id': {
             'value': task_id
         },
         'state': cook.TASK_RUNNING
     }
     assert_status(self, expected_status, actual_status)
Esempio n. 4
0
    def test_update_status(self):
        driver = FakeMesosExecutorDriver()
        task_id = get_random_task_id()
        task_state = "TEST_TASK_STATE"

        ce.update_status(driver, task_id, task_state)

        self.assertEqual(1, len(driver.statuses))
        actual_status = driver.statuses[0]
        expected_status = {'task_id': {'value': task_id}, 'state': task_state}
        assert_status(self, expected_status, actual_status)
Esempio n. 5
0
 def test_create_status_running(self):
     driver = tu.FakeMesosExecutorDriver()
     task_id = tu.get_random_task_id()
     status_updater = ce.StatusUpdater(driver, task_id)
     actual_status = status_updater.create_status(cook.TASK_RUNNING)
     expected_status = {
         'task_id': {
             'value': task_id
         },
         'state': cook.TASK_RUNNING
     }
     tu.assert_status(self, expected_status, actual_status)
Esempio n. 6
0
        def assertions(driver, task_id, sandbox_location):

            logging.info('Statuses: {}'.format(driver.statuses))
            self.assertEqual(3, len(driver.statuses))

            actual_status_0 = driver.statuses[0]
            expected_status_0 = {'task_id': {'value': task_id}, 'state': cook.TASK_STARTING}
            assert_status(self, expected_status_0, actual_status_0)

            actual_status_1 = driver.statuses[1]
            expected_status_1 = {'task_id': {'value': task_id}, 'state': cook.TASK_RUNNING}
            assert_status(self, expected_status_1, actual_status_1)

            actual_status_2 = driver.statuses[2]
            expected_status_2 = {'task_id': {'value': task_id}, 'state': cook.TASK_KILLED}
            assert_status(self, expected_status_2, actual_status_2)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertEqual(2, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {'sandbox-location': sandbox_location, 'task-id': task_id}
            assert_message(self, expected_message_0, actual_encoded_message_0)

            actual_encoded_message_1 = driver.messages[1]
            expected_message_1 = {'exit-code': -15, 'task-id': task_id}
            assert_message(self, expected_message_1, actual_encoded_message_1)
Esempio n. 7
0
        def assertions(driver, task_id, sandbox_location):
            
            logging.info('Statuses: {}'.format(driver.statuses))
            self.assertEqual(3, len(driver.statuses))

            actual_status_0 = driver.statuses[0]
            expected_status_0 = {'task_id': {'value': task_id}, 'state': cook.TASK_STARTING}
            assert_status(self, expected_status_0, actual_status_0)

            actual_status_1 = driver.statuses[1]
            expected_status_1 = {'task_id': {'value': task_id}, 'state': cook.TASK_RUNNING}
            assert_status(self, expected_status_1, actual_status_1)

            actual_status_2 = driver.statuses[2]
            expected_status_2 = {'task_id': {'value': task_id}, 'state': cook.TASK_FINISHED}
            assert_status(self, expected_status_2, actual_status_2)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertEqual(4, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {'sandbox-location': sandbox_location, 'task-id': task_id}
            assert_message(self, expected_message_0, actual_encoded_message_0)

            actual_encoded_message_1 = driver.messages[1]
            expected_message_1 = {'progress-message': 'Fifty percent', 'progress-percent': 50, 'task-id': task_id}
            assert_message(self, expected_message_1, actual_encoded_message_1)

            actual_encoded_message_2 = driver.messages[2]
            expected_message_2 = {'progress-message': 'Fifty-five percent', 'progress-percent': 55, 'task-id': task_id}
            assert_message(self, expected_message_2, actual_encoded_message_2)

            actual_encoded_message_3 = driver.messages[3]
            expected_message_3 = {'exit-code': 0, 'task-id': task_id}
            assert_message(self, expected_message_3, actual_encoded_message_3)
Esempio n. 8
0
        def assertions(driver, task_id, sandbox_directory):

            logging.info('Statuses: {}'.format(driver.statuses))
            self.assertEqual(3, len(driver.statuses))

            actual_status_0 = driver.statuses[0]
            expected_status_0 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_STARTING
            }
            assert_status(self, expected_status_0, actual_status_0)

            actual_status_1 = driver.statuses[1]
            expected_status_1 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_RUNNING
            }
            assert_status(self, expected_status_1, actual_status_1)

            actual_status_2 = driver.statuses[2]
            expected_status_2 = {
                'task_id': {
                    'value': task_id
                },
                'state': cook.TASK_FINISHED
            }
            assert_status(self, expected_status_2, actual_status_2)

            logging.info('Messages: {}'.format(driver.messages))
            self.assertEqual(3, len(driver.messages))

            actual_encoded_message_0 = driver.messages[0]
            expected_message_0 = {
                'sandbox-directory': sandbox_directory,
                'task-id': task_id
            }
            assert_message(self, expected_message_0, actual_encoded_message_0)

            actual_encoded_message_1 = driver.messages[1]
            expected_message_1 = {
                'progress-message': 'line count is 20',
                'progress-percent': 90,
                'task-id': task_id
            }
            assert_message(self, expected_message_1, actual_encoded_message_1)

            actual_encoded_message_2 = driver.messages[2]
            expected_message_2 = {'exit-code': 0, 'task-id': task_id}
            assert_message(self, expected_message_2, actual_encoded_message_2)
Esempio n. 9
0
def test_permissions_mixin(
    rf: RequestFactory, admin_user, mocker, ChallengeSet
):
    # admin_user is a superuser, not a challenge admin
    creator = ChallengeSet.creator
    challenge = ChallengeSet.challenge
    participant = ChallengeSet.participant
    non_participant = ChallengeSet.non_participant

    # Messages need to be mocked when using request factory
    mock_messages = mocker.patch(
        "grandchallenge.core.permissions.mixins.messages"
    ).start()

    mock_messages.INFO = "INFO"
    assert_status(200, admin_user, AdminOnlyView, challenge, rf)
    assert_status(200, creator, AdminOnlyView, challenge, rf)
    assert_status(403, participant, AdminOnlyView, challenge, rf)
    assert_status(403, non_participant, AdminOnlyView, challenge, rf)
    assert_redirect(
        settings.LOGIN_URL, AnonymousUser(), AdminOnlyView, challenge, rf
    )
    assert_status(200, admin_user, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(200, creator, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(200, participant, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(
        403, non_participant, ParticipantOrAdminOnlyView, challenge, rf
    )
    assert_redirect(
        settings.LOGIN_URL,
        AnonymousUser(),
        ParticipantOrAdminOnlyView,
        challenge,
        rf,
    )
    # Make a 2nd challenge and make sure that the admins and participants
    # here cannot see the first
    creator2 = UserFactory()
    challenge2 = ChallengeFactory(creator=creator2)
    participant2 = UserFactory()
    challenge2.add_participant(participant2)
    assert_status(403, creator2, AdminOnlyView, challenge, rf)
    assert_status(403, participant2, AdminOnlyView, challenge, rf)
    assert_status(403, creator2, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(403, participant2, ParticipantOrAdminOnlyView, challenge, rf)
Esempio n. 10
0
def test_permissions_after_challenge_rename(
    rf: RequestFactory, admin_user, mocker, ChallengeSet
):
    """ Check that we can rename challenges.
    Admin_user is superuser """
    creator = ChallengeSet.creator
    challenge = ChallengeSet.challenge
    participant = ChallengeSet.participant
    non_participant = ChallengeSet.non_participant
    # Messages need to be mocked when using request factory
    mock_messages = mocker.patch(
        "grandchallenge.core.permissions.mixins.messages"
    ).start()
    mock_messages.INFO = "INFO"
    assert_status(200, admin_user, AdminOnlyView, challenge, rf)
    assert_status(200, creator, AdminOnlyView, challenge, rf)
    assert_status(403, participant, AdminOnlyView, challenge, rf)
    assert_status(403, non_participant, AdminOnlyView, challenge, rf)
    assert_redirect(
        settings.LOGIN_URL, AnonymousUser(), AdminOnlyView, challenge, rf
    )
    assert_status(200, admin_user, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(200, creator, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(200, participant, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(
        403, non_participant, ParticipantOrAdminOnlyView, challenge, rf
    )
    assert_redirect(
        settings.LOGIN_URL,
        AnonymousUser(),
        ParticipantOrAdminOnlyView,
        challenge,
        rf,
    )
    challenge.short_name += "appendedname"
    challenge.save()
    assert_status(200, admin_user, AdminOnlyView, challenge, rf)
    assert_status(200, creator, AdminOnlyView, challenge, rf)
    assert_status(403, participant, AdminOnlyView, challenge, rf)
    assert_status(403, non_participant, AdminOnlyView, challenge, rf)
    assert_redirect(
        settings.LOGIN_URL, AnonymousUser(), AdminOnlyView, challenge, rf
    )
    assert_status(200, admin_user, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(200, creator, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(200, participant, ParticipantOrAdminOnlyView, challenge, rf)
    assert_status(
        403, non_participant, ParticipantOrAdminOnlyView, challenge, rf
    )
    assert_redirect(
        settings.LOGIN_URL,
        AnonymousUser(),
        ParticipantOrAdminOnlyView,
        challenge,
        rf,
    )