forked from extern/httpie-cli
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
import pytest
|
|
|
|
from httpie.compat import is_windows
|
|
from httpie.config import Config
|
|
from utils import HTTP_OK, MockEnvironment, http
|
|
|
|
|
|
def test_default_options(httpbin):
|
|
env = MockEnvironment()
|
|
env.config['default_options'] = ['--form']
|
|
env.config.save()
|
|
r = http(httpbin.url + '/post', 'foo=bar', env=env)
|
|
assert r.json['form'] == {
|
|
"foo": "bar"
|
|
}
|
|
|
|
|
|
def test_config_file_not_valid(httpbin):
|
|
env = MockEnvironment()
|
|
env.create_temp_config_dir()
|
|
with (env.config_dir / Config.FILENAME).open('w') as f:
|
|
f.write('{invalid json}')
|
|
r = http(httpbin + '/get', env=env)
|
|
assert HTTP_OK in r
|
|
assert 'http: warning' in r.stderr
|
|
assert 'invalid config file' in r.stderr
|
|
|
|
|
|
@pytest.mark.skipif(is_windows, reason='cannot chmod 000 on Windows')
|
|
def test_config_file_inaccessible(httpbin):
|
|
env = MockEnvironment()
|
|
env.create_temp_config_dir()
|
|
config_path = env.config_dir / Config.FILENAME
|
|
assert not config_path.exists()
|
|
config_path.touch(0o000)
|
|
assert config_path.exists()
|
|
r = http(httpbin + '/get', env=env)
|
|
assert HTTP_OK in r
|
|
assert 'http: warning' in r.stderr
|
|
assert 'cannot read config file' in r.stderr
|
|
|
|
|
|
def test_default_options_overwrite(httpbin):
|
|
env = MockEnvironment()
|
|
env.config['default_options'] = ['--form']
|
|
env.config.save()
|
|
r = http('--json', httpbin.url + '/post', 'foo=bar', env=env)
|
|
assert r.json['json'] == {
|
|
"foo": "bar"
|
|
}
|