Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/cwltool/tests/test_trs.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 from typing import Any, Optional | |
2 from unittest import mock | |
3 from unittest.mock import MagicMock | |
4 | |
5 from cwltool.main import main | |
6 | |
7 from .util import get_data | |
8 | |
9 | |
10 class MockResponse1: | |
11 def __init__( | |
12 self, json_data: Any, status_code: int, raise_for_status: Optional[bool] = None | |
13 ) -> None: | |
14 """Create a fake return object for requests.Session.head.""" | |
15 self.json_data = json_data | |
16 self.status_code = status_code | |
17 self.raise_for_status = mock.Mock() | |
18 self.raise_for_status.side_effect = raise_for_status | |
19 | |
20 def json(self) -> Any: | |
21 return self.json_data | |
22 | |
23 | |
24 def mocked_requests_head(*args: Any) -> MockResponse1: | |
25 | |
26 return MockResponse1(None, 200) | |
27 | |
28 | |
29 class MockResponse2: | |
30 def __init__( | |
31 self, json_data: Any, status_code: int, raise_for_status: Optional[bool] = None | |
32 ) -> None: | |
33 """Create a fake return object for requests.Session.get.""" | |
34 self.json_data = json_data | |
35 self.text = json_data | |
36 self.status_code = status_code | |
37 self.raise_for_status = mock.Mock() | |
38 self.raise_for_status.side_effect = raise_for_status | |
39 | |
40 def json(self) -> Any: | |
41 return self.json_data | |
42 | |
43 headers = {"content-type": "text/plain"} | |
44 | |
45 | |
46 def mocked_requests_get(*args: Any, **kwargs: Any) -> MockResponse2: | |
47 if ( | |
48 args[0] | |
49 == "https://dockstore.org/api/api/ga4gh/v2/tools/quay.io%2Fbriandoconnor%2Fdockstore-tool-md5sum/versions/1.0.4/CWL/files" | |
50 ): | |
51 return MockResponse2( | |
52 [ | |
53 {"file_type": "CONTAINERFILE", "path": "Dockerfile"}, | |
54 {"file_type": "PRIMARY_DESCRIPTOR", "path": "Dockstore.cwl"}, | |
55 {"file_type": "TEST_FILE", "path": "test.json"}, | |
56 ], | |
57 200, | |
58 ) | |
59 elif ( | |
60 args[0] | |
61 == "https://dockstore.org/api/api/ga4gh/v2/tools/quay.io%2Fbriandoconnor%2Fdockstore-tool-md5sum/versions/1.0.4/plain-CWL/descriptor/Dockstore.cwl" | |
62 ): | |
63 string = open(get_data("tests/trs/Dockstore.cwl")).read() | |
64 return MockResponse2(string, 200) | |
65 elif ( | |
66 args[0] | |
67 == "https://dockstore.org/api/api/ga4gh/v2/tools/%23workflow%2Fgithub.com%2Fdockstore-testing%2Fmd5sum-checker/versions/develop/plain-CWL/descriptor/md5sum-tool.cwl" | |
68 ): | |
69 string = open(get_data("tests/trs/md5sum-tool.cwl")).read() | |
70 return MockResponse2(string, 200) | |
71 elif ( | |
72 args[0] | |
73 == "https://dockstore.org/api/api/ga4gh/v2/tools/%23workflow%2Fgithub.com%2Fdockstore-testing%2Fmd5sum-checker/versions/develop/plain-CWL/descriptor/md5sum-workflow.cwl" | |
74 ): | |
75 string = open(get_data("tests/trs/md5sum-workflow.cwl")).read() | |
76 return MockResponse2(string, 200) | |
77 elif ( | |
78 args[0] | |
79 == "https://dockstore.org/api/api/ga4gh/v2/tools/%23workflow%2Fgithub.com%2Fdockstore-testing%2Fmd5sum-checker/versions/develop/CWL/files" | |
80 ): | |
81 return MockResponse2( | |
82 [ | |
83 {"file_type": "TEST_FILE", "path": "md5sum-input-cwl.json"}, | |
84 {"file_type": "SECONDARY_DESCRIPTOR", "path": "md5sum-tool.cwl"}, | |
85 {"file_type": "PRIMARY_DESCRIPTOR", "path": "md5sum-workflow.cwl"}, | |
86 ], | |
87 200, | |
88 ) | |
89 | |
90 print("A mocked call to TRS missed, target was %s", args[0]) | |
91 return MockResponse2(None, 404) | |
92 | |
93 | |
94 @mock.patch("requests.Session.head", side_effect=mocked_requests_head) | |
95 @mock.patch("requests.Session.get", side_effect=mocked_requests_get) | |
96 def test_tool_trs_template(mock_head: MagicMock, mock_get: MagicMock) -> None: | |
97 params = ["--make-template", r"quay.io/briandoconnor/dockstore-tool-md5sum:1.0.4"] | |
98 return_value = main(params) | |
99 mock_head.assert_called() | |
100 mock_get.assert_called() | |
101 assert return_value == 0 | |
102 | |
103 | |
104 @mock.patch("requests.Session.head", side_effect=mocked_requests_head) | |
105 @mock.patch("requests.Session.get", side_effect=mocked_requests_get) | |
106 def test_workflow_trs_template(mock_head: MagicMock, mock_get: MagicMock) -> None: | |
107 params = [ | |
108 "--make-template", | |
109 r"#workflow/github.com/dockstore-testing/md5sum-checker:develop", | |
110 ] | |
111 return_value = main(params) | |
112 mock_head.assert_called() | |
113 mock_get.assert_called() | |
114 assert return_value == 0 |