154 lines
3.5 KiB
Go
154 lines
3.5 KiB
Go
package gist_test
|
|
|
|
import (
|
|
"net/url"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/thomiceli/opengist/internal/git"
|
|
webtest "github.com/thomiceli/opengist/internal/web/test"
|
|
)
|
|
|
|
func TestRevisions(t *testing.T) {
|
|
s := webtest.Setup(t)
|
|
defer webtest.Teardown(t)
|
|
|
|
s.Register(t, "thomas")
|
|
s.Register(t, "alice")
|
|
|
|
t.Run("Revisions", func(t *testing.T) {
|
|
_, gist, username, identifier := s.CreateGist(t, "0")
|
|
|
|
s.Login(t, "thomas")
|
|
s.Request(t, "POST", "/"+username+"/"+identifier+"/edit", url.Values{
|
|
"title": {"Test"},
|
|
"name": {"file.txt", "ok.txt"},
|
|
"content": {"updated content", "okay"},
|
|
}, 302)
|
|
|
|
s.Request(t, "POST", "/"+username+"/"+identifier+"/edit", url.Values{
|
|
"title": {"Test"},
|
|
"name": {"renamed.txt", "ok.txt"},
|
|
"content": {"updated content", "okay"},
|
|
}, 302)
|
|
|
|
commits, err := gist.Log(0)
|
|
require.NoError(t, err)
|
|
|
|
require.Len(t, commits, 3)
|
|
|
|
require.Regexp(t, "^[a-f0-9]{40}$", commits[0].Hash)
|
|
require.Regexp(t, "^[a-f0-9]{40}$", commits[1].Hash)
|
|
require.Regexp(t, "^[a-f0-9]{40}$", commits[2].Hash)
|
|
|
|
require.Equal(t, &git.Commit{
|
|
Hash: commits[0].Hash,
|
|
Timestamp: commits[0].Timestamp,
|
|
AuthorName: "thomas",
|
|
Changed: "1 file changed, 0 insertions, 0 deletions",
|
|
Files: []git.File{
|
|
{
|
|
Filename: "renamed.txt",
|
|
Size: 0,
|
|
HumanSize: "",
|
|
OldFilename: "file.txt",
|
|
Content: ``,
|
|
Truncated: false,
|
|
IsCreated: false,
|
|
IsDeleted: false,
|
|
IsBinary: false,
|
|
MimeType: git.MimeType{},
|
|
},
|
|
},
|
|
}, commits[0])
|
|
|
|
require.Equal(t, &git.Commit{
|
|
Hash: commits[1].Hash,
|
|
Timestamp: commits[1].Timestamp,
|
|
AuthorName: "thomas",
|
|
Changed: "3 files changed, 2 insertions, 2 deletions",
|
|
Files: []git.File{
|
|
{
|
|
Filename: "file.txt",
|
|
OldFilename: "file.txt",
|
|
Content: `@@ -1 +1 @@
|
|
-hello world
|
|
\ No newline at end of file
|
|
+updated content
|
|
\ No newline at end of file
|
|
`,
|
|
IsCreated: false,
|
|
IsDeleted: false,
|
|
IsBinary: false,
|
|
}, {
|
|
Filename: "ok.txt",
|
|
OldFilename: "",
|
|
Content: `@@ -0,0 +1 @@
|
|
+okay
|
|
\ No newline at end of file
|
|
`,
|
|
IsCreated: true,
|
|
IsDeleted: false,
|
|
IsBinary: false,
|
|
}, {
|
|
Filename: "otherfile.txt",
|
|
OldFilename: "",
|
|
Content: `@@ -1 +0,0 @@
|
|
-other content
|
|
\ No newline at end of file
|
|
`,
|
|
IsCreated: false,
|
|
IsDeleted: true,
|
|
IsBinary: false,
|
|
},
|
|
},
|
|
}, commits[1])
|
|
|
|
require.Equal(t, &git.Commit{
|
|
Hash: commits[2].Hash,
|
|
Timestamp: commits[2].Timestamp,
|
|
AuthorName: "thomas",
|
|
Changed: "2 files changed, 2 insertions",
|
|
Files: []git.File{
|
|
{
|
|
Filename: "file.txt",
|
|
OldFilename: "",
|
|
Content: `@@ -0,0 +1 @@
|
|
+hello world
|
|
\ No newline at end of file
|
|
`,
|
|
IsCreated: true,
|
|
IsDeleted: false,
|
|
IsBinary: false,
|
|
}, {
|
|
Filename: "otherfile.txt",
|
|
OldFilename: "",
|
|
Content: `@@ -0,0 +1 @@
|
|
+other content
|
|
\ No newline at end of file
|
|
`,
|
|
IsCreated: true,
|
|
IsDeleted: false,
|
|
IsBinary: false,
|
|
},
|
|
},
|
|
}, commits[2])
|
|
|
|
s.Request(t, "GET", "/"+username+"/"+identifier+"/revisions", nil, 200)
|
|
})
|
|
|
|
t.Run("NoAuth", func(t *testing.T) {
|
|
_, _, username, identifier := s.CreateGist(t, "0")
|
|
|
|
s.Logout()
|
|
s.Request(t, "GET", "/"+username+"/"+identifier+"/revisions", nil, 200)
|
|
})
|
|
|
|
t.Run("PrivateGist", func(t *testing.T) {
|
|
_, _, username, identifier := s.CreateGist(t, "2")
|
|
|
|
s.Login(t, "alice")
|
|
s.Request(t, "GET", "/"+username+"/"+identifier+"/revisions", nil, 404)
|
|
})
|
|
}
|