| OLD | NEW | 
|   1 import os |   1 import os | 
|   2 import shutil |   2 import shutil | 
|   3 import pytest |   3 import pytest | 
 |   4 import zipfile | 
 |   5  | 
|   4 from wsgi_intercept import urllib3_intercept |   6 from wsgi_intercept import urllib3_intercept | 
|   5 from wsgi_intercept import add_wsgi_intercept |   7 from wsgi_intercept import add_wsgi_intercept | 
|   6 from wsgi_intercept import remove_wsgi_intercept |   8 from wsgi_intercept import remove_wsgi_intercept | 
|   7  |   9  | 
|   8 from crowdin_mock_api import app |  10 from crowdin_mock_api import CrowdinConfig, mockapi | 
|   9 from cms.bin import translate |  11 from cms.bin import translate | 
|  10  |  12  | 
|  11  |  13  | 
|  12 @pytest.fixture(scope='module') |  14 @pytest.fixture(scope='module') | 
|  13 def expect_requests(): |  15 def expect_requests(): | 
|  14     return [ |  16     return [ | 
|  15         ('info?key=test_key&json=1', ''), |  17         ('info?key=test_key&json=1', ''), | 
|  16         ('supported-languages?key=test_key&json=1', ''), |  18         ('supported-languages?key=test_key&json=1', ''), | 
|  17         ('add-file?key=test_key&json=1', 'translate.json'), |  19         ('add-file?key=test_key&json=1', '.json'), | 
|  18         ('upload-translation?key=test_key&json=1', 'simple'), |  20         ('upload-translation?key=test_key&json=1', 'simple'), | 
|  19         ('delete-file?key=test_key&json=1', 'translate.json'), |  21         ('delete-file?key=test_key&json=1', '.json'), | 
|  20         ('delete-file?key=test_key&json=1', 'translate.json'), |  22         ('delete-file?key=test_key&json=1', '.json'), | 
|  21         ('delete-directory?key=test_key&json=1', ''), |  | 
|  22         ('delete-directory?key=test_key&json=1', ''), |  23         ('delete-directory?key=test_key&json=1', ''), | 
|  23         ('export?key=test_key&json=1', ''), |  24         ('export?key=test_key&json=1', ''), | 
|  24         ('download/all.zip?key=test_key', ''), |  25         ('download/all.zip?key=test_key', ''), | 
|  25     ] |  26     ] | 
|  26  |  27  | 
|  27  |  28  | 
|  28 @pytest.fixture(scope='module') |  29 @pytest.fixture(scope='module') | 
|  29 def make_crowdin_zip(temp_site): |  30 def api_zip(temp_site, request): | 
|  30     zip_name = os.path.join('tests', 'all') |  31     zip_name = 'all' | 
|  31     input_dir = os.path.join(temp_site, 'locales') |  32     input_dir = os.path.join(temp_site, 'locales') | 
|  32     shutil.make_archive(zip_name, 'zip', input_dir) |  33     shutil.make_archive(zip_name, 'zip', input_dir) | 
|  33     yield None |  34     yield zipfile.ZipFile(zip_name + '.zip') | 
|  34     os.remove(zip_name + '.zip') |  35     os.remove(zip_name + '.zip') | 
|  35  |  36  | 
|  36  |  37  | 
|  37 @pytest.fixture() |  38 @pytest.fixture(scope='session') | 
|  38 def make_intercept(scope='module'): |  39 def mock_api(temp_site): | 
 |  40     config = CrowdinConfig(os.path.join(temp_site, 'locales')) | 
|  39     host = 'api.crowdin.com' |  41     host = 'api.crowdin.com' | 
|  40     port = 443 |  42     port = 443 | 
 |  43     app = mockapi(config) | 
|  41     urllib3_intercept.install() |  44     urllib3_intercept.install() | 
|  42     add_wsgi_intercept(host, port, lambda: app.wsgi_app) |  45     add_wsgi_intercept(host, port, lambda: app.wsgi_app) | 
|  43     yield None |  46     yield app | 
|  44     remove_wsgi_intercept() |  47     remove_wsgi_intercept() | 
|  45  |  48  | 
|  46  |  49  | 
|  47 def test_sync(temp_site, make_intercept, make_crowdin_zip, expect_requests): |  50 def test_sync(temp_site, mock_api, api_zip, expect_requests): | 
|  48     translate.crowdin_sync(temp_site, 'test_key') |  51     translate.crowdin_sync(temp_site, 'test_key') | 
|  49     for (url, data), (expect_url, expect_data) in zip(app.request_log, |  52     for (url, data), (expect_url, expect_data) in zip(mock_api.request_log, | 
|  50                                                       expect_requests): |  53                                                       expect_requests): | 
|  51         assert expect_url in url |  54         assert expect_url in url | 
|  52         assert expect_data in data |  55         assert expect_data in data | 
| OLD | NEW |