|
3 | 3 | from obiba_opal.system import TaxonomyService |
4 | 4 | from obiba_opal.file import FileService |
5 | 5 | from obiba_opal.core import HTTPError |
| 6 | +import shutil |
| 7 | +import os |
| 8 | +from uuid import uuid4 |
6 | 9 |
|
7 | 10 | class TestClass(unittest.TestCase): |
8 | 11 |
|
9 | 12 | TEST_FILE = '/tmp/data.csv' |
10 | 13 | TEST_ZIPPED_FILE = '/tmp/data.zip' |
| 14 | + TEST_TAXONOMY_FILENAME = 'OBiBa_taxonomyTest.yml' |
| 15 | + TEST_TAXONOMY_FILE = '/tmp/OBiBa_taxonomyTest.yml' |
| 16 | + LOCAL_TAXONOMY_FILE = '/tmp/OBiBa_taxonomyTest.yml' |
| 17 | + TEST_TAXONOMY_NAME = 'OBiBa_taxonomyTest' |
11 | 18 |
|
12 | 19 | @classmethod |
13 | 20 | def setup_class(cls): |
14 | 21 | cls.service = TaxonomyService(make_client()) |
| 22 | + suffix = uuid4().hex |
| 23 | + cls.TEST_TAXONOMY_FILENAME = f'OBiBa_taxonomyTest_{suffix}.yml' |
| 24 | + cls.TEST_TAXONOMY_FILE = f'/tmp/{cls.TEST_TAXONOMY_FILENAME}' |
| 25 | + cls.LOCAL_TAXONOMY_FILE = f'/tmp/{cls.TEST_TAXONOMY_FILENAME}' |
| 26 | + cls.TEST_TAXONOMY_NAME = f'OBiBa_taxonomyTest_{suffix}' |
15 | 27 |
|
16 | 28 | def test_1_importFile(self): |
17 | 29 | try: |
18 | 30 | fileService = FileService(make_client()) |
19 | | - fileService.upload_file('./tests/resources/OBiBa_taxonomyTest.yml', '/tmp') |
20 | | - response = fileService.file_info('/tmp/OBiBa_taxonomyTest.yml') |
21 | | - if response['name'] == 'OBiBa_taxonomyTest.yml': |
22 | | - response = self.service.importFile('/tmp/OBiBa_taxonomyTest.yml', True) |
23 | | - fileService.delete_file('/tmp/OBiBa_taxonomyTest.yml') |
24 | | - assert response.code == 201 |
25 | | - else: |
26 | | - assert False |
27 | | - |
| 31 | + # Read and modify the taxonomy file to use randomized name |
| 32 | + with open('./tests/resources/OBiBa_taxonomyTest.yml', 'r') as f: |
| 33 | + content = f.read() |
| 34 | + content = content.replace('"OBiBa_taxonomyTest"', f'"{self.TEST_TAXONOMY_NAME}"') |
| 35 | + with open(self.LOCAL_TAXONOMY_FILE, 'w') as f: |
| 36 | + f.write(content) |
| 37 | + try: |
| 38 | + fileService.upload_file(self.LOCAL_TAXONOMY_FILE, '/tmp') |
| 39 | + response = fileService.file_info(self.TEST_TAXONOMY_FILE) |
| 40 | + if response['name'] == self.TEST_TAXONOMY_FILENAME: |
| 41 | + response = self.service.importFile(self.TEST_TAXONOMY_FILE, True) |
| 42 | + fileService.delete_file(self.TEST_TAXONOMY_FILE) |
| 43 | + assert response.code == 201 |
| 44 | + else: |
| 45 | + assert False |
| 46 | + finally: |
| 47 | + if os.path.exists(self.LOCAL_TAXONOMY_FILE): |
| 48 | + os.remove(self.LOCAL_TAXONOMY_FILE) |
28 | 49 | except Exception as e: |
29 | 50 | assert False |
30 | 51 |
|
31 | 52 |
|
32 | 53 | def test_2_downloadTaxonomy(self): |
33 | 54 | try: |
34 | | - response = self.service.download('OBiBa_taxonomyTest') |
35 | | - assert response.code == 200 and 'OBiBa_taxonomyTest' in str(response) |
| 55 | + response = self.service.download(self.TEST_TAXONOMY_NAME) |
| 56 | + assert response.code == 200 and self.TEST_TAXONOMY_NAME in str(response) |
36 | 57 |
|
37 | 58 | except Exception as e: |
38 | 59 | assert False |
39 | 60 |
|
40 | 61 |
|
41 | 62 | def test_3_taxonomiesSummary(self): |
42 | 63 | try: |
43 | | - name = 'OBiBa_taxonomyTest' |
| 64 | + name = self.TEST_TAXONOMY_NAME |
44 | 65 | response = self.service.summaries() |
45 | 66 | assert response.code == 200 and len(list(filter(lambda t: t['name'] == name, response.from_json()['summaries']))) > 0 |
46 | 67 | except Exception as e: |
47 | 68 | assert False |
48 | 69 |
|
49 | 70 | def test_4_deleteTaxonomy(self): |
50 | 71 | try: |
51 | | - name = 'OBiBa_taxonomyTest' |
| 72 | + name = self.TEST_TAXONOMY_NAME |
52 | 73 | # keep around for interactive test |
53 | 74 | # response = self.service.confirmAndDelete(name, lambda: self.service.delete(name)) |
54 | 75 | response = self.service.delete(name) |
|
0 commit comments