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/repo | |
parent | 82e8486f13253e5a2b1a06c286b1e2b2b6049473 (diff) | |
download | gitea-91f3d77ceb66bedc7bb4d792306beb547f104dce.tar.gz gitea-91f3d77ceb66bedc7bb4d792306beb547f104dce.zip |
Unit tests for wiki routers (#3022)
Diffstat (limited to 'routers/repo')
-rw-r--r-- | routers/repo/main_test.go | 16 | ||||
-rw-r--r-- | routers/repo/wiki_test.go | 171 |
2 files changed, 187 insertions, 0 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") +} |