1
0
mirror of https://github.com/quay/quay.git synced 2026-01-27 18:42:52 +03:00
Files
quay/util/config/validators/test/test_validate_github.py
2019-12-02 12:23:08 -05:00

81 lines
2.5 KiB
Python

import pytest
from httmock import urlmatch, HTTMock
from config import build_requests_session
from util.config.validator import ValidatorContext
from util.config.validators import ConfigValidationException
from util.config.validators.validate_github import GitHubLoginValidator, GitHubTriggerValidator
from test.fixtures import *
@pytest.fixture(params=[GitHubLoginValidator, GitHubTriggerValidator])
def github_validator(request):
return request.param
@pytest.mark.parametrize(
"github_config",
[
({}),
({"GITHUB_ENDPOINT": "foo"}),
({"GITHUB_ENDPOINT": "http://github.com"}),
({"GITHUB_ENDPOINT": "http://github.com", "CLIENT_ID": "foo"}),
({"GITHUB_ENDPOINT": "http://github.com", "CLIENT_SECRET": "foo"}),
(
{
"GITHUB_ENDPOINT": "http://github.com",
"CLIENT_ID": "foo",
"CLIENT_SECRET": "foo",
"ORG_RESTRICT": True,
}
),
(
{
"GITHUB_ENDPOINT": "http://github.com",
"CLIENT_ID": "foo",
"CLIENT_SECRET": "foo",
"ORG_RESTRICT": True,
"ALLOWED_ORGANIZATIONS": [],
}
),
],
)
def test_validate_invalid_github_config(github_config, github_validator, app):
with pytest.raises(ConfigValidationException):
unvalidated_config = {}
unvalidated_config[github_validator.config_key] = github_config
github_validator.validate(ValidatorContext(unvalidated_config))
def test_validate_github(github_validator, app):
url_hit = [False, False]
@urlmatch(netloc=r"somehost")
def handler(url, request):
url_hit[0] = True
return {"status_code": 200, "content": "", "headers": {"X-GitHub-Request-Id": "foo"}}
@urlmatch(netloc=r"somehost", path=r"/api/v3/applications/foo/tokens/foo")
def app_handler(url, request):
url_hit[1] = True
return {"status_code": 404, "content": "", "headers": {"X-GitHub-Request-Id": "foo"}}
with HTTMock(app_handler, handler):
unvalidated_config = ValidatorContext(
{
github_validator.config_key: {
"GITHUB_ENDPOINT": "http://somehost",
"CLIENT_ID": "foo",
"CLIENT_SECRET": "bar",
},
}
)
unvalidated_config.http_client = build_requests_session()
github_validator.validate(unvalidated_config)
assert url_hit[0]
assert url_hit[1]