mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-09-13 14:27:17 +00:00
chore: add migration credentials integration test
This commit is contained in:
parent
1c66c4e11a
commit
9fb75a141d
1 changed files with 95 additions and 0 deletions
95
tests/integration/repo_migrate_credentials_test.go
Normal file
95
tests/integration/repo_migrate_credentials_test.go
Normal file
|
@ -0,0 +1,95 @@
|
|||
// Copyright 2025 The Forgejo Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"testing"
|
||||
|
||||
"forgejo.org/models/admin"
|
||||
repo_model "forgejo.org/models/repo"
|
||||
"forgejo.org/models/unittest"
|
||||
user_model "forgejo.org/models/user"
|
||||
"forgejo.org/modules/setting"
|
||||
"forgejo.org/modules/structs"
|
||||
"forgejo.org/modules/test"
|
||||
"forgejo.org/services/migrations"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestRepoMigrateWithCredentials(t *testing.T) {
|
||||
onGiteaRun(t, func(t *testing.T, u *url.URL) {
|
||||
defer test.MockVariableValue(&setting.Migrations.AllowLocalNetworks, true)()
|
||||
require.NoError(t, migrations.Init())
|
||||
|
||||
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||
session := loginUser(t, "user2")
|
||||
|
||||
t.Run("Incorrect credentials", func(t *testing.T) {
|
||||
session.MakeRequest(t, NewRequestWithValues(t, "POST", "/repo/migrate", map[string]string{
|
||||
"_csrf": GetCSRF(t, session, "/repo/migrate?service_type=1"),
|
||||
"clone_addr": u.JoinPath("/user2/repo2").String(),
|
||||
"auth_username": "user2",
|
||||
"auth_password": userPassword + "1",
|
||||
"uid": "2",
|
||||
"repo_name": "migrating-with-credentials",
|
||||
"service": "1",
|
||||
}), http.StatusSeeOther)
|
||||
|
||||
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: "migrating-with-credentials"}, "is_empty = true")
|
||||
unittest.AssertExistsAndLoadBean(t, &admin.Task{
|
||||
RepoID: repo.ID,
|
||||
Type: structs.TaskTypeMigrateRepo,
|
||||
Status: structs.TaskStatusFailed,
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("Normal", func(t *testing.T) {
|
||||
session.MakeRequest(t, NewRequestWithValues(t, "POST", "/repo/migrate", map[string]string{
|
||||
"_csrf": GetCSRF(t, session, "/repo/migrate?service_type=1"),
|
||||
"clone_addr": u.JoinPath("/user2/repo2").String(),
|
||||
"auth_username": "user2",
|
||||
"auth_password": userPassword,
|
||||
"uid": "2",
|
||||
"repo_name": "migrating-with-credentials-2",
|
||||
"service": "1",
|
||||
}), http.StatusSeeOther)
|
||||
|
||||
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: "migrating-with-credentials-2"}, "is_empty = false")
|
||||
unittest.AssertExistsAndLoadBean(t, &admin.Task{
|
||||
RepoID: repo.ID,
|
||||
Type: structs.TaskTypeMigrateRepo,
|
||||
Status: structs.TaskStatusFinished,
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("Dangerous credential", func(t *testing.T) {
|
||||
// Temporaily change the password
|
||||
dangerousPassword := "some`echo foo`thing"
|
||||
require.NoError(t, user2.SetPassword(dangerousPassword))
|
||||
require.NoError(t, user_model.UpdateUserCols(t.Context(), user2, "passwd", "passwd_hash_algo", "salt"))
|
||||
|
||||
session = loginUserWithPassword(t, "user2", dangerousPassword)
|
||||
|
||||
session.MakeRequest(t, NewRequestWithValues(t, "POST", "/repo/migrate", map[string]string{
|
||||
"_csrf": GetCSRF(t, session, "/repo/migrate?service_type=1"),
|
||||
"clone_addr": u.JoinPath("/user2/repo2").String(),
|
||||
"auth_username": "user2",
|
||||
"auth_password": dangerousPassword,
|
||||
"uid": "2",
|
||||
"repo_name": "migrating-with-credentials-3",
|
||||
"service": "1",
|
||||
}), http.StatusSeeOther)
|
||||
|
||||
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: "migrating-with-credentials-3"}, "is_empty = false")
|
||||
unittest.AssertExistsAndLoadBean(t, &admin.Task{
|
||||
RepoID: repo.ID,
|
||||
Type: structs.TaskTypeMigrateRepo,
|
||||
Status: structs.TaskStatusFinished,
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue