Artemis
Artemis copied to clipboard
`Development`: Remove LTI 1.0 services
[!WARNING]
DO NOT DEPLOY CONTAINS DATABASE CHANGES!!!
Checklist
General
- [ ] I tested all changes and their related features with all corresponding user types on a test server.
- [ ] This is a small issue that I tested locally and was confirmed by another developer on a test server.
- [x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
- [x] I chose a title conforming to the naming conventions for pull requests.
Server
- [x] I followed the coding and design guidelines.
- [x] I added multiple integration tests (Spring) related to the features (with a high test coverage).
- [x] I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
- [x] I documented the Java code using JavaDoc style.
Client
- [x] I followed the coding and design guidelines.
- [x] I added multiple screenshots/screencasts of my UI changes.
- [x] I translated all newly inserted strings into English and German.
Motivation and Context
LTI 1.0 and 1.1 is deprecated and 1EdTech ended all support for LTI versions 1.0, 1.1, 1.1.1, 1.1.2, 1.2, and 2.0 on June 30, 2022.
The 'basiclti-util' dependency, integral to our LTI 1.0 implementation, is no longer maintained.
Description
- LTI 1.0 Services are removed.
- lti_key and lti_secret columns are dropped from online course configuration table and it's entity objects are updated accordingly
- lti_outcome_url table is dropped where we store the students launch information which is accessed via LTI 1.0
- LTI 1.0 relevant (lti_key, lti_secret, lti10launch_url) data removed from Course Management --> LTI Configuration page
Steps for Testing
[!WARNING]
DO NOT DEPLOY CONTAINS DATABASE CHANGES!!! Prerequisites:
- Do not deploy yet since it contains database changes, needs approval to be ready for testing!
- 1 Instructor
- 1 Course where online course is enabled
- Log in to Artemis as an instructor
- Navigate to Course Management
- Navigate to an online course (you can use LTI Single Configuration Test)
- Click on "LTI Configuration" link under course details
- Verify you don't see LTI 1.0 tab
- Navigate to Exercises tab under LTI Configuration
- Verify you don't see LTI 1.0 Launch URL
- Click on Edit
- Verfiy you don't see LTI 1.0 related information; LTI Key and LTI Secret
Testserver States
[!NOTE] These badges show the state of the test servers. Green = Currently available, Red = Currently locked
Review Progress
Performance Review
- [ ] I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
- [ ] I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance
Code Review
- [x] Code Review 1
- [ ] Code Review 2
Manual Tests
- [x] Test 1
- [x] Test 2
Test Coverage
Screenshots
LTI Configuration page:
LTI Configuration Exercises tab:
LTI Configuration Edit page:
Summary by CodeRabbit
- Refactor
- Restructured LTI integration to prioritize LTI 1.3 over LTI 1.0, updating method names and parameters accordingly.
- Streamlined LTI configuration display in the course management UI for improved usability.
- Bug Fixes
- Improved the organization and visibility of LTI configuration settings in the UI for better user experience.
- Chores
- Conducted codebase cleanup by removing redundant code elements like unused imports, methods, and fields.
- Adjusted tests to align with modifications in LTI configuration and online course configurations.
Walkthrough
The updates focus on transitioning from LTI 1.0 to LTI 1.3 across the Artemis platform. This involves renaming methods and parameters to reflect the shift, removing outdated LTI 1.0 elements, and simplifying LTI configuration management. The changes streamline LTI integration, emphasizing LTI 1.3's features and removing legacy LTI 1.0 support, including in tests, service classes, and configuration components. The overall aim is to enhance clarity, reduce complexity, and ensure up-to-date LTI compliance.
Changes
| File Path | Change Summary |
|---|---|
.../repository/ExerciseRepository.java |
Renamed method from findByCourseIdWhereLtiOutcomeUrlExists to findByCourseIdWhereLtiResourceLaunchExists; updated parameter. |
.../service/ExerciseService.java.../web/rest/open/PublicLtiResource.java |
Replaced references from LtiOutcomeUrl to LtiResourceLaunch; removed unused elements related to LTI 1.0. |
.../service/connectors/lti/LtiNewResultService.java.../util/AbstractArtemisIntegrationTest.java |
Removed lti10Service and related setups. |
.../app/course/manage/course-lti-configuration/... |
Simplified LTI configuration UI and logic, removing LTI 1.0 elements and methods. |
.../app/entities/online-course-configuration.model.ts.../service/OnlineCourseConfigurationService.java |
Removed ltiKey and ltiSecret properties and related functionality. |
.../lti/lti13-exercise-launch.component.ts |
Modified method to adjust redirection logic. |
.../test/... (Various Test Files) |
Updated tests to reflect removal of LTI 1.0 support and simplified LTI configuration. Removed unused imports and setups. |
build.gradle |
Removed exclusion of jackson-mapper-asl module from dependency. |
The PR also includes updates to the testing and documentation to reflect these changes. It emphasizes adherence to coding, design, and language guidelines, including the removal of deprecated LTI 1.0 references and the update of integration tests.
AI-generated Summary of Generated Summaries
This pull request involves a comprehensive removal of LTI 1.0 and 1.1 support from the Artemis platform, aligning with the deprecation of these versions by 1EdTech. Significant changes include the elimination of LTI 1.0 services, related code, and database structures such as the lti_key, lti_secret, and lti_outcome_url table. The online course configuration entity and related Java classes have been updated to remove references to these deprecated LTI versions. Additionally, the UI components and configurations related to LTI 1.0 within the Course Management and LTI Configuration pages have been adjusted or removed, streamlining the interface and removing obsolete options.
The PR also entails updates to the testing framework, removing tests and setups related to LTI 1.0 functionalities, and updating documentation to align with these changes. The removal of the basiclti-util dependency from the build configuration is part of the cleanup process, eliminating the reliance on unmaintained libraries.
In summary, this PR makes significant strides in modernizing the Artemis platform by phasing out deprecated LTI standards, enhancing security, and ensuring compliance with current LTI versions supported by 1EdTech. It involves both backend and frontend modifications, including database schema changes, codebase updates, and UI adjustments, to fully remove LTI 1.0 and 1.1 support.
-->
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Tips
Chat
There are 3 ways to chat with CodeRabbit:
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
I pushed a fix in commit <commit_id>.Generate unit-tests for this file.
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitaiin a new review comment at the desired location with your query. Examples:@coderabbitai generate unit tests for this file.@coderabbitai modularize this function.
- PR comments: Tag
@coderabbitaiin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:@coderabbitai generate interesting stats about this repository from git and render them as a table.@coderabbitai show all the console.log statements in this repository.@coderabbitai read src/utils.ts and generate unit tests.@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.
CodeRabbit Commands (invoked as PR comments)
@coderabbitai pauseto pause the reviews on a PR.@coderabbitai resumeto resume the paused reviews.@coderabbitai reviewto trigger a review. This is useful when automatic reviews are disabled for the repository.@coderabbitai resolveresolve all the CodeRabbit review comments.@coderabbitai helpto get help.
Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
CodeRabbit Configration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - The JSON schema for the configuration file is available here.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation:
# yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json
CodeRabbit Discord Community
Join our Discord Community to get help, request features, and share feedback.