summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorEthan Koenig <etk39@cornell.edu>2017-02-16 19:55:33 -0500
committerLunny Xiao <xiaolunwen@gmail.com>2017-02-17 08:55:33 +0800
commit140967f00210b61b6246197cc9ecee10baa2e6f8 (patch)
tree34bdd8395f6f41e772b684c687fbe921b983880f /models
parent4c12e2a4b90237a8687b497ae14a402346b0406d (diff)
downloadgitea-140967f00210b61b6246197cc9ecee10baa2e6f8.tar.gz
gitea-140967f00210b61b6246197cc9ecee10baa2e6f8.zip
Unit tests for repo redirects (#961)
Diffstat (limited to 'models')
-rw-r--r--models/fixtures/repo_redirect.yml5
-rw-r--r--models/repo_redirect_test.go74
2 files changed, 79 insertions, 0 deletions
diff --git a/models/fixtures/repo_redirect.yml b/models/fixtures/repo_redirect.yml
new file mode 100644
index 0000000000..8850c8d780
--- /dev/null
+++ b/models/fixtures/repo_redirect.yml
@@ -0,0 +1,5 @@
+-
+ id: 1
+ owner_id: 2
+ lower_name: oldrepo1
+ redirect_repo_id: 1
diff --git a/models/repo_redirect_test.go b/models/repo_redirect_test.go
new file mode 100644
index 0000000000..b3da328362
--- /dev/null
+++ b/models/repo_redirect_test.go
@@ -0,0 +1,74 @@
+// Copyright 2017 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package models
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestLookupRepoRedirect(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ repoID, err := LookupRepoRedirect(2, "oldrepo1")
+ assert.NoError(t, err)
+ assert.EqualValues(t, 1, repoID)
+
+ _, err = LookupRepoRedirect(NonexistentID, "doesnotexist")
+ assert.True(t, IsErrRepoRedirectNotExist(err))
+}
+
+func TestNewRepoRedirect(t *testing.T) {
+ // redirect to a completely new name
+ assert.NoError(t, PrepareTestDatabase())
+
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
+ assert.NoError(t, NewRepoRedirect(repo.OwnerID, repo.ID, repo.Name, "newreponame"))
+
+ AssertExistsAndLoadBean(t, &RepoRedirect{
+ OwnerID: repo.OwnerID,
+ LowerName: repo.LowerName,
+ RedirectRepoID: repo.ID,
+ })
+ AssertExistsAndLoadBean(t, &RepoRedirect{
+ OwnerID: repo.OwnerID,
+ LowerName: "oldrepo1",
+ RedirectRepoID: repo.ID,
+ })
+}
+
+func TestNewRepoRedirect2(t *testing.T) {
+ // redirect to previously used name
+ assert.NoError(t, PrepareTestDatabase())
+
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
+ assert.NoError(t, NewRepoRedirect(repo.OwnerID, repo.ID, repo.Name, "oldrepo1"))
+
+ AssertExistsAndLoadBean(t, &RepoRedirect{
+ OwnerID: repo.OwnerID,
+ LowerName: repo.LowerName,
+ RedirectRepoID: repo.ID,
+ })
+ AssertNotExistsBean(t, &RepoRedirect{
+ OwnerID: repo.OwnerID,
+ LowerName: "oldrepo1",
+ RedirectRepoID: repo.ID,
+ })
+}
+
+func TestNewRepoRedirect3(t *testing.T) {
+ // redirect for a previously-unredirected repo
+ assert.NoError(t, PrepareTestDatabase())
+
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: 2}).(*Repository)
+ assert.NoError(t, NewRepoRedirect(repo.OwnerID, repo.ID, repo.Name, "newreponame"))
+
+ AssertExistsAndLoadBean(t, &RepoRedirect{
+ OwnerID: repo.OwnerID,
+ LowerName: repo.LowerName,
+ RedirectRepoID: repo.ID,
+ })
+}