mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 08:21:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			116 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2024 The Forgejo Authors. All rights reserved.
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
package integration
 | 
						|
 | 
						|
import (
 | 
						|
	"net/http"
 | 
						|
	"net/url"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/PuerkitoBio/goquery"
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
)
 | 
						|
 | 
						|
func TestRepoMigrationUI(t *testing.T) {
 | 
						|
	onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
 | 
						|
		sessionUser1 := loginUser(t, "user1")
 | 
						|
		// Nothing is tested in plain Git migration form right now
 | 
						|
		testRepoMigrationFormGitHub(t, sessionUser1)
 | 
						|
		testRepoMigrationFormGitea(t, sessionUser1)
 | 
						|
		testRepoMigrationFormGitLab(t, sessionUser1)
 | 
						|
		testRepoMigrationFormGogs(t, sessionUser1)
 | 
						|
		testRepoMigrationFormOneDev(t, sessionUser1)
 | 
						|
		testRepoMigrationFormGitBucket(t, sessionUser1)
 | 
						|
		testRepoMigrationFormCodebase(t, sessionUser1)
 | 
						|
		testRepoMigrationFormForgejo(t, sessionUser1)
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGitHub(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=2"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGitea(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=3"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGitLab(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=4"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	// Note: the checkbox "Merge requests" has name "pull_requests"
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGogs(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=5"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "labels", "milestones"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormOneDev(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=6"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGitBucket(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=7"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormCodebase(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=8"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	// Note: the checkbox "Merge requests" has name "pull_requests"
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormForgejo(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=9"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormItems(t *testing.T, items *goquery.Selection, expectedItems []string) {
 | 
						|
	t.Helper()
 | 
						|
 | 
						|
	// Compare lengths of item lists
 | 
						|
	assert.EqualValues(t, len(expectedItems), items.Length())
 | 
						|
 | 
						|
	// Compare contents of item lists
 | 
						|
	for index, expectedName := range expectedItems {
 | 
						|
		name, exists := items.Eq(index).Attr("name")
 | 
						|
		assert.True(t, exists)
 | 
						|
		assert.EqualValues(t, expectedName, name)
 | 
						|
	}
 | 
						|
}
 |