75 lines
2.2 KiB
Go
75 lines
2.2 KiB
Go
package gist_test
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/thomiceli/opengist/internal/db"
|
|
webtest "github.com/thomiceli/opengist/internal/web/test"
|
|
)
|
|
|
|
func TestDeleteGist(t *testing.T) {
|
|
s := webtest.Setup(t)
|
|
defer webtest.Teardown(t)
|
|
|
|
s.Register(t, "thomas")
|
|
s.Register(t, "alice")
|
|
|
|
t.Run("NoAuth", func(t *testing.T) {
|
|
gistPath, _, username, identifier := s.CreateGist(t, "0")
|
|
|
|
deleteURL := "/" + username + "/" + identifier + "/delete"
|
|
s.Request(t, "POST", deleteURL, nil, 302)
|
|
|
|
gistCheck, err := db.GetGist(username, identifier)
|
|
require.NoError(t, err, "Gist should still exist in database")
|
|
require.NotNil(t, gistCheck)
|
|
|
|
_, err = os.Stat(gistPath)
|
|
require.NoError(t, err, "Gist should still exist on filesystem")
|
|
})
|
|
|
|
t.Run("DeleteOwnGist", func(t *testing.T) {
|
|
gistPath, _, username, identifier := s.CreateGist(t, "0")
|
|
|
|
gistCheck, err := db.GetGist(username, identifier)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, gistCheck)
|
|
|
|
s.Login(t, "thomas")
|
|
deleteURL := "/" + username + "/" + identifier + "/delete"
|
|
s.Request(t, "POST", deleteURL, nil, 302)
|
|
|
|
gistCheck, err = db.GetGist(username, identifier)
|
|
require.Error(t, err, "Gist should be deleted from database")
|
|
|
|
_, err = os.Stat(gistPath)
|
|
require.Error(t, err, "Gist should not exist on filesystem after deletion")
|
|
require.True(t, os.IsNotExist(err), "Filesystem should return 'not exist' error")
|
|
require.Equal(t, uint(0), gistCheck.ID, "Gist should be not in database after deletion")
|
|
})
|
|
|
|
t.Run("DeleteOthersGist", func(t *testing.T) {
|
|
gistPath, _, username, identifier := s.CreateGist(t, "0")
|
|
|
|
s.Login(t, "alice")
|
|
deleteURL := "/" + username + "/" + identifier + "/delete"
|
|
s.Request(t, "POST", deleteURL, nil, 403)
|
|
|
|
gistCheck, err := db.GetGist(username, identifier)
|
|
require.NoError(t, err, "Gist should still exist in database")
|
|
require.NotNil(t, gistCheck)
|
|
|
|
_, err = os.Stat(gistPath)
|
|
require.NoError(t, err, "Gist should still exist on filesystem")
|
|
})
|
|
|
|
t.Run("DeleteNonExistentGist", func(t *testing.T) {
|
|
s.Login(t, "thomas")
|
|
|
|
deleteURL := "/thomas/nonexistent-gist-12345/delete"
|
|
s.Request(t, "POST", deleteURL, nil, 404)
|
|
})
|
|
}
|