Sending Webmentions #10
|
@ -1,6 +1,7 @@
|
|||
package web_test
|
||||
|
||||
import (
|
||||
"h4kor/owl-blogs"
|
||||
main "h4kor/owl-blogs/cmd/owl/web"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
|
@ -9,7 +10,7 @@ import (
|
|||
)
|
||||
|
||||
func TestRedirectOnAliases(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -47,7 +48,7 @@ func TestRedirectOnAliases(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestNoRedirectOnNonExistingAliases(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -78,7 +79,7 @@ func TestNoRedirectOnNonExistingAliases(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestNoRedirectIfValidPostUrl(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
post2, _ := user.CreateNewPost("post-2")
|
||||
|
@ -109,7 +110,7 @@ func TestNoRedirectIfValidPostUrl(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRedirectIfInvalidPostUrl(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -139,7 +140,7 @@ func TestRedirectIfInvalidPostUrl(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRedirectIfInvalidUserUrl(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -169,7 +170,7 @@ func TestRedirectIfInvalidUserUrl(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRedirectIfInvalidMediaUrl(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -199,9 +200,8 @@ func TestRedirectIfInvalidMediaUrl(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestDeepAliasInSingleUserMode(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{SingleUser: "test-1"})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
repo.SetSingleUser(user)
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
content := "---\n"
|
||||
|
|
|
@ -11,8 +11,8 @@ import (
|
|||
)
|
||||
|
||||
func getUserFromRepo(repo *owl.Repository, ps httprouter.Params) (owl.User, error) {
|
||||
if repo.SingleUserName() != "" {
|
||||
return repo.GetUser(repo.SingleUserName())
|
||||
if config, _ := repo.Config(); config.SingleUser != "" {
|
||||
return repo.GetUser(config.SingleUser)
|
||||
}
|
||||
userName := ps.ByName("user")
|
||||
user, err := repo.GetUser(userName)
|
||||
|
|
|
@ -27,13 +27,13 @@ func testRepoName() string {
|
|||
return "/tmp/" + randomName()
|
||||
}
|
||||
|
||||
func getTestRepo() owl.Repository {
|
||||
repo, _ := owl.CreateRepository(testRepoName())
|
||||
func getTestRepo(config owl.RepoConfig) owl.Repository {
|
||||
repo, _ := owl.CreateRepository(testRepoName(), config)
|
||||
return repo
|
||||
}
|
||||
|
||||
func TestMultiUserRepoIndexHandler(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
repo.CreateUser("user_1")
|
||||
repo.CreateUser("user_2")
|
||||
|
||||
|
@ -64,7 +64,7 @@ func TestMultiUserRepoIndexHandler(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestMultiUserUserIndexHandler(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -91,7 +91,7 @@ func TestMultiUserUserIndexHandler(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestMultiUserPostHandler(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -112,7 +112,7 @@ func TestMultiUserPostHandler(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestMultiUserPostMediaHandler(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package web_test
|
||||
|
||||
import (
|
||||
"h4kor/owl-blogs"
|
||||
main "h4kor/owl-blogs/cmd/owl/web"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
|
@ -9,7 +10,7 @@ import (
|
|||
)
|
||||
|
||||
func TestPostHandlerReturns404OnDrafts(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package web_test
|
||||
|
||||
import (
|
||||
"h4kor/owl-blogs"
|
||||
main "h4kor/owl-blogs/cmd/owl/web"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
|
@ -9,7 +10,7 @@ import (
|
|||
)
|
||||
|
||||
func TestMultiUserUserRssIndexHandler(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
user.CreateNewPost("post-1")
|
||||
|
||||
|
|
|
@ -34,20 +34,10 @@ func SingleUserRouter(repo *owl.Repository) http.Handler {
|
|||
return router
|
||||
}
|
||||
|
||||
func StartServer(repoPath string, port int, unsafe bool, user string) {
|
||||
func StartServer(repoPath string, port int) {
|
||||
var repo owl.Repository
|
||||
var err error
|
||||
if user != "" {
|
||||
println("Single user mode")
|
||||
println("Repository:", repoPath)
|
||||
println("User:", user)
|
||||
repo, err = owl.OpenSingleUserRepo(repoPath, user)
|
||||
} else {
|
||||
println("Multi user mode")
|
||||
println("Repository:", repoPath)
|
||||
repo, err = owl.OpenRepository(repoPath)
|
||||
}
|
||||
repo.SetAllowRawHtml(unsafe)
|
||||
|
||||
if err != nil {
|
||||
println("Error opening repository: ", err.Error())
|
||||
|
@ -55,13 +45,12 @@ func StartServer(repoPath string, port int, unsafe bool, user string) {
|
|||
}
|
||||
|
||||
var router http.Handler
|
||||
if user == "" {
|
||||
println("Multi user mode Router used")
|
||||
router = Router(&repo)
|
||||
} else {
|
||||
println("Single user mode Router used")
|
||||
if config, _ := repo.Config(); config.SingleUser != "" {
|
||||
router = SingleUserRouter(&repo)
|
||||
} else {
|
||||
router = Router(&repo)
|
||||
}
|
||||
|
||||
println("Listening on port", port)
|
||||
http.ListenAndServe(":"+strconv.Itoa(port), router)
|
||||
|
||||
|
|
|
@ -12,9 +12,8 @@ import (
|
|||
)
|
||||
|
||||
func getSingleUserTestRepo() (owl.Repository, owl.User) {
|
||||
repo, _ := owl.CreateRepository(testRepoName())
|
||||
repo, _ := owl.CreateRepository(testRepoName(), owl.RepoConfig{SingleUser: "test-1"})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
repo.SetSingleUser(user)
|
||||
return repo, user
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ func assertStatus(t *testing.T, rr *httptest.ResponseRecorder, expStatus int) {
|
|||
}
|
||||
|
||||
func TestWebmentionHandleAccepts(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -60,7 +60,7 @@ func TestWebmentionHandleAccepts(t *testing.T) {
|
|||
|
||||
func TestWebmentionWrittenToPost(t *testing.T) {
|
||||
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -89,7 +89,7 @@ func TestWebmentionWrittenToPost(t *testing.T) {
|
|||
// (Most commonly this means checking that the source and target schemes are http or https).
|
||||
func TestWebmentionSourceValidation(t *testing.T) {
|
||||
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -106,7 +106,7 @@ func TestWebmentionSourceValidation(t *testing.T) {
|
|||
|
||||
func TestWebmentionTargetValidation(t *testing.T) {
|
||||
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -125,7 +125,7 @@ func TestWebmentionTargetValidation(t *testing.T) {
|
|||
|
||||
func TestWebmentionSameTargetAndSource(t *testing.T) {
|
||||
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
@ -144,7 +144,7 @@ func TestWebmentionSameTargetAndSource(t *testing.T) {
|
|||
// This check SHOULD happen synchronously to reject invalid Webmentions before more in-depth verification begins.
|
||||
// What a "valid resource" means is up to the receiver.
|
||||
func TestValidationOfTarget(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("test-1")
|
||||
post, _ := user.CreateNewPost("post-1")
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
domain: "http://localhost:8080"
|
|
@ -50,13 +50,13 @@ func randomUserName() string {
|
|||
}
|
||||
|
||||
func getTestUser() owl.User {
|
||||
repo, _ := owl.CreateRepository(testRepoName())
|
||||
repo, _ := owl.CreateRepository(testRepoName(), owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
return user
|
||||
}
|
||||
|
||||
func getTestRepo() owl.Repository {
|
||||
repo, _ := owl.CreateRepository(testRepoName())
|
||||
func getTestRepo(config owl.RepoConfig) owl.Repository {
|
||||
repo, _ := owl.CreateRepository(testRepoName(), config)
|
||||
return repo
|
||||
}
|
||||
|
||||
|
|
2
post.go
2
post.go
|
@ -144,7 +144,7 @@ func (post Post) RenderedContent() bytes.Buffer {
|
|||
}
|
||||
|
||||
options := goldmark.WithRendererOptions()
|
||||
if post.user.repo.AllowRawHtml() {
|
||||
if config, _ := post.user.repo.Config(); config.AllowRawHtml {
|
||||
options = goldmark.WithRendererOptions(
|
||||
html.WithUnsafe(),
|
||||
)
|
||||
|
|
24
post_test.go
24
post_test.go
|
@ -89,7 +89,7 @@ func TestDraftInMetaData(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestNoRawHTMLIfDisallowedByRepo(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
content := "---\n"
|
||||
|
@ -107,8 +107,7 @@ func TestNoRawHTMLIfDisallowedByRepo(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRawHTMLIfAllowedByRepo(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo.SetAllowRawHtml(true)
|
||||
repo := getTestRepo(owl.RepoConfig{AllowRawHtml: true})
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
content := "---\n"
|
||||
|
@ -126,8 +125,7 @@ func TestRawHTMLIfAllowedByRepo(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestLoadMeta(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo.SetAllowRawHtml(true)
|
||||
repo := getTestRepo(owl.RepoConfig{AllowRawHtml: true})
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
|
||||
|
@ -170,7 +168,7 @@ func TestLoadMeta(t *testing.T) {
|
|||
///
|
||||
|
||||
func TestPersistWebmention(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
webmention := owl.WebmentionIn{
|
||||
|
@ -191,7 +189,7 @@ func TestPersistWebmention(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestAddWebmentionCreatesFile(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
repo.HttpClient = &MockHttpRetriever{}
|
||||
repo.Parser = &MockHttpParser{}
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
|
@ -209,7 +207,7 @@ func TestAddWebmentionCreatesFile(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestAddWebmentionNotOverwritingFile(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
repo.HttpClient = &MockHttpRetriever{}
|
||||
repo.Parser = &MockHttpParser{}
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
|
@ -239,7 +237,7 @@ func TestAddWebmentionNotOverwritingFile(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestAddWebmentionAddsParsedTitle(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
repo.HttpClient = &MockHttpRetriever{}
|
||||
repo.Parser = &MockHttpParser{}
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
|
@ -262,7 +260,7 @@ func TestAddWebmentionAddsParsedTitle(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestApprovedWebmentions(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
webmention := owl.WebmentionIn{
|
||||
|
@ -305,7 +303,7 @@ func TestApprovedWebmentions(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestScanningForLinks(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
|
||||
|
@ -328,7 +326,7 @@ func TestScanningForLinks(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestScanningForLinksDoesNotAddDuplicates(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
|
||||
|
@ -354,7 +352,7 @@ func TestScanningForLinksDoesNotAddDuplicates(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestCanSendWebmention(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
repo.HttpClient = &MockHttpRetriever{}
|
||||
repo.Parser = &MockHttpParser{}
|
||||
user, _ := repo.CreateUser("testuser")
|
||||
|
|
|
@ -107,7 +107,7 @@ func TestRenderIndexPageWithBrokenBaseTemplate(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRenderUserList(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
repo.CreateUser("user1")
|
||||
repo.CreateUser("user2")
|
||||
|
||||
|
|
|
@ -17,18 +17,17 @@ var VERSION = "0.0.1"
|
|||
|
||||
type Repository struct {
|
||||
name string
|
||||
single_user_mode bool
|
||||
active_user string
|
||||
allow_raw_html bool
|
||||
HttpClient HttpClient
|
||||
Parser HtmlParser
|
||||
}
|
||||
|
||||
type RepoConfig struct {
|
||||
Domain string `yaml:"domain"`
|
||||
SingleUser string `yaml:"single_user"`
|
||||
AllowRawHtml bool `yaml:"allow_raw_html"`
|
||||
}
|
||||
|
||||
func CreateRepository(name string) (Repository, error) {
|
||||
func CreateRepository(name string, config RepoConfig) (Repository, error) {
|
||||
newRepo := Repository{name: name, Parser: OwlHtmlParser{}, HttpClient: OwlHttpClient{}}
|
||||
// check if repository already exists
|
||||
if dirExists(newRepo.Dir()) {
|
||||
|
@ -39,6 +38,13 @@ func CreateRepository(name string) (Repository, error) {
|
|||
os.Mkdir(newRepo.UsersDir(), 0755)
|
||||
os.Mkdir(newRepo.StaticDir(), 0755)
|
||||
|
||||
// create config file
|
||||
if config.Domain == "" {
|
||||
config.Domain = "http://localhost:8080"
|
||||
}
|
||||
config_data, _ := yaml.Marshal(config)
|
||||
os.WriteFile(path.Join(newRepo.Dir(), "config.yml"), config_data, 0644)
|
||||
|
||||
// copy all files from static_files embed.FS to StaticDir
|
||||
staticFiles, _ := embed_files.ReadDir("embed/initial/static")
|
||||
for _, file := range staticFiles {
|
||||
|
@ -71,36 +77,6 @@ func OpenRepository(name string) (Repository, error) {
|
|||
return repo, nil
|
||||
}
|
||||
|
||||
func OpenSingleUserRepo(name string, user_name string) (Repository, error) {
|
||||
repo, err := OpenRepository(name)
|
||||
if err != nil {
|
||||
return Repository{}, err
|
||||
}
|
||||
user, err := repo.GetUser(user_name)
|
||||
if err != nil {
|
||||
return Repository{}, err
|
||||
}
|
||||
repo.SetSingleUser(user)
|
||||
return repo, nil
|
||||
}
|
||||
|
||||
func (repo Repository) AllowRawHtml() bool {
|
||||
return repo.allow_raw_html
|
||||
}
|
||||
|
||||
func (repo *Repository) SetAllowRawHtml(allow bool) {
|
||||
repo.allow_raw_html = allow
|
||||
}
|
||||
|
||||
func (repo *Repository) SetSingleUser(user User) {
|
||||
repo.single_user_mode = true
|
||||
repo.active_user = user.name
|
||||
}
|
||||
|
||||
func (repo Repository) SingleUserName() string {
|
||||
return repo.active_user
|
||||
}
|
||||
|
||||
func (repo Repository) Dir() string {
|
||||
return repo.name
|
||||
}
|
||||
|
@ -114,7 +90,8 @@ func (repo Repository) UsersDir() string {
|
|||
}
|
||||
|
||||
func (repo Repository) UserUrlPath(user User) string {
|
||||
if repo.single_user_mode {
|
||||
config, _ := repo.Config()
|
||||
if config.SingleUser != "" {
|
||||
return "/"
|
||||
}
|
||||
return "/user/" + user.name + "/"
|
||||
|
@ -136,8 +113,9 @@ func (repo Repository) Template() (string, error) {
|
|||
}
|
||||
|
||||
func (repo Repository) Users() ([]User, error) {
|
||||
if repo.single_user_mode {
|
||||
return []User{{repo: &repo, name: repo.active_user}}, nil
|
||||
config, _ := repo.Config()
|
||||
if config.SingleUser != "" {
|
||||
return []User{{repo: &repo, name: config.SingleUser}}, nil
|
||||
}
|
||||
|
||||
userNames := listDir(repo.UsersDir())
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
|
||||
func TestCanCreateRepository(t *testing.T) {
|
||||
repoName := testRepoName()
|
||||
_, err := owl.CreateRepository(repoName)
|
||||
_, err := owl.CreateRepository(repoName, owl.RepoConfig{})
|
||||
if err != nil {
|
||||
t.Error("Error creating repository: ", err.Error())
|
||||
}
|
||||
|
@ -18,8 +18,8 @@ func TestCanCreateRepository(t *testing.T) {
|
|||
|
||||
func TestCannotCreateExistingRepository(t *testing.T) {
|
||||
repoName := testRepoName()
|
||||
owl.CreateRepository(repoName)
|
||||
_, err := owl.CreateRepository(repoName)
|
||||
owl.CreateRepository(repoName, owl.RepoConfig{})
|
||||
_, err := owl.CreateRepository(repoName, owl.RepoConfig{})
|
||||
if err == nil {
|
||||
t.Error("No error returned when creating existing repository")
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ func TestCannotCreateExistingRepository(t *testing.T) {
|
|||
|
||||
func TestCanCreateANewUser(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
if _, err := os.Stat(path.Join(user.Dir(), "")); err != nil {
|
||||
t.Error("User directory not created")
|
||||
|
@ -36,7 +36,7 @@ func TestCanCreateANewUser(t *testing.T) {
|
|||
|
||||
func TestCannotRecreateExisitingUser(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
userName := randomUserName()
|
||||
repo.CreateUser(userName)
|
||||
_, err := repo.CreateUser(userName)
|
||||
|
@ -47,7 +47,7 @@ func TestCannotRecreateExisitingUser(t *testing.T) {
|
|||
|
||||
func TestCreateUserAddsVersionFile(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
if _, err := os.Stat(path.Join(user.Dir(), "/meta/VERSION")); err != nil {
|
||||
t.Error("Version file not created")
|
||||
|
@ -56,7 +56,7 @@ func TestCreateUserAddsVersionFile(t *testing.T) {
|
|||
|
||||
func TestCreateUserAddsBaseHtmlFile(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
if _, err := os.Stat(path.Join(user.Dir(), "/meta/base.html")); err != nil {
|
||||
t.Error("Base html file not created")
|
||||
|
@ -65,7 +65,7 @@ func TestCreateUserAddsBaseHtmlFile(t *testing.T) {
|
|||
|
||||
func TestCreateUserAddConfigYml(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
if _, err := os.Stat(path.Join(user.Dir(), "/meta/config.yml")); err != nil {
|
||||
t.Error("Config file not created")
|
||||
|
@ -74,7 +74,7 @@ func TestCreateUserAddConfigYml(t *testing.T) {
|
|||
|
||||
func TestCreateUserAddsPublicFolder(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
if _, err := os.Stat(path.Join(user.Dir(), "/public")); err != nil {
|
||||
t.Error("Public folder not created")
|
||||
|
@ -83,7 +83,7 @@ func TestCreateUserAddsPublicFolder(t *testing.T) {
|
|||
|
||||
func TestCanListRepoUsers(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user1, _ := repo.CreateUser(randomUserName())
|
||||
user2, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
|
@ -101,7 +101,7 @@ func TestCanListRepoUsers(t *testing.T) {
|
|||
func TestCanOpenRepository(t *testing.T) {
|
||||
// Create a new user
|
||||
repoName := testRepoName()
|
||||
repo, _ := owl.CreateRepository(repoName)
|
||||
repo, _ := owl.CreateRepository(repoName, owl.RepoConfig{})
|
||||
// Open the repository
|
||||
repo2, err := owl.OpenRepository(repoName)
|
||||
if err != nil {
|
||||
|
@ -121,7 +121,7 @@ func TestCannotOpenNonExisitingRepo(t *testing.T) {
|
|||
|
||||
func TestGetUser(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Get the user
|
||||
user2, err := repo.GetUser(user.Name())
|
||||
|
@ -135,7 +135,7 @@ func TestGetUser(t *testing.T) {
|
|||
|
||||
func TestCannotGetNonexistingUser(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
_, err := repo.GetUser(randomUserName())
|
||||
if err == nil {
|
||||
t.Error("No error returned when getting non-existing user")
|
||||
|
@ -144,7 +144,7 @@ func TestCannotGetNonexistingUser(t *testing.T) {
|
|||
|
||||
func TestGetStaticDirOfRepo(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
// Get the user
|
||||
staticDir := repo.StaticDir()
|
||||
if staticDir == "" {
|
||||
|
@ -154,7 +154,7 @@ func TestGetStaticDirOfRepo(t *testing.T) {
|
|||
|
||||
func TestNewRepoGetsStaticFiles(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
if _, err := os.Stat(repo.StaticDir()); err != nil {
|
||||
t.Error("Static directory not found")
|
||||
}
|
||||
|
@ -169,7 +169,7 @@ func TestNewRepoGetsStaticFiles(t *testing.T) {
|
|||
|
||||
func TestNewRepoGetsStaticFilesPicoCSSWithContent(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
file, err := os.Open(path.Join(repo.StaticDir(), "pico.min.css"))
|
||||
if err != nil {
|
||||
t.Error("Error opening pico.min.css")
|
||||
|
@ -183,7 +183,7 @@ func TestNewRepoGetsStaticFilesPicoCSSWithContent(t *testing.T) {
|
|||
|
||||
func TestNewRepoGetsBaseHtml(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
if _, err := os.Stat(path.Join(repo.Dir(), "/base.html")); err != nil {
|
||||
t.Error("Base html file not found")
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ func TestNewRepoGetsBaseHtml(t *testing.T) {
|
|||
|
||||
func TestCanGetRepoTemplate(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
// Get the user
|
||||
template, err := repo.Template()
|
||||
if err != nil {
|
||||
|
@ -206,13 +206,13 @@ func TestCanOpenRepositoryInSingleUserMode(t *testing.T) {
|
|||
// Create a new user
|
||||
repoName := testRepoName()
|
||||
userName := randomUserName()
|
||||
created_repo, _ := owl.CreateRepository(repoName)
|
||||
created_repo, _ := owl.CreateRepository(repoName, owl.RepoConfig{SingleUser: userName})
|
||||
created_repo.CreateUser(userName)
|
||||
created_repo.CreateUser(randomUserName())
|
||||
created_repo.CreateUser(randomUserName())
|
||||
|
||||
// Open the repository
|
||||
repo, _ := owl.OpenSingleUserRepo(repoName, userName)
|
||||
repo, _ := owl.OpenRepository(repoName)
|
||||
|
||||
users, _ := repo.Users()
|
||||
if len(users) != 1 {
|
||||
|
@ -227,11 +227,11 @@ func TestSingleUserRepoUserUrlPathIsSimple(t *testing.T) {
|
|||
// Create a new user
|
||||
repoName := testRepoName()
|
||||
userName := randomUserName()
|
||||
created_repo, _ := owl.CreateRepository(repoName)
|
||||
created_repo, _ := owl.CreateRepository(repoName, owl.RepoConfig{SingleUser: userName})
|
||||
created_repo.CreateUser(userName)
|
||||
|
||||
// Open the repository
|
||||
repo, _ := owl.OpenSingleUserRepo(repoName, userName)
|
||||
repo, _ := owl.OpenRepository(repoName)
|
||||
user, _ := repo.GetUser(userName)
|
||||
if user.UrlPath() != "/" {
|
||||
t.Error("User url is not '/'. Got: ", user.UrlPath())
|
||||
|
@ -239,7 +239,7 @@ func TestSingleUserRepoUserUrlPathIsSimple(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestCanGetMapWithAllPostAliases(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
post, _ := user.CreateNewPost("test-1")
|
||||
|
||||
|
@ -276,7 +276,7 @@ func TestCanGetMapWithAllPostAliases(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestAliasesHaveCorrectPost(t *testing.T) {
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
post1, _ := user.CreateNewPost("test-1")
|
||||
post2, _ := user.CreateNewPost("test-2")
|
||||
|
|
16
user_test.go
16
user_test.go
|
@ -11,7 +11,7 @@ import (
|
|||
|
||||
func TestCreateNewPostCreatesEntryInPublic(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
user.CreateNewPost("testpost")
|
||||
|
@ -26,7 +26,7 @@ func TestCreateNewPostCreatesEntryInPublic(t *testing.T) {
|
|||
|
||||
func TestCreateNewPostCreatesMediaDir(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
|
@ -49,7 +49,7 @@ func TestCreateNewPostAddsDateToMetaBlock(t *testing.T) {
|
|||
|
||||
func TestCreateNewPostMultipleCalls(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
user.CreateNewPost("testpost")
|
||||
|
@ -66,7 +66,7 @@ func TestCreateNewPostMultipleCalls(t *testing.T) {
|
|||
|
||||
func TestCanListUserPosts(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
user.CreateNewPost("testpost")
|
||||
|
@ -83,7 +83,7 @@ func TestCanListUserPosts(t *testing.T) {
|
|||
|
||||
func TestCannotListUserPostsInSubdirectories(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
user.CreateNewPost("testpost")
|
||||
|
@ -120,7 +120,7 @@ func TestCannotListUserPostsInSubdirectories(t *testing.T) {
|
|||
|
||||
func TestCannotListUserPostsWithoutIndexMd(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
user.CreateNewPost("testpost")
|
||||
|
@ -149,7 +149,7 @@ func TestCannotListUserPostsWithoutIndexMd(t *testing.T) {
|
|||
|
||||
func TestListUserPostsDoesNotIncludeDrafts(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
|
@ -170,7 +170,7 @@ func TestListUserPostsDoesNotIncludeDrafts(t *testing.T) {
|
|||
|
||||
func TestListUsersDraftsExcludedRealWorld(t *testing.T) {
|
||||
// Create a new user
|
||||
repo := getTestRepo()
|
||||
repo := getTestRepo(owl.RepoConfig{})
|
||||
user, _ := repo.CreateUser(randomUserName())
|
||||
// Create a new post
|
||||
post, _ := user.CreateNewPost("testpost")
|
||||
|
|
Loading…
Reference in New Issue