[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:
parent
ac4f727f63
commit
40a4b8f1a8
1 changed files with 42 additions and 29 deletions
|
@ -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,33 +71,44 @@ 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)
|
||||||
|
|
||||||
// Step 0: verify the repo is available
|
for _, s := range []struct {
|
||||||
req := NewRequestf(t, "GET", fmt.Sprintf("/%s/%s", ownerName, repoName))
|
svc structs.GitServiceType
|
||||||
_ = session.MakeRequest(t, req, http.StatusOK)
|
}{
|
||||||
// Step 1: get the Gitea migration form
|
{svc: structs.GiteaService},
|
||||||
req = NewRequestf(t, "GET", "/repo/migrate/?service_type=%d", structs.GiteaService)
|
{svc: structs.ForgejoService},
|
||||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
} {
|
||||||
// Step 2: load the form
|
// Step 0: verify the repo is available
|
||||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
req := NewRequestf(t, "GET", fmt.Sprintf("/%s/%s", ownerName, repoName))
|
||||||
link, exists := htmlDoc.doc.Find(`form.ui.form[action^="/repo/migrate"]`).Attr("action")
|
_ = session.MakeRequest(t, req, http.StatusOK)
|
||||||
assert.True(t, exists, "The template has changed")
|
// Step 1: get the Gitea migration form
|
||||||
// Step 4: submit the migration to only migrate issues
|
req = NewRequestf(t, "GET", "/repo/migrate/?service_type=%d", s.svc)
|
||||||
migratedRepoName := "otherrepo"
|
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||||
req = NewRequestWithValues(t, "POST", link, map[string]string{
|
// Step 2: load the form
|
||||||
"_csrf": htmlDoc.GetCSRF(),
|
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||||
"service": fmt.Sprintf("%d", structs.GiteaService),
|
link, exists := htmlDoc.doc.Find(`form.ui.form[action^="/repo/migrate"]`).Attr("action")
|
||||||
"clone_addr": fmt.Sprintf("%s%s/%s", u, ownerName, repoName),
|
assert.True(t, exists, "The template has changed")
|
||||||
"auth_token": token,
|
// Step 4: submit the migration to only migrate issues
|
||||||
"issues": "on",
|
migratedRepoName := "otherrepo"
|
||||||
"repo_name": migratedRepoName,
|
req = NewRequestWithValues(t, "POST", link, map[string]string{
|
||||||
"description": "",
|
"_csrf": htmlDoc.GetCSRF(),
|
||||||
"uid": fmt.Sprintf("%d", repoOwner.ID),
|
"service": fmt.Sprintf("%d", s.svc),
|
||||||
})
|
"clone_addr": fmt.Sprintf("%s%s/%s", u, ownerName, repoName),
|
||||||
resp = session.MakeRequest(t, req, http.StatusSeeOther)
|
"auth_token": token,
|
||||||
// Step 5: a redirection displays the migrated repository
|
"issues": "on",
|
||||||
loc := resp.Header().Get("Location")
|
"repo_name": migratedRepoName,
|
||||||
assert.EqualValues(t, fmt.Sprintf("/%s/%s", ownerName, migratedRepoName), loc)
|
"description": "",
|
||||||
// Step 6: check the repo was created
|
"uid": fmt.Sprintf("%d", repoOwner.ID),
|
||||||
unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: migratedRepoName})
|
})
|
||||||
|
resp = session.MakeRequest(t, req, http.StatusSeeOther)
|
||||||
|
// Step 5: a redirection displays the migrated repository
|
||||||
|
loc := resp.Header().Get("Location")
|
||||||
|
assert.EqualValues(t, fmt.Sprintf("/%s/%s", ownerName, migratedRepoName), loc)
|
||||||
|
// Step 6: check the repo was created
|
||||||
|
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)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue