Skip to content

Commit

Permalink
add contract status change test
Browse files Browse the repository at this point in the history
  • Loading branch information
vmaksymiv committed May 5, 2016
1 parent 008bfde commit 1670e3a
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions openprocurement/contracting/api/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,70 @@ class ContractResource4BrokersTest(BaseContractWebTest):
""" contract resource test """
initial_auth = ('Basic', ('broker', ''))

def test_contract_status_change(self):
tender_token = self.initial_data['tender_token']

response = self.app.get('/contracts/{}'.format(self.contract['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data']["status"], "draft")

response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], tender_token),
{"data": {"status": "active"}}, status=403)
self.assertEqual(response.status, '403 Forbidden')

response = self.app.patch_json('/contracts/{}/credentials?acc_token={}'.format(self.contract['id'], tender_token),
{'data': ''})
self.assertEqual(response.status, '200 OK')
token = response.json['access']['token']

# draft > active allowed
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"status": "active"}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json['data']['status'], 'active')

# active > draft not allowed
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"status": "draft"}}, status=403)
self.assertEqual(response.status, '403 Forbidden')

# active > terminated allowed
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"status": "terminated"}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json['data']['status'], 'terminated')

# terminated > active not allowed
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"status": "active"}}, status=403)
self.assertEqual(response.status, '403 Forbidden')

# terminated > draft not allowed
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"status": "draft"}}, status=403)
self.assertEqual(response.status, '403 Forbidden')

# draft > terminated allowed ?
data = deepcopy(self.initial_data)
data['id'] = uuid4().hex
self.app.authorization = ('Basic', ('contracting', ''))
response = self.app.post_json('/contracts', {"data": data})
self.app.authorization = self.initial_auth
self.assertEqual(response.status, '201 Created')
contract = response.json['data']
self.assertEqual(contract['status'], 'draft')

response = self.app.patch_json('/contracts/{}/credentials?acc_token={}'.format(contract['id'], data['tender_token']),
{'data': ''})
self.assertEqual(response.status, '200 OK')
token = response.json['access']['token']

response = self.app.patch_json('/contracts/{}?acc_token={}'.format(contract['id'], token),
{"data": {"status": "terminated"}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json['data']['status'], 'terminated')

def test_patch_tender_contract(self):
response = self.app.patch_json('/contracts/{}'.format(self.contract['id']), {"data": {"title": "New Title"}}, status=403)
self.assertEqual(response.status, '403 Forbidden')
Expand Down

0 comments on commit 1670e3a

Please sign in to comment.