From 3d7d750a999b72d422000154a0b1f2801614521e Mon Sep 17 00:00:00 2001
From: KN4CK3R <KN4CK3R@users.noreply.github.com>
Date: Wed, 12 May 2021 06:13:42 +0200
Subject: [PATCH] Fix individual tests (addition to #15802) (#15818)

* Decouple TestAction_GetRepoLink and TestSizedAvatarLink.

* Load database for TestCheckGPGUserEmail.

* Load database for TestMakeIDsFromAPIAssigneesToAdd.

* Load database for TestGetUserIDsByNames and TestGetMaileableUsersByIDs.

* Load database for TestUser_ToUser.

* Load database for TestRepository_EditWikiPage.

* Include AppSubURL in test.

* Prevent panic with empty slice.

Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
---
 models/avatar_test.go          |  4 +++-
 models/gpg_key_test.go         | 23 +++++++++++++++++------
 models/issue_assignees_test.go |  5 +++++
 models/user_test.go            |  4 ++++
 modules/convert/user_test.go   |  2 ++
 services/wiki/wiki_test.go     |  2 ++
 6 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/models/avatar_test.go b/models/avatar_test.go
index bf99897d8..09f1a8066 100644
--- a/models/avatar_test.go
+++ b/models/avatar_test.go
@@ -40,8 +40,10 @@ func TestHashEmail(t *testing.T) {
 }
 
 func TestSizedAvatarLink(t *testing.T) {
+	setting.AppSubURL = "/testsuburl"
+
 	disableGravatar()
-	assert.Equal(t, "/suburl/assets/img/avatar_default.png",
+	assert.Equal(t, "/testsuburl/assets/img/avatar_default.png",
 		SizedAvatarLink("gitea@example.com", 100))
 
 	enableGravatar(t)
diff --git a/models/gpg_key_test.go b/models/gpg_key_test.go
index c9e099093..f04eb8ead 100644
--- a/models/gpg_key_test.go
+++ b/models/gpg_key_test.go
@@ -103,6 +103,9 @@ MkM/fdpyc2hY7Dl/+qFmN5MG5yGmMpQcX+RNNR222ibNC1D3wg==
 =i9b7
 -----END PGP PUBLIC KEY BLOCK-----`
 	keys, err := checkArmoredGPGKeyString(testGPGArmor)
+	if !assert.NotEmpty(t, keys) {
+		return
+	}
 	ekey := keys[0]
 	assert.NoError(t, err, "Could not parse a valid GPG armored key", ekey)
 
@@ -189,6 +192,10 @@ Unknown GPG key with good email
 }
 
 func TestCheckGPGUserEmail(t *testing.T) {
+	assert.NoError(t, PrepareTestDatabase())
+
+	_ = AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
+
 	testEmailWithUpperCaseLetters := `-----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: GnuPG v1
 
@@ -222,9 +229,11 @@ Q0KHb+QcycSgbDx0ZAvdIacuKvBBcbxrsmFUI4LR+oIup0G9gUc0roPvr014jYQL
 
 	keys, err := AddGPGKey(1, testEmailWithUpperCaseLetters)
 	assert.NoError(t, err)
-	key := keys[0]
-	if assert.Len(t, key.Emails, 1) {
-		assert.Equal(t, "user1@example.com", key.Emails[0].Email)
+	if assert.NotEmpty(t, keys) {
+		key := keys[0]
+		if assert.Len(t, key.Emails, 1) {
+			assert.Equal(t, "user1@example.com", key.Emails[0].Email)
+		}
 	}
 }
 
@@ -374,7 +383,9 @@ epiDVQ==
 `
 	keys, err := checkArmoredGPGKeyString(testIssue6599)
 	assert.NoError(t, err)
-	ekey := keys[0]
-	expire := getExpiryTime(ekey)
-	assert.Equal(t, time.Unix(1586105389, 0), expire)
+	if assert.NotEmpty(t, keys) {
+		ekey := keys[0]
+		expire := getExpiryTime(ekey)
+		assert.Equal(t, time.Unix(1586105389, 0), expire)
+	}
 }
diff --git a/models/issue_assignees_test.go b/models/issue_assignees_test.go
index 79257013f..e0359b0b9 100644
--- a/models/issue_assignees_test.go
+++ b/models/issue_assignees_test.go
@@ -61,6 +61,11 @@ func TestUpdateAssignee(t *testing.T) {
 }
 
 func TestMakeIDsFromAPIAssigneesToAdd(t *testing.T) {
+	assert.NoError(t, PrepareTestDatabase())
+
+	_ = AssertExistsAndLoadBean(t, &User{ID: 1}).(*User)
+	_ = AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
+
 	IDs, err := MakeIDsFromAPIAssigneesToAdd("", []string{""})
 	assert.NoError(t, err)
 	assert.Equal(t, []int64{}, IDs)
diff --git a/models/user_test.go b/models/user_test.go
index 02319e435..e0d4e164f 100644
--- a/models/user_test.go
+++ b/models/user_test.go
@@ -368,6 +368,8 @@ func TestCreateUser_Issue5882(t *testing.T) {
 }
 
 func TestGetUserIDsByNames(t *testing.T) {
+	assert.NoError(t, PrepareTestDatabase())
+
 	// ignore non existing
 	IDs, err := GetUserIDsByNames([]string{"user1", "user2", "none_existing_user"}, true)
 	assert.NoError(t, err)
@@ -380,6 +382,8 @@ func TestGetUserIDsByNames(t *testing.T) {
 }
 
 func TestGetMaileableUsersByIDs(t *testing.T) {
+	assert.NoError(t, PrepareTestDatabase())
+
 	results, err := GetMaileableUsersByIDs([]int64{1, 4}, false)
 	assert.NoError(t, err)
 	assert.Equal(t, 1, len(results))
diff --git a/modules/convert/user_test.go b/modules/convert/user_test.go
index 393965344..7837910ff 100644
--- a/modules/convert/user_test.go
+++ b/modules/convert/user_test.go
@@ -8,10 +8,12 @@ import (
 	"testing"
 
 	"code.gitea.io/gitea/models"
+
 	"github.com/stretchr/testify/assert"
 )
 
 func TestUser_ToUser(t *testing.T) {
+	assert.NoError(t, models.PrepareTestDatabase())
 
 	user1 := models.AssertExistsAndLoadBean(t, &models.User{ID: 1, IsAdmin: true}).(*models.User)
 
diff --git a/services/wiki/wiki_test.go b/services/wiki/wiki_test.go
index 0e1d460a2..19f298f2d 100644
--- a/services/wiki/wiki_test.go
+++ b/services/wiki/wiki_test.go
@@ -162,6 +162,8 @@ func TestRepository_AddWikiPage(t *testing.T) {
 }
 
 func TestRepository_EditWikiPage(t *testing.T) {
+	assert.NoError(t, models.PrepareTestDatabase())
+
 	const newWikiContent = "This is the new content"
 	const commitMsg = "Commit message"
 	repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)