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

Remove external API calls in TestPassword #30716

Merged
merged 7 commits into from
May 2, 2024
Merged

Conversation

silverwind
Copy link
Member

@silverwind silverwind commented Apr 26, 2024

The test had a dependency on https://api.pwnedpasswords.com which caused many failures on CI recently:

--- FAIL: TestPassword (2.37s)
    pwn_test.go:41: Get "https://api.pwnedpasswords.com/range/e6b6a": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
FAIL
coverage: 82.9% of statements

This mocks the service using gock and tests one positive and one negative case, removing this dependency and removing the need to have a password generator in the test because we control the responses.

Regarding concerns about compatibility, i think it's totally fine to mock this because if that service introduces a breaking change in their API, they better make a /v2/ path or similar.

@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Apr 26, 2024
@pull-request-size pull-request-size bot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Apr 26, 2024
@github-actions github-actions bot added modifies/go Pull requests that update Go code modifies/dependencies labels Apr 26, 2024
@silverwind silverwind changed the title Remove external api call in TestPassword Remove external API calls in TestPassword Apr 26, 2024
@jolheiser
Copy link
Member

jolheiser commented Apr 26, 2024

Rather than introduce a new dep we could just pull out the parse logic and make unit tests for that instead?

@silverwind
Copy link
Member Author

silverwind commented Apr 26, 2024

Rather than introduce a new dep we could just pull out the parse logic and make unit tests for that instead?

  1. It's a test-only dep, does not make it into the binary.
  2. Would that even be a realistic test? Also, with the mock we achieve higher code coverage.

I use such http mocks all the time, I think they are great. They can be used everywhere we call external HTTP services in tests. It'll definitely not be the last time that we will use this dep.

@pull-request-size pull-request-size bot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Apr 26, 2024
* origin/main:
  Replace deprecated `math/rand` functions (go-gitea#30733)
  Make Ctrl+Enter work for issue/comment edit (go-gitea#30720)
  Rename migration package name for 1.22-rc1 (go-gitea#30730)
  Issue card improvements (go-gitea#30687)
  Don't show loading indicators when refreshing the system status (go-gitea#30712)
  Add some tests to clarify the "must-change-password" behavior (go-gitea#30693)
  Prevent allow/reject reviews on merged/closed PRs (go-gitea#30686)
  Update JS dependencies (go-gitea#30713)
  Improve diff stats bar (go-gitea#30669)
  Remove unused parameter for some functions in `services/mirror` (go-gitea#30724)
  Update misspell to 0.5.1 and add `misspellings.csv` (go-gitea#30573)
  Suppress browserslist warning in webpack target (go-gitea#30571)
  [skip ci] Updated translations via Crowdin
  Diff color enhancements, add line number background (go-gitea#30670)
  feat(api): enhance Actions Secrets Management API for repository (go-gitea#30656)
  Fix code search input for different views (go-gitea#30678)
  Fix incorrect object id hash function (go-gitea#30708)
Copy link
Member

@jolheiser jolheiser left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still don't think this test is as useful as a real integration test, but I'll concede that it's better than a flaky test.

@GiteaBot GiteaBot added lgtm/need 1 This PR needs approval from one additional maintainer to be merged. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels May 1, 2024
@GiteaBot GiteaBot added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/need 1 This PR needs approval from one additional maintainer to be merged. labels May 2, 2024
@jolheiser jolheiser added the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label May 2, 2024
@jolheiser jolheiser enabled auto-merge (squash) May 2, 2024 13:41
@silverwind
Copy link
Member Author

If the mocking framework becomes a problem, it can be replaced with the more manual way of https://pkg.go.dev/net/http/httptest but I don't see that currently being necessary.

@jolheiser jolheiser merged commit 9235442 into go-gitea:main May 2, 2024
26 checks passed
@GiteaBot GiteaBot added this to the 1.23.0 milestone May 2, 2024
@GiteaBot GiteaBot removed the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label May 2, 2024
@silverwind silverwind deleted the noext branch May 2, 2024 14:45
zjjhot added a commit to zjjhot/gitea that referenced this pull request May 3, 2024
* giteaofficial/main: (30 commits)
  Improve grep search (go-gitea#30843)
  Don't only list code-enabled repositories when using repository API (go-gitea#30817)
  Fix no edit history after editing issue's title and content (go-gitea#30814)
  Ignore useless error message "broken pipe" (go-gitea#30801)
  Fix JS error on pull request page (go-gitea#30838)
  Fix body margin shifting with modals, fix error on project column edit (go-gitea#30831)
  Improve repo button row layout (go-gitea#30668)
  refactor: merge ListActionTasks func to action.go file (go-gitea#30811)
  Prevent automatic OAuth grants for public clients (go-gitea#30790)
  Catch and handle unallowed file type errors in issue attachment API (go-gitea#30791)
  Fix incorrect message id for releaes email (go-gitea#30825)
  Add hover outline to heatmap squares (go-gitea#30828)
  Remove external API calls in `TestPassword` (go-gitea#30716)
  Upgrade chi-binding (go-gitea#30826)
  Improve context popup rendering (go-gitea#30824)
  Fix activity heat map padding & locale (go-gitea#30823)
  Fix issue card layout (go-gitea#30800)
  Fix branch selector UI (go-gitea#30803)
  Fix rounded border for segment followed by pagination (go-gitea#30809)
  Skip gzip for some well-known compressed file types (go-gitea#30796)
  ...
@go-gitea go-gitea locked as resolved and limited conversation to collaborators Jul 31, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. modifies/dependencies modifies/go Pull requests that update Go code size/L Denotes a PR that changes 100-499 lines, ignoring generated files. type/testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants