[FEAT] add Forgero Git Service (squash) more tests

Previously only Gitea service was being tested under self-hosted migrations. Since Forgejo is also self-hosted and in fact use the same downloader/migrator we can add to this suite another test that will do the same, migrating the same repository under the same local instance but for the Forgejo service (represented by 9)

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/1709
Co-authored-by: zareck <cassiomilczareck@gmail.com>
Co-committed-by: zareck <cassiomilczareck@gmail.com>
This commit is contained in:
zareck 2023-11-01 11:46:17 +00:00 committed by Earl Warren
parent ac4f727f63
commit 40a4b8f1a8

View file

@ -4,6 +4,7 @@
package integration package integration
import ( import (
"context"
"fmt" "fmt"
"net/http" "net/http"
"net/url" "net/url"
@ -18,6 +19,7 @@ import (
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/services/migrations" "code.gitea.io/gitea/services/migrations"
"code.gitea.io/gitea/services/repository"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -49,7 +51,7 @@ func TestMigrateLocalPath(t *testing.T) {
setting.ImportLocalPaths = old setting.ImportLocalPaths = old
} }
func TestMigrateGiteaForm(t *testing.T) { func TestMigrate(t *testing.T) {
onGiteaRun(t, func(t *testing.T, u *url.URL) { onGiteaRun(t, func(t *testing.T, u *url.URL) {
AllowLocalNetworks := setting.Migrations.AllowLocalNetworks AllowLocalNetworks := setting.Migrations.AllowLocalNetworks
setting.Migrations.AllowLocalNetworks = true setting.Migrations.AllowLocalNetworks = true
@ -69,11 +71,17 @@ func TestMigrateGiteaForm(t *testing.T) {
session := loginUser(t, ownerName) session := loginUser(t, ownerName)
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeReadMisc) token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeReadMisc)
for _, s := range []struct {
svc structs.GitServiceType
}{
{svc: structs.GiteaService},
{svc: structs.ForgejoService},
} {
// Step 0: verify the repo is available // Step 0: verify the repo is available
req := NewRequestf(t, "GET", fmt.Sprintf("/%s/%s", ownerName, repoName)) req := NewRequestf(t, "GET", fmt.Sprintf("/%s/%s", ownerName, repoName))
_ = session.MakeRequest(t, req, http.StatusOK) _ = session.MakeRequest(t, req, http.StatusOK)
// Step 1: get the Gitea migration form // Step 1: get the Gitea migration form
req = NewRequestf(t, "GET", "/repo/migrate/?service_type=%d", structs.GiteaService) req = NewRequestf(t, "GET", "/repo/migrate/?service_type=%d", s.svc)
resp := session.MakeRequest(t, req, http.StatusOK) resp := session.MakeRequest(t, req, http.StatusOK)
// Step 2: load the form // Step 2: load the form
htmlDoc := NewHTMLParser(t, resp.Body) htmlDoc := NewHTMLParser(t, resp.Body)
@ -83,7 +91,7 @@ func TestMigrateGiteaForm(t *testing.T) {
migratedRepoName := "otherrepo" migratedRepoName := "otherrepo"
req = NewRequestWithValues(t, "POST", link, map[string]string{ req = NewRequestWithValues(t, "POST", link, map[string]string{
"_csrf": htmlDoc.GetCSRF(), "_csrf": htmlDoc.GetCSRF(),
"service": fmt.Sprintf("%d", structs.GiteaService), "service": fmt.Sprintf("%d", s.svc),
"clone_addr": fmt.Sprintf("%s%s/%s", u, ownerName, repoName), "clone_addr": fmt.Sprintf("%s%s/%s", u, ownerName, repoName),
"auth_token": token, "auth_token": token,
"issues": "on", "issues": "on",
@ -96,6 +104,11 @@ func TestMigrateGiteaForm(t *testing.T) {
loc := resp.Header().Get("Location") loc := resp.Header().Get("Location")
assert.EqualValues(t, fmt.Sprintf("/%s/%s", ownerName, migratedRepoName), loc) assert.EqualValues(t, fmt.Sprintf("/%s/%s", ownerName, migratedRepoName), loc)
// Step 6: check the repo was created // Step 6: check the repo was created
unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: migratedRepoName}) repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: migratedRepoName})
// Step 7: delete the repository, so we can test with other services
err := repository.DeleteRepository(context.Background(), repoOwner, repo, false)
assert.NoError(t, err)
}
}) })
} }