Skip to content

Commit

Permalink
Update tests a bit more
Browse files Browse the repository at this point in the history
  • Loading branch information
eheinrich committed Aug 29, 2019
1 parent 92aff36 commit 4b2b8b0
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
25 changes: 14 additions & 11 deletions observation_portal/observations/test/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,15 +122,15 @@ def test_post_observation_authenticated(self):
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()['name'], self.observation['name'])

def test_post_observation_non_staff_is_direct_user_on_own_direct_proposal(self):
def test_non_staff_direct_user_on_own_direct_proposal(self):
other_user = blend_user()
mixer.blend(Membership, user=other_user, proposal=self.proposal)
self.client.force_login(other_user)
response = self.client.post(reverse('api:schedule-list'), data=self.observation)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()['name'], self.observation['name'])

def test_non_staff_on_direct_proposal_submits_to_another_non_direct_proposal_of_theirs_fails(self):
def test_non_staff_direct_user_submits_to_another_non_direct_proposal_of_theirs_fails(self):
other_user = blend_user()
mixer.blend(Membership, user=other_user, proposal=self.proposal)
self.proposal.direct_submission = False
Expand All @@ -141,7 +141,7 @@ def test_non_staff_on_direct_proposal_submits_to_another_non_direct_proposal_of_
self.assertEqual(response.status_code, 400)
self.assertEqual(len(Observation.objects.all()), 0)

def test_post_observation_non_staff_direct_user_on_other_proposal(self):
def test_non_staff_direct_user_submits_to_direct_proposal_thats_not_theirs_fails(self):
other_user = blend_user()
other_proposal = mixer.blend(Proposal, direct_submission=True)
mixer.blend(Membership, proposal=other_proposal, user=other_user)
Expand Down Expand Up @@ -488,6 +488,13 @@ def test_non_staff_direct_user_submits_on_other_proposal_fails(self):
observation = self._generate_observation_data(
self.requestgroup.requests.first().id, [self.requestgroup.requests.first().configurations.first().id]
)
# First check if the other proposal is a non direct proposal
response = self.client.post(reverse('api:observations-list'), data=observation)
self.assertEqual(response.status_code, 400)
self.assertEqual(len(Observation.objects.all()), 0)
# Now check if the other proposal is a direct proposal
self.proposal.direct_submission = True
self.proposal.save()
response = self.client.post(reverse('api:observations-list'), data=observation)
self.assertEqual(response.status_code, 400)
self.assertEqual(len(Observation.objects.all()), 0)
Expand All @@ -512,17 +519,13 @@ def test_non_staff_direct_user_submits_to_non_direct_proposal_of_theirs_fails(se
self.assertEqual(len(Observation.objects.all()), 0)

def test_non_staff_direct_user_submits_on_own_direct_proposal_succeeds(self):
self.proposal.direct_submission = True
self.proposal.save()
non_staff_user = blend_user()
proposal = mixer.blend(Proposal, direct_submission=True)
mixer.blend(Membership, user=non_staff_user, proposal=proposal)
mixer.blend(Membership, proposal=self.proposal, user=non_staff_user)
self.client.force_login(non_staff_user)
requestgroup = create_simple_requestgroup(
non_staff_user, proposal, window=self.window, location=self.location, instrument_type='1M0-SCICAM-SBIG'
)
requestgroup.observation_type = RequestGroup.NORMAL
requestgroup.save()
observation = self._generate_observation_data(
requestgroup.requests.first().id, [requestgroup.requests.first().configurations.first().id]
self.requestgroup.requests.first().id, [self.requestgroup.requests.first().configurations.first().id]
)
response = self.client.post(reverse('api:observations-list'), data=observation)
self.assertEqual(response.status_code, 201)
Expand Down
2 changes: 1 addition & 1 deletion observation_portal/observations/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def cancel(self, request):
request__request_group__observation_type=RequestGroup.RAPID_RESPONSE)
if not cancel_serializer.data.get('include_direct', False):
observations = observations.exclude(request__request_group__observation_type=RequestGroup.DIRECT)
if not request.user.is_staff:
if request.user and not request.user.is_staff:
observations = observations.filter(request__request_group__proposal__direct_submission=True)
observations = observations.filter(state__in=['PENDING', 'IN_PROGRESS'])
# Receive a list of observation id's to cancel
Expand Down

0 comments on commit 4b2b8b0

Please sign in to comment.