Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve testing by starting up an LTI 1.3 endpoint in the CI system #117

Open
consideRatio opened this issue Nov 10, 2022 · 3 comments · May be fixed by #130
Open

Improve testing by starting up an LTI 1.3 endpoint in the CI system #117

consideRatio opened this issue Nov 10, 2022 · 3 comments · May be fixed by #130

Comments

@consideRatio
Copy link
Member

Extracting some discussion regarding this code:

    endpoint = Unicode(
        # FIXME: Default value set temporarily to ensure we got some
        #        LTI13_ENDPOINT that can provide a response for tests.
        #
        os.getenv("LTI13_ENDPOINT", "https://canvas.instructure.com/api/lti/security/jwks"),

Is there an open-source LTI implementation that can be run with e.g. Docker to test against a real server?

[...] we could set up the IMS Global LTI 1.3 reference implementation to run tests against the "Platform" (LMS). Other options include spinning up a pre configured third party LMS that is LTI 1.3 compatible, such as Canvas or Moodle and run the integration tests with those solutions.

LTI 1.3 is an extension of OIDC / OAuth 2.0. Section 4.2 from this IMS Global article provides a good summary and a reference to the LTI 1.3 security framework which, in turn, references the RFC 7517 (JSON Web Key) standard.

@kathoef
Copy link

kathoef commented Feb 24, 2023

There is https://saltire.lti.app/, which provides an LTI platform and LTI tool endpoint for testing LTI setups on both ends. Yesterday, I have suggested colleagues of mine to use it to configure the "external tool" in their Moodle instance that will then hopefully be able to talk with our JupyterHub LTI endpoint.

It seems, the website above is build from the code available in this Github repository, which might be easily containerizable and then be used for proper testing? (But I do not know.)

/cc @martinclaus

@martinclaus
Copy link
Collaborator

@kathoef Thanks for your suggestion. Unfortunately, the linked repository contains "only" a PHP library to build LTI conformant tools. It is not the system that serves https://saltire.lti.app. While this page is incredibly useful for manual testing, it requires the Jupyterhub to be publicly available and properly secured. As far as I know, there is also no API which makes it hard to use it in a CI context.

I am currently tying to build a local dev env based on the TAO LTI 1.3 devKit. It is the only tool I found that can be used locally and it provides an API to be used for automated testing. (Should have opened a draft PR 😅 )

My setup is almost functional, but I am struggling with docker DNS issues. @kathoef Maybe you can help me out here?

@martinclaus martinclaus linked a pull request Feb 24, 2023 that will close this issue
@martinclaus
Copy link
Collaborator

My setup is almost functional, but I am struggling with docker DNS issues.

That is solved.

@martinclaus martinclaus linked a pull request Mar 30, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants