def setUp(self):
        self.staff = structure_factories.UserFactory(is_staff=True)
        self.customer_owner = structure_factories.UserFactory()
        self.project_admin = structure_factories.UserFactory()
        self.project_manager = structure_factories.UserFactory()
        self.user = structure_factories.UserFactory()

        self.customer = structure_factories.CustomerFactory()
        self.second_customer = structure_factories.CustomerFactory()
        self.customer.add_user(self.customer_owner,
                               structure_models.CustomerRole.OWNER)

        self.customer_role = structure_models.CustomerRole.OWNER
        self.customer_invitation = factories.CustomerInvitationFactory(
            customer=self.customer, customer_role=self.customer_role)

        self.project = structure_factories.ProjectFactory(
            customer=self.customer)
        self.project.add_user(self.project_admin,
                              structure_models.ProjectRole.ADMINISTRATOR)
        self.project.add_user(self.project_manager,
                              structure_models.ProjectRole.MANAGER)

        self.project_role = structure_models.ProjectRole.ADMINISTRATOR
        self.project_invitation = factories.ProjectInvitationFactory(
            project=self.project, project_role=self.project_role)
    def test_invitation_is_canceled_after_expiration_date(self):
        waldur_section = settings.WALDUR_CORE.copy()
        waldur_section['INVITATION_LIFETIME'] = timedelta(weeks=1)

        with self.settings(WALDUR_CORE=waldur_section):
            invitation = factories.ProjectInvitationFactory(created=timezone.now() - timedelta(weeks=1))
            tasks.cancel_expired_invitations()

        self.assertEqual(models.Invitation.objects.get(uuid=invitation.uuid).state, models.Invitation.State.EXPIRED)
    def test_user_which_already_has_role_within_project_cannot_accept_invitation(self):
        project_invitation = factories.ProjectInvitationFactory(
            project=self.project, project_role=self.project_role)
        self.client.force_authenticate(user=self.user)
        self.project.add_user(self.user, project_invitation.project_role)
        response = self.client.post(factories.ProjectInvitationFactory.get_url(project_invitation, action='accept'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.data, ['User already has role within this project.'])
Beispiel #4
0
    def test_when_expert_request_is_cancelled_pending_invitations_are_cancelled(self):
        # Arrange
        expert = structure_factories.UserFactory()
        self.expert_team.add_user(expert, structure_models.ProjectRole.ADMINISTRATOR)
        user_factories.ProjectInvitationFactory(
            email=expert.email,
            project=self.expert_request.project,
            project_role=structure_models.ProjectRole.ADMINISTRATOR,
        )

        # Act
        self.client.force_authenticate(self.staff)
        response = self.cancel_expert_request()

        # Assert
        pending_invitations = user_models.Invitation.objects.filter(state=user_models.Invitation.State.PENDING)
        self.assertFalse(pending_invitations.exists())

        cancelled_invitations = user_models.Invitation.objects.filter(state=user_models.Invitation.State.CANCELED)
        self.assertEqual(cancelled_invitations.count(), 1)