Skip to content

[WIP][Improvement][API] Add integration test framework for dolphinscheduler-api#18191

Draft
ruanwenjun wants to merge 1 commit intoapache:devfrom
ruanwenjun:dev_wenjun_optimizeApiTest
Draft

[WIP][Improvement][API] Add integration test framework for dolphinscheduler-api#18191
ruanwenjun wants to merge 1 commit intoapache:devfrom
ruanwenjun:dev_wenjun_optimizeApiTest

Conversation

@ruanwenjun
Copy link
Copy Markdown
Member

Introduce a YAML-driven integration test framework for the API module, covering infrastructure, fixture loading, database cleanup and a first batch of user-centric test suites.

Framework:

  • Design spec under docs/ for the integration test framework.
  • TableEntityRegistry to map YAML documents to JPA entities.
  • YamlDataLoader supporting and markers (MD5 is used as the password marker hash).
  • @LoadYaml annotation + JUnit 5 extension to declaratively seed data.
  • DatabaseCleaner interface with an H2 implementation.
  • TestSessionHelper to build authenticated sessions in ITs.
  • ApiIntegrationTestBase, IntegrationTestConfiguration and a SmokeIT.
  • MySQL profile wired with TestContainers cleaner and initializer.

User IT suites:

  • createUser happy path, business-constraint cases, and permission rejection when a general user calls it.
  • updateUser / deleteUser happy paths.
  • deleteUser rejected when the user still owns projects.
  • queryUserList paging and getCurrentUser.

Also addresses code review feedback on TableEntityRegistry, YamlDataLoader, MySQL profile configuration and the overall framework.

Was this PR generated or assisted by AI?

Purpose of the pull request

Brief change log

Verify this pull request

This pull request is code cleanup without any test coverage.

(or)

This pull request is already covered by existing tests, such as (please describe tests).

(or)

This change added tests and can be verified as follows:

(or)

Pull Request Notice

Pull Request Notice

If your pull request contains incompatible change, you should also add it to docs/docs/en/guide/upgrade/incompatible.md

Introduce a YAML-driven integration test framework for the API module,
covering infrastructure, fixture loading, database cleanup and a first
batch of user-centric test suites.

Framework:
- Design spec under docs/ for the integration test framework.
- TableEntityRegistry to map YAML documents to JPA entities.
- YamlDataLoader supporting <now> and <auto-bcrypt> markers (MD5 is
  used as the password marker hash).
- @LoadYaml annotation + JUnit 5 extension to declaratively seed data.
- DatabaseCleaner interface with an H2 implementation.
- TestSessionHelper to build authenticated sessions in ITs.
- ApiIntegrationTestBase, IntegrationTestConfiguration and a SmokeIT.
- MySQL profile wired with TestContainers cleaner and initializer.

User IT suites:
- createUser happy path, business-constraint cases, and permission
  rejection when a general user calls it.
- updateUser / deleteUser happy paths.
- deleteUser rejected when the user still owns projects.
- queryUserList paging and getCurrentUser.

Also addresses code review feedback on TableEntityRegistry,
YamlDataLoader, MySQL profile configuration and the overall framework.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant