You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
forgejo/integrations
zeripath 01c10a951b
Fix ssh deploy and user key constraints (#1357) (#5939)
1. A key can either be an ssh user key or a deploy key. It cannot be both.
2. If a key is a user key - it can only be associated with one user.
3. If a key is a deploy key - it can be used in multiple repositories and the permissions it has on those repositories can be different.
4. If a repository is deleted, its deploy keys must be deleted too.

We currently don't enforce any of this and multiple repositories access with different permissions doesn't work at all. This PR enforces the following constraints:

- [x] You should not be able to add the same user key as another user
- [x] You should not be able to add a ssh user key which is being used as a deploy key
- [x] You should not be able to add a ssh deploy key which is being used as a user key
- [x] If you add an ssh deploy key to another repository you should be able to use it in different modes without losing the ability to use it in the other mode.
- [x] If you delete a repository you must delete all its deploy keys.

Fix #1357
5 years ago
..
gitea-repositories-meta Fix redirect with non-ascii branch names (#4764) (#4810) 6 years ago
migration-test Add migration test (#5773) 5 years ago
README.md CN translation of README (#5050) 6 years ago
README_ZH.md CN translation of README (#5050) 6 years ago
api_admin_test.go Fix #5226 by adding CSRF checking to api reqToken and add CSRF to the POST header for deadline (#5250) 6 years ago
api_branch_test.go Enforce token on api routes [fixed critical security issue #4357] (#4840) 6 years ago
api_comment_test.go Enforce token on api routes [fixed critical security issue #4357] (#4840) 6 years ago
api_fork_test.go Fix repo API bug (#2133) 7 years ago
api_gpg_keys_test.go Enforce token on api routes [fixed critical security issue #4357] (#4840) 6 years ago
api_helper_for_declarative_test.go Fix ssh deploy and user key constraints (#1357) (#5939) 5 years ago
api_issue_label_test.go Enforce token on api routes [fixed critical security issue #4357] (#4840) 6 years ago
api_issue_test.go feat(repo): support search repository by topic name (#4505) 6 years ago
api_keys_test.go Keys API changes (#4960) 6 years ago
api_org_test.go add api for user to create org (#5268) 6 years ago
api_pull_test.go Enforce token on api routes [fixed critical security issue #4357] (#4840) 6 years ago
api_releases_test.go Fix new release creation API to allow empty target (#5870) 5 years ago
api_repo_git_commits_test.go Add single commit API support (#5843) 5 years ago
api_repo_git_ref_test.go Implement git refs API for listing references (branches, tags and other) (#5354) 6 years ago
api_repo_lfs_locks_test.go Fix SSH auth lfs locks (#3152) 7 years ago
api_repo_raw_test.go Enforce token on api routes [fixed critical security issue #4357] (#4840) 6 years ago
api_repo_test.go Restrict permission check on repositories and fix some problems (#5314) 6 years ago
api_team_test.go Enforce token on api routes [fixed critical security issue #4357] (#4840) 6 years ago
api_token_test.go Add ability to delete a token (#4235) 6 years ago
api_user_heatmap_test.go User action heatmap (#5131) 6 years ago
api_user_orgs_test.go Ensure valid git author names passed in signatures (#5774) 6 years ago
auth_ldap_test.go Fix issue where ecdsa and other key types are not synced from LDAP (#5092) (#5094) 6 years ago
benchmarks_test.go Fix type mismatch of format string (#5574) 6 years ago
branches_test.go Use httptest in integration tests (#3080) 7 years ago
change_default_branch_test.go Less verbose integration tests (#2123) 7 years ago
delete_user_test.go Refactor User Settings (#3900) 6 years ago
download_test.go Add raw blob endpoint to get objects by SHA ID (#5334) 6 years ago
editor_test.go Improve English grammar and consistency. (#3614) 6 years ago
empty_repo_test.go Refactor repo.isBare to repo.isEmpty #5629 (#5714) 6 years ago
explore_repos_test.go fix template error on explore repos (#2319) 7 years ago
git_helper_for_declarative_test.go Fix ssh deploy and user key constraints (#1357) (#5939) 5 years ago
git_test.go Fix ssh deploy and user key constraints (#1357) (#5939) 5 years ago
html_helper.go Use httptest in integration tests (#3080) 7 years ago
integration_test.go fix lfs version check warning log when using ssh protocol (#5501) 6 years ago
internal_test.go Use httptest in integration tests (#3080) 7 years ago
issue_test.go Unit tests for routers/repo/issue_label (#3198) 7 years ago
lfs_getobject_test.go Pooled and buffered gzip implementation (#5722) 6 years ago
links_test.go Refactor User Settings (#3900) 6 years ago
mssql.ini.tmpl Make log mailer for testing (#5893) 5 years ago
mysql.ini.tmpl Make log mailer for testing (#5893) 5 years ago
nonascii_branches_test.go Fix redirect with non-ascii branch names (#4764) (#4810) 6 years ago
pgsql.ini.tmpl Make log mailer for testing (#5893) 5 years ago
pull_compare_test.go Responsive view (#2750) 7 years ago
pull_create_test.go Fix escaping changed title in comments (#3530) 6 years ago
pull_merge_test.go Add rebase with merge commit merge style (#3844) (#4052) 6 years ago
release_test.go Unit tests for routers/repo/issue_label (#3198) 7 years ago
repo_activity_test.go Fix escaping changed title in comments (#3530) 6 years ago
repo_branch_test.go Add more bench (#3161) 7 years ago
repo_commits_test.go Enforce token on api routes [fixed critical security issue #4357] (#4840) 6 years ago
repo_fork_test.go Use httptest in integration tests (#3080) 7 years ago
repo_migrate_test.go Add more bench (#3161) 7 years ago
repo_search_test.go Code/repo search (#2582) 7 years ago
repo_test.go Revert #3711 overwrite of only show "No Description" to repo admins #2167 (#5836) 6 years ago
setting_test.go fix not respecting landing page setting (#4209) 6 years ago
signin_test.go Add integration tests for signin (#2363) 7 years ago
signout_test.go Add integration test for logging out (#2892) 7 years ago
signup_test.go Less verbose integration tests (#2123) 7 years ago
sqlite.ini Make log mailer for testing (#5893) 5 years ago
ssh_key_test.go Fix ssh deploy and user key constraints (#1357) (#5939) 5 years ago
timetracking_test.go Unit tests for routers/repo/issue_label (#3198) 7 years ago
user_test.go Ensure valid git author names passed in signatures (#5774) 6 years ago
version_test.go Update hard-coded version to 1.3.0-dev (#2390) 7 years ago
xss_test.go Added user language setting (#3875) 6 years ago

README.md

Integrations tests

Integration tests can be run with make commands for the appropriate backends, namely:

make test-mysql
make test-pgsql
make test-sqlite

Make sure to perform a clean build before running tests:

make clean build

Run all tests via local drone

drone exec --local --build-event "pull_request"

Run sqlite integrations tests

Start tests

make test-sqlite

Run mysql integrations tests

Setup a mysql database inside docker

docker run -e "MYSQL_DATABASE=test" -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" --rm --name mysql mysql:5.7 #(just ctrl-c to stop db and clean the container) 

Start tests based on the database container

TEST_MYSQL_HOST="$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql):3306" TEST_MYSQL_DBNAME=test TEST_MYSQL_USERNAME=root TEST_MYSQL_PASSWORD='' make test-mysql

Run pgsql integrations tests

Setup a pgsql database inside docker

docker run -e "POSTGRES_DB=test" --rm --name pgsql postgres:9.5 #(just ctrl-c to stop db and clean the container) 

Start tests based on the database container

TEST_PGSQL_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' pgsql) TEST_PGSQL_DBNAME=test TEST_PGSQL_USERNAME=postgres TEST_PGSQL_PASSWORD=postgres make test-pgsql

Running individual tests

Example command to run GPG test with sqlite backend:

go test -c code.gitea.io/gitea/integrations \
  -o integrations.sqlite.test -tags 'sqlite' &&
  GITEA_ROOT="$GOPATH/src/code.gitea.io/gitea" \
  GITEA_CONF=integrations/sqlite.ini ./integrations.sqlite.test \
  -test.v -test.run GPG