Files
dvc/tests/unit/remote/test_http.py
T
Saugat Pachhai 237e9d4354 fs.download: add callback support (#6610)
* fs.download: add callback support

* fix lint issues

* compat for gdrive, use fs to upload text for tests

* fix typing issues

* skip gdrive test

* Update tests/func/test_fs.py
2021-09-14 15:53:16 +05:45

102 lines
2.3 KiB
Python

import ssl
import pytest
from mock import patch
from dvc.fs.http import HTTPFileSystem
def test_download_fails_on_error_code(tmp_dir, http):
fs = HTTPFileSystem(**http.config)
with pytest.raises(FileNotFoundError):
fs.download_file(http / "missing.txt", tmp_dir / "missing.txt")
def test_public_auth_method(dvc):
config = {
"url": "http://example.com/",
"path_info": "file.html",
"user": "",
"password": "",
}
fs = HTTPFileSystem(**config)
assert "auth" not in fs.fs_args["client_kwargs"]
assert "headers" not in fs.fs_args
def test_basic_auth_method(dvc):
user = "username"
password = "password"
config = {
"url": "http://example.com/",
"path_info": "file.html",
"auth": "basic",
"user": user,
"password": password,
}
fs = HTTPFileSystem(**config)
assert fs.fs_args["client_kwargs"]["auth"].login == user
assert fs.fs_args["client_kwargs"]["auth"].password == password
def test_custom_auth_method(dvc):
header = "Custom-Header"
password = "password"
config = {
"url": "http://example.com/",
"path_info": "file.html",
"auth": "custom",
"custom_auth_header": header,
"password": password,
}
fs = HTTPFileSystem(**config)
headers = fs.fs_args["headers"]
assert header in headers
assert headers[header] == password
def test_ssl_verify_disable(dvc):
config = {
"url": "http://example.com/",
"path_info": "file.html",
"ssl_verify": False,
}
fs = HTTPFileSystem(**config)
assert not fs.fs_args["client_kwargs"]["connector"]._ssl
@patch("ssl.SSLContext.load_verify_locations")
def test_ssl_verify_custom_cert(dvc, mocker):
config = {
"url": "http://example.com/",
"path_info": "file.html",
"ssl_verify": "/path/to/custom/cabundle.pem",
}
fs = HTTPFileSystem(**config)
assert isinstance(
fs.fs_args["client_kwargs"]["connector"]._ssl, ssl.SSLContext
)
def test_http_method(dvc):
config = {
"url": "http://example.com/",
"path_info": "file.html",
}
fs = HTTPFileSystem(**config, method="PUT")
assert fs.upload_method == "PUT"
fs = HTTPFileSystem(**config, method="POST")
assert fs.upload_method == "POST"