|
23 | 23 | IGEMSource, |
24 | 24 | WekWikGeneIdSource, |
25 | 25 | SEVASource, |
| 26 | + OpenDNACollectionsSource, |
26 | 27 | ) |
27 | 28 | from opencloning import app_settings, http_client |
28 | 29 |
|
@@ -1044,6 +1045,36 @@ def test_circularize(self): |
1044 | 1045 | self.assertEqual(seq.circular, True) |
1045 | 1046 |
|
1046 | 1047 |
|
| 1048 | +class OpenDNACollectionsSourceTest(unittest.TestCase): |
| 1049 | + def test_valid_url(self): |
| 1050 | + source = OpenDNACollectionsSource( |
| 1051 | + id=0, |
| 1052 | + repository_id='Ecoli Nanobody Toolkit/BC_RJ_SD8', |
| 1053 | + repository_name='open_dna_collections', |
| 1054 | + sequence_file_url='https://assets.opencloning.org/open-dna-collections/Ecoli%20Nanobody%20Toolkit/genbank_seq/BC_RJ_SD8.gb', |
| 1055 | + ) |
| 1056 | + response = client.post('/repository_id/open_dna_collections', json=source.model_dump()) |
| 1057 | + self.assertEqual(response.status_code, 200) |
| 1058 | + payload = response.json() |
| 1059 | + self.assertEqual(len(payload['sequences']), 1) |
| 1060 | + self.assertEqual(len(payload['sources']), 1) |
| 1061 | + out_source = payload['sources'][0] |
| 1062 | + self.assertEqual(out_source, source.model_dump()) |
| 1063 | + seq = read_dsrecord_from_json(TextFileSequence.model_validate(payload['sequences'][0])) |
| 1064 | + self.assertEqual(seq.name, 'BC_RJ_SD8') |
| 1065 | + |
| 1066 | + def test_errors(self): |
| 1067 | + |
| 1068 | + source = OpenDNACollectionsSource( |
| 1069 | + id=0, |
| 1070 | + repository_id='Ecoli Nanobody Toolkit/BC_RJ_SD8', |
| 1071 | + repository_name='open_dna_collections', |
| 1072 | + sequence_file_url='https://assets.opencloning.org/open-dna-collections/Ecoli%20Nanobody%20Toolkit/genbank_seq/hello.txt', |
| 1073 | + ) |
| 1074 | + response = client.post('/repository_id/open_dna_collections', json=source.model_dump()) |
| 1075 | + self.assertEqual(response.status_code, 404) |
| 1076 | + |
| 1077 | + |
1047 | 1078 | class NotAllowedExternalUrlTest(unittest.TestCase): |
1048 | 1079 | def tearDown(self): |
1049 | 1080 | pytest.MonkeyPatch().delenv('ALLOWED_EXTERNAL_URLS', raising=False) |
|
0 commit comments