123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- // Copyright 2021 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package integration
-
- import (
- "encoding/base64"
- "fmt"
- "net/http"
- "testing"
-
- auth_model "code.gitea.io/gitea/models/auth"
- api "code.gitea.io/gitea/modules/structs"
- "code.gitea.io/gitea/tests"
-
- "github.com/stretchr/testify/assert"
- )
-
- func TestAPIGetWikiPage(t *testing.T) {
- defer tests.PrepareTestEnv(t)()
-
- username := "user2"
-
- urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/wiki/page/Home", username, "repo1")
-
- req := NewRequest(t, "GET", urlStr)
- resp := MakeRequest(t, req, http.StatusOK)
- var page *api.WikiPage
- DecodeJSON(t, resp, &page)
-
- assert.Equal(t, &api.WikiPage{
- WikiPageMetaData: &api.WikiPageMetaData{
- Title: "Home",
- HTMLURL: page.HTMLURL,
- SubURL: "Home",
- LastCommit: &api.WikiCommit{
- ID: "2c54faec6c45d31c1abfaecdab471eac6633738a",
- Author: &api.CommitUser{
- Identity: api.Identity{
- Name: "Ethan Koenig",
- Email: "ethantkoenig@gmail.com",
- },
- Date: "2017-11-27T04:31:18Z",
- },
- Committer: &api.CommitUser{
- Identity: api.Identity{
- Name: "Ethan Koenig",
- Email: "ethantkoenig@gmail.com",
- },
- Date: "2017-11-27T04:31:18Z",
- },
- Message: "Add Home.md\n",
- },
- },
- ContentBase64: base64.RawStdEncoding.EncodeToString(
- []byte("# Home page\n\nThis is the home page!\n"),
- ),
- CommitCount: 1,
- Sidebar: "",
- Footer: "",
- }, page)
- }
-
- func TestAPIListWikiPages(t *testing.T) {
- defer tests.PrepareTestEnv(t)()
-
- username := "user2"
-
- urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/wiki/pages", username, "repo1")
-
- req := NewRequest(t, "GET", urlStr)
- resp := MakeRequest(t, req, http.StatusOK)
-
- var meta []*api.WikiPageMetaData
- DecodeJSON(t, resp, &meta)
-
- dummymeta := []*api.WikiPageMetaData{
- {
- Title: "Home",
- HTMLURL: meta[0].HTMLURL,
- SubURL: "Home",
- LastCommit: &api.WikiCommit{
- ID: "2c54faec6c45d31c1abfaecdab471eac6633738a",
- Author: &api.CommitUser{
- Identity: api.Identity{
- Name: "Ethan Koenig",
- Email: "ethantkoenig@gmail.com",
- },
- Date: "2017-11-27T04:31:18Z",
- },
- Committer: &api.CommitUser{
- Identity: api.Identity{
- Name: "Ethan Koenig",
- Email: "ethantkoenig@gmail.com",
- },
- Date: "2017-11-27T04:31:18Z",
- },
- Message: "Add Home.md\n",
- },
- },
- {
- Title: "Page With Image",
- HTMLURL: meta[1].HTMLURL,
- SubURL: "Page-With-Image",
- LastCommit: &api.WikiCommit{
- ID: "0cf15c3f66ec8384480ed9c3cf87c9e97fbb0ec3",
- Author: &api.CommitUser{
- Identity: api.Identity{
- Name: "Gabriel Silva Simões",
- Email: "simoes.sgabriel@gmail.com",
- },
- Date: "2019-01-25T01:41:55Z",
- },
- Committer: &api.CommitUser{
- Identity: api.Identity{
- Name: "Gabriel Silva Simões",
- Email: "simoes.sgabriel@gmail.com",
- },
- Date: "2019-01-25T01:41:55Z",
- },
- Message: "Add jpeg.jpg and page with image\n",
- },
- },
- {
- Title: "Page With Spaced Name",
- HTMLURL: meta[2].HTMLURL,
- SubURL: "Page-With-Spaced-Name",
- LastCommit: &api.WikiCommit{
- ID: "c10d10b7e655b3dab1f53176db57c8219a5488d6",
- Author: &api.CommitUser{
- Identity: api.Identity{
- Name: "Gabriel Silva Simões",
- Email: "simoes.sgabriel@gmail.com",
- },
- Date: "2019-01-25T01:39:51Z",
- },
- Committer: &api.CommitUser{
- Identity: api.Identity{
- Name: "Gabriel Silva Simões",
- Email: "simoes.sgabriel@gmail.com",
- },
- Date: "2019-01-25T01:39:51Z",
- },
- Message: "Add page with spaced name\n",
- },
- },
- {
- Title: "Unescaped File",
- HTMLURL: meta[3].HTMLURL,
- SubURL: "Unescaped-File",
- LastCommit: &api.WikiCommit{
- ID: "0dca5bd9b5d7ef937710e056f575e86c0184ba85",
- Author: &api.CommitUser{
- Identity: api.Identity{
- Name: "6543",
- Email: "6543@obermui.de",
- },
- Date: "2021-07-19T16:42:46Z",
- },
- Committer: &api.CommitUser{
- Identity: api.Identity{
- Name: "6543",
- Email: "6543@obermui.de",
- },
- Date: "2021-07-19T16:42:46Z",
- },
- Message: "add unescaped file\n",
- },
- },
- }
-
- assert.Equal(t, dummymeta, meta)
- }
-
- func TestAPINewWikiPage(t *testing.T) {
- for _, title := range []string{
- "New page",
- "&&&&",
- } {
- defer tests.PrepareTestEnv(t)()
- username := "user2"
- session := loginUser(t, username)
- token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
-
- urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/wiki/new?token=%s", username, "repo1", token)
-
- req := NewRequestWithJSON(t, "POST", urlStr, &api.CreateWikiPageOptions{
- Title: title,
- ContentBase64: base64.StdEncoding.EncodeToString([]byte("Wiki page content for API unit tests")),
- Message: "",
- })
- MakeRequest(t, req, http.StatusCreated)
- }
- }
-
- func TestAPIEditWikiPage(t *testing.T) {
- defer tests.PrepareTestEnv(t)()
- username := "user2"
- session := loginUser(t, username)
- token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
-
- urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/wiki/page/Page-With-Spaced-Name?token=%s", username, "repo1", token)
-
- req := NewRequestWithJSON(t, "PATCH", urlStr, &api.CreateWikiPageOptions{
- Title: "edited title",
- ContentBase64: base64.StdEncoding.EncodeToString([]byte("Edited wiki page content for API unit tests")),
- Message: "",
- })
- MakeRequest(t, req, http.StatusOK)
- }
-
- func TestAPIListPageRevisions(t *testing.T) {
- defer tests.PrepareTestEnv(t)()
- username := "user2"
-
- urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/wiki/revisions/Home", username, "repo1")
-
- req := NewRequest(t, "GET", urlStr)
- resp := MakeRequest(t, req, http.StatusOK)
-
- var revisions *api.WikiCommitList
- DecodeJSON(t, resp, &revisions)
-
- dummyrevisions := &api.WikiCommitList{
- WikiCommits: []*api.WikiCommit{
- {
- ID: "2c54faec6c45d31c1abfaecdab471eac6633738a",
- Author: &api.CommitUser{
- Identity: api.Identity{
- Name: "Ethan Koenig",
- Email: "ethantkoenig@gmail.com",
- },
- Date: "2017-11-27T04:31:18Z",
- },
- Committer: &api.CommitUser{
- Identity: api.Identity{
- Name: "Ethan Koenig",
- Email: "ethantkoenig@gmail.com",
- },
- Date: "2017-11-27T04:31:18Z",
- },
- Message: "Add Home.md\n",
- },
- },
- Count: 1,
- }
-
- assert.Equal(t, dummyrevisions, revisions)
- }
|