mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 06: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)
 | |
| 	}
 | |
| }
 |