mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
* remote.http: support _upload() via HTTP POST - uploaded files are sent as chunked encoding POST data Fixes #3247 * remote.http: add support for HTTP basic and digest auth - username, password, ask_password options work the same way as for ssh remotes - basic_auth (bool) and digest_auth (bool) options added for http(s) remotes - digest_auth takes precedence over basic_auth if both are enabled * remote.http: auth_method() unit tests * tests: Add functional tests for HTTP remotes - HTTP remotes now tested locally using a SimpleHTTPServer instance that allows reading/writing to a temp directory * tests: fix http tests on py3.5, 3.6 * remote.http: add custom auth method * s/custom_header/custom_auth_header/ * Apply suggestions from code review Co-Authored-By: Saugat Pachhai <[email protected]> Co-Authored-By: Ruslan Kuprieiev <[email protected]> Co-authored-by: Saugat Pachhai <[email protected]> Co-authored-by: Ruslan Kuprieiev <[email protected]>
67 lines
1.5 KiB
Python
67 lines
1.5 KiB
Python
import os
|
|
|
|
import mockssh
|
|
import pytest
|
|
|
|
from dvc.remote.ssh.connection import SSHConnection
|
|
from tests.utils.httpd import PushRequestHandler, StaticFileServer
|
|
from .dir_helpers import * # noqa
|
|
|
|
|
|
# Prevent updater and analytics from running their processes
|
|
os.environ["DVC_TEST"] = "true"
|
|
# Ensure progress output even when not outputting to raw sys.stderr console
|
|
os.environ["DVC_IGNORE_ISATTY"] = "true"
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def reset_loglevel(request, caplog):
|
|
"""
|
|
Use it to ensure log level at the start of each test
|
|
regardless of dvc.logger.setup(), Repo configs or whatever.
|
|
"""
|
|
level = request.config.getoption("--log-level")
|
|
if level:
|
|
with caplog.at_level(level.upper(), logger="dvc"):
|
|
yield
|
|
else:
|
|
yield
|
|
|
|
|
|
here = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
user = "user"
|
|
key_path = os.path.join(here, "{0}.key".format(user))
|
|
|
|
|
|
@pytest.fixture
|
|
def ssh_server():
|
|
users = {user: key_path}
|
|
with mockssh.Server(users) as s:
|
|
s.test_creds = {
|
|
"host": s.host,
|
|
"port": s.port,
|
|
"username": user,
|
|
"key_filename": key_path,
|
|
}
|
|
yield s
|
|
|
|
|
|
@pytest.fixture
|
|
def ssh(ssh_server):
|
|
yield SSHConnection(**ssh_server.test_creds)
|
|
|
|
|
|
@pytest.fixture(scope="session", autouse=True)
|
|
def _close_pools():
|
|
from dvc.remote.pool import close_pools
|
|
|
|
yield
|
|
close_pools()
|
|
|
|
|
|
@pytest.fixture
|
|
def http_server(tmp_dir):
|
|
with StaticFileServer(handler_class=PushRequestHandler) as httpd:
|
|
yield httpd
|