7df8ed4a60
Change SecScanAPI to use a uri creation func instead of test context Pass config provider through validator context Remove app config dependency for validators
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
import json
|
|
import pytest
|
|
|
|
from httmock import urlmatch, HTTMock
|
|
|
|
from config import build_requests_session
|
|
from oauth.oidc import OIDC_WELLKNOWN
|
|
from util.config.validator import ValidatorContext
|
|
from util.config.validators import ConfigValidationException
|
|
from util.config.validators.validate_oidc import OIDCLoginValidator
|
|
|
|
from test.fixtures import *
|
|
|
|
@pytest.mark.parametrize('unvalidated_config', [
|
|
({'SOMETHING_LOGIN_CONFIG': {}}),
|
|
({'SOMETHING_LOGIN_CONFIG': {'OIDC_SERVER': 'foo'}}),
|
|
({'SOMETHING_LOGIN_CONFIG': {'OIDC_SERVER': 'foo', 'CLIENT_ID': 'foobar'}}),
|
|
({'SOMETHING_LOGIN_CONFIG': {'OIDC_SERVER': 'foo', 'CLIENT_SECRET': 'foobar'}}),
|
|
])
|
|
def test_validate_invalid_oidc_login_config(unvalidated_config, app):
|
|
validator = OIDCLoginValidator()
|
|
|
|
with pytest.raises(ConfigValidationException):
|
|
validator.validate(ValidatorContext(unvalidated_config))
|
|
|
|
def test_validate_oidc_login(app):
|
|
url_hit = [False]
|
|
@urlmatch(netloc=r'someserver', path=r'/\.well-known/openid-configuration')
|
|
def handler(_, __):
|
|
url_hit[0] = True
|
|
data = {
|
|
'token_endpoint': 'foobar',
|
|
}
|
|
return {'status_code': 200, 'content': json.dumps(data)}
|
|
|
|
with HTTMock(handler):
|
|
validator = OIDCLoginValidator()
|
|
unvalidated_config = ValidatorContext({
|
|
'SOMETHING_LOGIN_CONFIG': {
|
|
'CLIENT_ID': 'foo',
|
|
'CLIENT_SECRET': 'bar',
|
|
'OIDC_SERVER': 'http://someserver',
|
|
'DEBUGGING': True, # Allows for HTTP.
|
|
},
|
|
})
|
|
unvalidated_config.http_client = build_requests_session()
|
|
|
|
validator.validate(unvalidated_config)
|
|
|
|
assert url_hit[0]
|