Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: tests/test_xtm_translate.py

Issue 29968558: Issue 7037 - [XTM Integration] Make REST API url customizable
Patch Set: Created Dec. 27, 2018, 2:23 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 # This file is part of the Adblock Plus web scripts, 1 # This file is part of the Adblock Plus web scripts,
2 # Copyright (C) 2006-present eyeo GmbH 2 # Copyright (C) 2006-present eyeo GmbH
3 # 3 #
4 # Adblock Plus is free software: you can redistribute it and/or modify 4 # Adblock Plus is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License version 3 as 5 # it under the terms of the GNU General Public License version 3 as
6 # published by the Free Software Foundation. 6 # published by the Free Software Foundation.
7 # 7 #
8 # Adblock Plus is distributed in the hope that it will be useful, 8 # Adblock Plus is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 @pytest.fixture 57 @pytest.fixture
58 def env_valid_token(): 58 def env_valid_token():
59 old_env = os.environ 59 old_env = os.environ
60 os.environ = _ENV_TOKEN_VALID 60 os.environ = _ENV_TOKEN_VALID
61 yield True 61 yield True
62 os.environ = old_env 62 os.environ = old_env
63 63
64 64
65 @pytest.mark.script_launch_mode('subprocess') 65 @pytest.mark.script_launch_mode('subprocess')
66 @pytest.mark.parametrize('args,exp_msg', [ 66 @pytest.mark.parametrize('args,exp_msg', [
67 (['-h'], 'usage: xtm_translations.py [-h] [-v] ' 67 (['-h'], 'usage: xtm_translations.py [-h] [-v] [--api-urlAPI_URL]'
68 '{login,create,upload,download} ...'), 68 '{login,create,upload,download} ...'),
69 (['create', '-h'], 'usage: xtm_translations.py create [-h] --name NAME ' 69 (['create', '-h'], 'usage: xtm_translations.py create [-h] --name NAME '
70 '--desc DESC --client-id CLIENT_ID --ref-id REF_ID ' 70 '--desc DESC --client-id CLIENT_ID --ref-id REF_ID '
71 '[--workflow-id WORKFLOW_ID] [--source-lang ' 71 '[--workflow-id WORKFLOW_ID] [--source-lang '
72 'SOURCE_LANG] [--save-id] [--workflow-name ' 72 'SOURCE_LANG] [--save-id] [--workflow-name '
73 'WORKFLOW_NAME] [source_dir]'), 73 'WORKFLOW_NAME] [source_dir]'),
74 (['upload', '-h'], 'usage: xtm_translations.py upload [-h] ' 74 (['upload', '-h'], 'usage: xtm_translations.py upload [-h] '
75 '[--no-overwrite] [source_dir]'), 75 '[--no-overwrite] [source_dir]'),
76 (['download', '-h'], 'usage: xtm_translations.py download [-h] ' 76 (['download', '-h'], 'usage: xtm_translations.py download [-h] '
77 '[source_dir]'), 77 '[source_dir]'),
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 def test_login(intercept, monkeypatch, capsys): 165 def test_login(intercept, monkeypatch, capsys):
166 """Test if the login functionality works as expected.""" 166 """Test if the login functionality works as expected."""
167 exp_output = const.Token.SAVE_COMMAND.format(const.Token.ENV_VAR, 167 exp_output = const.Token.SAVE_COMMAND.format(const.Token.ENV_VAR,
168 'TheXTM-APIToken-VALID') 168 'TheXTM-APIToken-VALID')
169 monkeypatch.setattr( 169 monkeypatch.setattr(
170 'cms.translations.xtm.cli.input_fn', 170 'cms.translations.xtm.cli.input_fn',
171 lambda inp: 'admin' if 'username' in inp.lower() else '20', 171 lambda inp: 'admin' if 'username' in inp.lower() else '20',
172 ) 172 )
173 monkeypatch.setattr('getpass.getpass', lambda prompt: 'pass') 173 monkeypatch.setattr('getpass.getpass', lambda prompt: 'pass')
174 174
175 generate_token(None) 175 generate_token(XtmMockArgs.LoginArgsNamespace)
176 out, err = capsys.readouterr() 176 out, err = capsys.readouterr()
177 177
178 assert err == '' 178 assert err == ''
179 assert exp_output in out 179 assert exp_output in out
180 180
181 181
182 def test_login_wrong_credentials(intercept, monkeypatch, capsys): 182 def test_login_wrong_credentials(intercept, monkeypatch, capsys):
183 """Test exception handling when generating the tokens.""" 183 """Test exception handling when generating the tokens."""
184 monkeypatch.setattr( 184 monkeypatch.setattr(
185 'cms.translations.xtm.cli.input_fn', 185 'cms.translations.xtm.cli.input_fn',
186 lambda inp: 'foo' if 'username' in inp.lower() else '50', 186 lambda inp: 'foo' if 'username' in inp.lower() else '50',
187 ) 187 )
188 monkeypatch.setattr('getpass.getpass', lambda prompt: 'pass') 188 monkeypatch.setattr('getpass.getpass', lambda prompt: 'pass')
189 monkeypatch.setattr('sys.exit', lambda x: sys.stderr.write(str(x))) 189 monkeypatch.setattr('sys.exit', lambda x: sys.stderr.write(str(x)))
190 190
191 generate_token(None) 191 generate_token(XtmMockArgs.LoginArgsNamespace)
192 out, err = capsys.readouterr() 192 out, err = capsys.readouterr()
193 193
194 assert 'Invalid credentials' in err 194 assert 'Invalid credentials' in err
195 assert out == '' 195 assert out == ''
196 196
197 197
198 @pytest.mark.script_launch_mode('subprocess') 198 @pytest.mark.script_launch_mode('subprocess')
199 @pytest.mark.parametrize('args,env,exp_msg', [ 199 @pytest.mark.parametrize('args,env,exp_msg', [
200 (['str(temp_site)'], _ENV_NO_TOKEN, 200 (['str(temp_site)'], _ENV_NO_TOKEN,
201 const.ErrorMessages.NO_TOKEN_PROVIDED.split('\n')[0]), 201 const.ErrorMessages.NO_TOKEN_PROVIDED.split('\n')[0]),
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 274
275 main_project_handler(namespace) 275 main_project_handler(namespace)
276 276
277 with open(os.path.join(temp_site_valid_project, 'locales', 'de', 277 with open(os.path.join(temp_site_valid_project, 'locales', 'de',
278 'file.json')) as f: 278 'file.json')) as f:
279 assert json.dumps({'foo': 'bar', 'faz': 'baz'}) == f.read() 279 assert json.dumps({'foo': 'bar', 'faz': 'baz'}) == f.read()
280 280
281 with open(os.path.join(temp_site_valid_project, 'locales', 'de', 'foo', 281 with open(os.path.join(temp_site_valid_project, 'locales', 'de', 'foo',
282 'file-utf8.json'), 'rb') as f: 282 'file-utf8.json'), 'rb') as f:
283 assert json.loads(f.read()) == {'foo': '\u1234'} 283 assert json.loads(f.read()) == {'foo': '\u1234'}
OLDNEW

Powered by Google App Engine
This is Rietveld