Beispiel #1
0
    def test_make_child_embargoed_registration_public_asks_all_admins_in_tree(
            self, mock_ask):
        # Initiate and approve embargo
        node = NodeFactory(creator=self.user)
        c1 = AuthUserFactory()
        child = NodeFactory(parent=node, creator=c1)
        c2 = AuthUserFactory()
        NodeFactory(parent=child, creator=c2)
        registration = RegistrationFactory(project=node)

        registration.embargo_registration(
            self.user,
            timezone.now() + datetime.timedelta(days=10))
        for user_id, embargo_tokens in registration.embargo.approval_state.iteritems(
        ):
            approval_token = embargo_tokens['approval_token']
            registration.embargo.approve_embargo(User.load(user_id),
                                                 approval_token)
        self.registration.save()

        res = self.app.post(registration.api_url_for('project_set_privacy',
                                                     permissions='public'),
                            auth=self.user.auth)
        assert_equal(res.status_code, 200)
        asked_admins = [(admin._id, n._id)
                        for admin, n in mock_ask.call_args[0][0]]
        for admin, node in registration.get_admin_contributors_recursive():
            assert_in((admin._id, node._id), asked_admins)
Beispiel #2
0
def configure_test_preconditions(
        registration_status='public',
        reviews_workflow=DEFAULT_REVIEWS_WORKFLOW,
        schema_response_state=DEFAULT_SCHEMA_RESPONSE_STATE,
        role='admin'):
    '''Create and Configure a RegistrationProvider, Registration, SchemaResponse, and User.'''
    provider = RegistrationProviderFactory()
    provider.update_group_permissions()
    provider.reviews_workflow = reviews_workflow
    provider.save()

    registration = RegistrationFactory(provider=provider,
                                       schema=get_default_test_schema())
    if registration_status == 'public':
        registration.is_public = True
    elif registration_status == 'private':
        registration.is_public = False
        # set moderation state to a realistic value for a private
        # registration with an approved response
        registration.moderation_state = 'embargo'
    elif registration_status == 'withdrawn':
        registration.moderation_state = 'withdrawn'
    elif registration_status == 'deleted':
        registration.deleted = timezone.now()
    registration.save()

    schema_response = registration.schema_responses.last()
    schema_response.approvals_state_machine.set_state(schema_response_state)
    schema_response.save()
    # Set the required fields on the schema response
    for block in schema_response.response_blocks.all():
        block.set_response(DEFAULT_SCHEMA_RESPONSES.get(block.schema_key))

    auth = configure_user_auth(registration, role)

    # Do this step after configuring auth to ensure any new admin user, gets added
    if schema_response_state is ApprovalStates.UNAPPROVED:
        schema_response.pending_approvers.add(*[
            user
            for user, _ in registration.get_admin_contributors_recursive()
        ])

    if schema_response_state is ApprovalStates.IN_PROGRESS:
        # need valid changes for submission validations
        schema_response.update_responses({'q1': 'update for submission'})
        schema_response.revision_justification = 'has for valid revision_justification for submission'
        schema_response.save()

    return auth, schema_response, registration, provider
Beispiel #3
0
    def test_make_child_embargoed_registration_public_asks_all_admins_in_tree(self, mock_ask):
        # Initiate and approve embargo
        node = NodeFactory(creator=self.user)
        c1 = AuthUserFactory()
        child = NodeFactory(parent=node, creator=c1)
        c2 = AuthUserFactory()
        NodeFactory(parent=child, creator=c2)
        registration = RegistrationFactory(project=node)

        registration.embargo_registration(
            self.user,
            timezone.now() + datetime.timedelta(days=10)
        )
        for user_id, embargo_tokens in registration.embargo.approval_state.iteritems():
            approval_token = embargo_tokens['approval_token']
            registration.embargo.approve_embargo(OSFUser.load(user_id), approval_token)
        self.registration.save()

        registration.set_privacy('public', Auth(self.registration.creator))
        asked_admins = [(admin._id, n._id) for admin, n in mock_ask.call_args[0][0]]
        for admin, node in registration.get_admin_contributors_recursive():
            assert_in((admin._id, node._id), asked_admins)