cr-connect-workflow/tests/test_approvals_api.py

47 lines
1.6 KiB
Python
Raw Normal View History

2020-05-24 07:22:14 +00:00
import json
2020-05-24 05:53:48 +00:00
from tests.base_test import BaseTest
2020-05-24 07:22:14 +00:00
from crc import app, db, session
from crc.models.approval import ApprovalModel
2020-05-24 05:53:48 +00:00
class TestApprovals(BaseTest):
def setUp(self):
"""Initial setup shared by all TestApprovals tests"""
self.load_example_data()
2020-05-24 07:22:14 +00:00
self.study = self.create_study()
2020-05-24 05:53:48 +00:00
self.workflow = self.create_workflow('random_fact')
2020-05-24 07:22:14 +00:00
# TODO: Move to base_test as a helper
self.approval = ApprovalModel(
study=self.study,
workflow=self.workflow,
approver_uid='bgb22',
status='WAITING', # TODO: Use enumerate options
version=1
)
session.add(self.approval)
session.commit()
2020-05-24 05:53:48 +00:00
def test_list_approvals_per_approver(self):
"""Only approvals associated with approver should be returned"""
rv = self.app.get('/v1.0/approval', headers=self.logged_in_headers())
self.assert_success(rv)
def test_list_approvals_per_admin(self):
"""All approvals will be returned"""
rv = self.app.get('/v1.0/approval', headers=self.logged_in_headers())
self.assert_success(rv)
def test_update_approval(self):
"""Approval status will be updated"""
2020-05-24 07:22:14 +00:00
body = {
'approver_uid': 'rvr98',
'status': 'DECLINED'
}
approval_id = self.approval.id
rv = self.app.put(f'/v1.0/approval/{approval_id}',
content_type="application/json",
2020-05-24 05:53:48 +00:00
headers=self.logged_in_headers(),
2020-05-24 07:22:14 +00:00
data=json.dumps(body))
2020-05-24 05:53:48 +00:00
self.assert_success(rv)