diff options
author | Ethan Koenig <ethantkoenig@gmail.com> | 2017-11-30 07:52:15 -0800 |
---|---|---|
committer | Lauris BH <lauris@nix.lv> | 2017-11-30 17:52:15 +0200 |
commit | 91f3d77ceb66bedc7bb4d792306beb547f104dce (patch) | |
tree | b081210cb7b6b26415e0e28ceb3a51477407a97e /routers | |
parent | 82e8486f13253e5a2b1a06c286b1e2b2b6049473 (diff) | |
download | gitea-91f3d77ceb66bedc7bb4d792306beb547f104dce.tar.gz gitea-91f3d77ceb66bedc7bb4d792306beb547f104dce.zip |
Unit tests for wiki routers (#3022)
Diffstat (limited to 'routers')
-rw-r--r-- | routers/repo/main_test.go | 16 | ||||
-rw-r--r-- | routers/repo/wiki_test.go | 171 | ||||
-rw-r--r-- | routers/user/home_test.go | 4 | ||||
-rw-r--r-- | routers/user/main_test.go | 19 |
4 files changed, 190 insertions, 20 deletions
diff --git a/routers/repo/main_test.go b/routers/repo/main_test.go new file mode 100644 index 0000000000..04bbeeb211 --- /dev/null +++ b/routers/repo/main_test.go @@ -0,0 +1,16 @@ +// 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 repo + +import ( + "path/filepath" + "testing" + + "code.gitea.io/gitea/models" +) + +func TestMain(m *testing.M) { + models.MainTest(m, filepath.Join("..", "..")) +} diff --git a/routers/repo/wiki_test.go b/routers/repo/wiki_test.go new file mode 100644 index 0000000000..9b1e369fa2 --- /dev/null +++ b/routers/repo/wiki_test.go @@ -0,0 +1,171 @@ +// 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 repo + +import ( + "io/ioutil" + "net/http" + "path/filepath" + "testing" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/auth" + "code.gitea.io/gitea/modules/test" + + "github.com/Unknwon/com" + "github.com/stretchr/testify/assert" +) + +const content = "Wiki contents for unit tests" +const message = "Wiki commit message for unit tests" + +func wikiPath(repo *models.Repository, wikiName string) string { + return filepath.Join(repo.LocalWikiPath(), models.WikiNameToFilename(wikiName)) +} + +func wikiContent(t *testing.T, repo *models.Repository, wikiName string) string { + bytes, err := ioutil.ReadFile(wikiPath(repo, wikiName)) + assert.NoError(t, err) + return string(bytes) +} + +func assertWikiExists(t *testing.T, repo *models.Repository, wikiName string) { + assert.True(t, com.IsExist(wikiPath(repo, wikiName))) +} + +func assertWikiNotExists(t *testing.T, repo *models.Repository, wikiName string) { + assert.False(t, com.IsExist(wikiPath(repo, wikiName))) +} + +func assertPagesMetas(t *testing.T, expectedNames []string, metas interface{}) { + pageMetas, ok := metas.([]PageMeta) + if !assert.True(t, ok) { + return + } + if !assert.EqualValues(t, len(expectedNames), len(pageMetas)) { + return + } + for i, pageMeta := range pageMetas { + assert.EqualValues(t, expectedNames[i], pageMeta.Name) + } +} + +func TestWiki(t *testing.T) { + models.PrepareTestEnv(t) + + ctx := test.MockContext(t, "user2/repo1/wiki/_pages") + ctx.SetParams(":page", "Home") + test.LoadRepo(t, ctx, 1) + Wiki(ctx) + assert.EqualValues(t, http.StatusOK, ctx.Resp.Status()) + assert.EqualValues(t, "Home", ctx.Data["Title"]) + assertPagesMetas(t, []string{"Home"}, ctx.Data["Pages"]) +} + +func TestWikiPages(t *testing.T) { + models.PrepareTestEnv(t) + + ctx := test.MockContext(t, "user2/repo1/wiki/_pages") + test.LoadRepo(t, ctx, 1) + WikiPages(ctx) + assert.EqualValues(t, http.StatusOK, ctx.Resp.Status()) + assertPagesMetas(t, []string{"Home"}, ctx.Data["Pages"]) +} + +func TestNewWiki(t *testing.T) { + models.PrepareTestEnv(t) + + ctx := test.MockContext(t, "user2/repo1/wiki/_new") + test.LoadUser(t, ctx, 2) + test.LoadRepo(t, ctx, 1) + NewWiki(ctx) + assert.EqualValues(t, http.StatusOK, ctx.Resp.Status()) + assert.EqualValues(t, ctx.Tr("repo.wiki.new_page"), ctx.Data["Title"]) +} + +func TestNewWikiPost(t *testing.T) { + for _, title := range []string{ + "New page", + "&&&&", + } { + models.PrepareTestEnv(t) + + ctx := test.MockContext(t, "user2/repo1/wiki/_new") + test.LoadUser(t, ctx, 2) + test.LoadRepo(t, ctx, 1) + NewWikiPost(ctx, auth.NewWikiForm{ + Title: title, + Content: content, + Message: message, + }) + assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) + assertWikiExists(t, ctx.Repo.Repository, title) + assert.Equal(t, wikiContent(t, ctx.Repo.Repository, title), content) + } +} + +func TestNewWikiPost_ReservedName(t *testing.T) { + models.PrepareTestEnv(t) + + ctx := test.MockContext(t, "user2/repo1/wiki/_new") + test.LoadUser(t, ctx, 2) + test.LoadRepo(t, ctx, 1) + NewWikiPost(ctx, auth.NewWikiForm{ + Title: "_edit", + Content: content, + Message: message, + }) + assert.EqualValues(t, http.StatusOK, ctx.Resp.Status()) + assert.EqualValues(t, ctx.Tr("repo.wiki.reserved_page"), ctx.Flash.ErrorMsg) + assertWikiNotExists(t, ctx.Repo.Repository, "_edit") +} + +func TestEditWiki(t *testing.T) { + models.PrepareTestEnv(t) + + ctx := test.MockContext(t, "user2/repo1/wiki/_edit/Home") + ctx.SetParams(":page", "Home") + test.LoadUser(t, ctx, 2) + test.LoadRepo(t, ctx, 1) + EditWiki(ctx) + assert.EqualValues(t, http.StatusOK, ctx.Resp.Status()) + assert.EqualValues(t, "Home", ctx.Data["Title"]) + assert.Equal(t, wikiContent(t, ctx.Repo.Repository, "Home"), ctx.Data["content"]) +} + +func TestEditWikiPost(t *testing.T) { + for _, title := range []string{ + "Home", + "New/<page>", + } { + models.PrepareTestEnv(t) + ctx := test.MockContext(t, "user2/repo1/wiki/_new/Home") + ctx.SetParams(":page", "Home") + test.LoadUser(t, ctx, 2) + test.LoadRepo(t, ctx, 1) + EditWikiPost(ctx, auth.NewWikiForm{ + Title: title, + Content: content, + Message: message, + }) + assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) + assertWikiExists(t, ctx.Repo.Repository, title) + assert.Equal(t, wikiContent(t, ctx.Repo.Repository, title), content) + if title != "Home" { + assertWikiNotExists(t, ctx.Repo.Repository, "Home") + } + } +} + +func TestDeleteWikiPagePost(t *testing.T) { + models.PrepareTestEnv(t) + + ctx := test.MockContext(t, "user2/repo1/wiki/Home/delete") + test.LoadUser(t, ctx, 2) + test.LoadRepo(t, ctx, 1) + DeleteWikiPagePost(ctx) + assert.EqualValues(t, http.StatusOK, ctx.Resp.Status()) + assertWikiNotExists(t, ctx.Repo.Repository, "Home") +} diff --git a/routers/user/home_test.go b/routers/user/home_test.go index beca936174..a9b146b762 100644 --- a/routers/user/home_test.go +++ b/routers/user/home_test.go @@ -19,8 +19,8 @@ func TestIssues(t *testing.T) { setting.UI.IssuePagingNum = 1 assert.NoError(t, models.LoadFixtures()) - ctx := test.MockContext(t) - ctx.User = models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User) + ctx := test.MockContext(t, "issues") + test.LoadUser(t, ctx, 2) ctx.SetParams(":type", "issues") ctx.Req.Form.Set("state", "closed") Issues(ctx) diff --git a/routers/user/main_test.go b/routers/user/main_test.go index 83c0c65474..ed0724dc77 100644 --- a/routers/user/main_test.go +++ b/routers/user/main_test.go @@ -5,29 +5,12 @@ package user import ( - "fmt" - "os" "path/filepath" "testing" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/setting" - - _ "github.com/mattn/go-sqlite3" // for the test engine ) func TestMain(m *testing.M) { - if err := models.CreateTestEngine("../../models/fixtures/"); err != nil { - fmt.Printf("Error creating test engine: %v\n", err) - os.Exit(1) - } - - setting.AppURL = "https://try.gitea.io/" - setting.RunUser = "runuser" - setting.SSH.Port = 3000 - setting.SSH.Domain = "try.gitea.io" - setting.RepoRootPath = filepath.Join(os.TempDir(), "repos") - setting.AppDataPath = filepath.Join(os.TempDir(), "appdata") - - os.Exit(m.Run()) + models.MainTest(m, filepath.Join("..", "..")) } |