mirror of
https://github.com/clearml/clearml-agent
synced 2025-01-31 17:16:51 +00:00
76 lines
2.9 KiB
Python
76 lines
2.9 KiB
Python
import pytest
|
|
|
|
from trains_agent.helper.repo import Git
|
|
|
|
NO_CHANGE = object()
|
|
|
|
|
|
def param(url, expected, user=False, password=False):
|
|
"""
|
|
Helper function for creating parametrization arguments.
|
|
:param url: input url
|
|
:param expected: expected output URL or NO_CHANGE if the same as input URL
|
|
:param user: Add `agent.git_user=USER` to config
|
|
:param password: Add `agent.git_password=PASSWORD` to config
|
|
"""
|
|
expected_repr = "NO_CHANGE" if expected is NO_CHANGE else None
|
|
user = "USER" if user else None
|
|
password = "PASSWORD" if password else None
|
|
return pytest.param(
|
|
url,
|
|
expected,
|
|
user,
|
|
password,
|
|
id="-".join(filter(None, (url, user, password, expected_repr))),
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"url,expected,user,password",
|
|
[
|
|
param("https://bitbucket.org/company/repo", NO_CHANGE),
|
|
param("https://bitbucket.org/company/repo", NO_CHANGE, user=True),
|
|
param("https://bitbucket.org/company/repo", NO_CHANGE, password=True),
|
|
param(
|
|
"https://bitbucket.org/company/repo", NO_CHANGE, user=True, password=True
|
|
),
|
|
param("https://user@bitbucket.org/company/repo", NO_CHANGE),
|
|
param("https://user@bitbucket.org/company/repo", NO_CHANGE, user=True),
|
|
param("https://user@bitbucket.org/company/repo", NO_CHANGE, password=True),
|
|
param(
|
|
"https://user@bitbucket.org/company/repo",
|
|
"https://USER:PASSWORD@bitbucket.org/company/repo",
|
|
user=True,
|
|
password=True,
|
|
),
|
|
param("https://user:password@bitbucket.org/company/repo", NO_CHANGE),
|
|
param("https://user:password@bitbucket.org/company/repo", NO_CHANGE, user=True),
|
|
param(
|
|
"https://user:password@bitbucket.org/company/repo", NO_CHANGE, password=True
|
|
),
|
|
param(
|
|
"https://user:password@bitbucket.org/company/repo",
|
|
NO_CHANGE,
|
|
user=True,
|
|
password=True,
|
|
),
|
|
param("ssh://git@bitbucket.org/company/repo", NO_CHANGE),
|
|
param("ssh://git@bitbucket.org/company/repo", NO_CHANGE, user=True),
|
|
param("ssh://git@bitbucket.org/company/repo", NO_CHANGE, password=True),
|
|
param(
|
|
"ssh://git@bitbucket.org/company/repo", NO_CHANGE, user=True, password=True
|
|
),
|
|
param("git@bitbucket.org:company/repo.git", NO_CHANGE),
|
|
param("git@bitbucket.org:company/repo.git", NO_CHANGE, user=True),
|
|
param("git@bitbucket.org:company/repo.git", NO_CHANGE, password=True),
|
|
param(
|
|
"git@bitbucket.org:company/repo.git", NO_CHANGE, user=True, password=True
|
|
),
|
|
],
|
|
)
|
|
def test(url, user, password, expected):
|
|
config = {"agent": {"git_user": user, "git_pass": password}}
|
|
result = Git.add_auth(config, url)
|
|
expected = result if expected is NO_CHANGE else expected
|
|
assert result == expected
|