def test_shows_logged_in_users_organisations(self): me = UserFactory.create(last_login=datetime.datetime(2019, 6, 3, 16, 35, 0, 0, pytz.UTC)) my_org = OrganisationFactory.create() AssessmentFactory.create(owner=me, organisation=my_org) AssessmentFactory.create(owner=me, organisation=my_org) my_org.members.add(me) OrganisationFactory.create() # make another organisation: it shouldn't show up self.client.force_authenticate(me) response = self.client.get("/api/v1/organisations/") assert response.status_code == status.HTTP_200_OK expected = [ OrderedDict([ ("id", f"{my_org.id}"), ("name", my_org.name), ("assessments", 2), ("members", [ { "userid": f"{me.id}", "name": me.username, "last_login": me.last_login.isoformat(), } ]), ]), ] assert expected == response.data
def test_returns_all_assessments_connected_to_organisation(self): AssessmentFactory.create(organisation=self.organisation) AssessmentFactory.create(organisation=self.organisation) AssessmentFactory.create() AssessmentFactory.create(organisation=OrganisationFactory.create()) self.call_and_assert_number_of_returns_assessments(2)
def post_to_create_endpoint(self, assessment): organisation = OrganisationFactory.create() organisation.members.add(self.user) return self.client.post( f"/api/v1/organisations/{organisation.pk}/assessments/", assessment, format="json" )
def test_returns_only_assessments_connected_to_the_organisation(self): second_org = OrganisationFactory.create() second_org.members.add(self.org_member) AssessmentFactory.create(organisation=self.organisation) AssessmentFactory.create(organisation=self.organisation) AssessmentFactory.create(organisation=second_org) self.call_and_assert_number_of_returns_assessments(2)
def test_organisation_member_who_isnt_owner_can_access(self): organisation = OrganisationFactory.create() assessment = AssessmentFactory.create(organisation=organisation) org_member = UserFactory.create() organisation.members.add(org_member) self.client.force_authenticate(org_member) self.call_endpoint_and_assert( assessment, True, )
def test_doesnt_return_assessments_in_connected_organisation(self): user = UserFactory.create() organisation = OrganisationFactory.create() organisation.members.add(user) self.client.force_authenticate(user) AssessmentFactory.create(owner=user) AssessmentFactory.create(owner=user) AssessmentFactory.create(organisation=organisation) response = self.client.get("/api/v1/assessments/") assert response.status_code == status.HTTP_200_OK assert 2 == len(response.data)
def test_fails_if_not_a_member_of_organisation(self): organisation = OrganisationFactory.create() self.client.force_authenticate(self.user) new_assessment = { "name": "test assessment 1", "description": "test description 1", "openbem_version": "10.1.1", } response = self.client.post( f"/api/v1/organisations/{organisation.pk}/assessments/", new_assessment, format="json" ) assert status.HTTP_403_FORBIDDEN == response.status_code assert {"detail": "You are not a member of the Organisation."} == response.json()
def test_sets_organisation(self): organisation = OrganisationFactory.create() organisation.members.add(self.user) self.client.force_authenticate(self.user) new_assessment = { "name": "test assessment 1", "description": "test description 1", "openbem_version": "10.1.1", } response = self.client.post( f"/api/v1/organisations/{organisation.pk}/assessments/", new_assessment, format="json" ) assert status.HTTP_201_CREATED == response.status_code assessment = Assessment.objects.get(pk=response.data["id"]) assert organisation == assessment.organisation
def setUpClass(cls): cls.organisation = OrganisationFactory.create() cls.org_member = UserFactory.create() cls.organisation.members.add(cls.org_member) super().setUpClass()