def test_basic_lti11_launch_request(): """ Does a standard launch request work? """ oauth_consumer_key = 'my_consumer_key' oauth_consumer_secret = 'my_shared_secret' launch_url = 'http://jupyterhub/hub/lti/launch' headers = {'Content-Type': 'application/x-www-form-urlencoded'} args = factory_lti11_basic_launch_args( oauth_consumer_key, oauth_consumer_secret, ) validator = LTI11LaunchValidator( {oauth_consumer_key: oauth_consumer_secret}) assert validator.validate_launch_request(launch_url, headers, args)
def test_launch_with_same_oauth_nonce_different_oauth_timestamp(): """ Does the launch request pass with when using a different timestamp with the same nonce? """ oauth_consumer_key = 'my_consumer_key' oauth_consumer_secret = 'my_shared_secret' launch_url = 'http://jupyterhub/hub/lti/launch' headers = {'Content-Type': 'application/x-www-form-urlencoded'} args = factory_lti11_basic_launch_args(oauth_consumer_key, oauth_consumer_secret) validator = LTI11LaunchValidator( {oauth_consumer_key: oauth_consumer_secret}) with pytest.raises(HTTPError): args['oauth_timestamp'] = '0123456789' validator.validate_launch_request(launch_url, headers, args)
def test_unregistered_shared_secret(): """ Does the launch request work with a shared secret that does not match? """ oauth_consumer_key = 'my_consumer_key' oauth_consumer_secret = 'my_shared_secret' launch_url = 'http://jupyterhub/hub/lti/launch' headers = {'Content-Type': 'application/x-www-form-urlencoded'} args = factory_lti11_basic_launch_args( oauth_consumer_key, oauth_consumer_secret, ) validator = LTI11LaunchValidator( {oauth_consumer_key: 'my_other_shared_secret'}) with pytest.raises(HTTPError): validator.validate_launch_request(launch_url, headers, args)
def test_launch_with_missing_oauth_signature_method_key(): """ Does the launch request work with a missing oauth_signature_method key? """ oauth_consumer_key = 'my_consumer_key' oauth_consumer_secret = 'my_shared_secret' launch_url = 'http://jupyterhub/hub/lti/launch' headers = {'Content-Type': 'application/x-www-form-urlencoded'} args = factory_lti11_basic_launch_args(oauth_consumer_key, oauth_consumer_secret) del args['oauth_signature_method'] validator = LTI11LaunchValidator( {oauth_consumer_key: oauth_consumer_secret}) with pytest.raises(HTTPError): validator.validate_launch_request(launch_url, headers, args)
def test_launch_with_fake_oauth_consumer_key_value(): """ Does the launch request work when the consumer_key isn't correct? """ oauth_consumer_key = 'my_consumer_key' oauth_consumer_secret = 'my_shared_secret' launch_url = 'http://jupyterhub/hub/lti/launch' headers = {'Content-Type': 'application/x-www-form-urlencoded'} args = factory_lti11_basic_launch_args( oauth_consumer_key, oauth_consumer_secret, ) validator = LTI11LaunchValidator( {oauth_consumer_key: oauth_consumer_secret}) with pytest.raises(HTTPError): args['oauth_consumer_key'] = [b'fake_consumer_key'][0].decode('utf-8') assert validator.validate_launch_request(launch_url, headers, args)
def test_launch_with_none_or_empty_user_id_value(): """ Does the launch request work with an empty or None user_id value? """ oauth_consumer_key = 'my_consumer_key' oauth_consumer_secret = 'my_shared_secret' launch_url = 'http://jupyterhub/hub/lti/launch' headers = {'Content-Type': 'application/x-www-form-urlencoded'} args = factory_lti11_basic_launch_args( oauth_consumer_key, oauth_consumer_secret, ) validator = LTI11LaunchValidator( {oauth_consumer_key: oauth_consumer_secret}) with pytest.raises(HTTPError): args['user_id'] = None validator.validate_launch_request(launch_url, headers, args) with pytest.raises(HTTPError): args['user_id'] = '' validator.validate_launch_request(launch_url, headers, args)