From ef53bfa358b5cd69b7cb67da7be898fc15e46512 Mon Sep 17 00:00:00 2001 From: Niko Abeler Date: Mon, 5 Sep 2022 20:50:46 +0200 Subject: [PATCH] refactoring to have web config (single user, unsafe) in config of repo --- cmd/owl/web/aliases_test.go | 16 ++++----- cmd/owl/web/handler.go | 4 +-- cmd/owl/web/multi_user_test.go | 12 +++---- cmd/owl/web/post_test.go | 3 +- cmd/owl/web/rss_test.go | 3 +- cmd/owl/web/server.go | 23 ++++--------- cmd/owl/web/single_user_test.go | 3 +- cmd/owl/web/webmention_test.go | 12 +++---- embed/initial/repo/config.yml | 1 - owl_test.go | 6 ++-- post.go | 2 +- post_test.go | 24 ++++++------- renderer_test.go | 2 +- repository.go | 60 +++++++++++---------------------- repository_test.go | 48 +++++++++++++------------- user_test.go | 16 ++++----- 16 files changed, 100 insertions(+), 135 deletions(-) delete mode 100644 embed/initial/repo/config.yml diff --git a/cmd/owl/web/aliases_test.go b/cmd/owl/web/aliases_test.go index 2c6c161..dc9f4b1 100644 --- a/cmd/owl/web/aliases_test.go +++ b/cmd/owl/web/aliases_test.go @@ -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" diff --git a/cmd/owl/web/handler.go b/cmd/owl/web/handler.go index 38c855c..4d20ac6 100644 --- a/cmd/owl/web/handler.go +++ b/cmd/owl/web/handler.go @@ -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) diff --git a/cmd/owl/web/multi_user_test.go b/cmd/owl/web/multi_user_test.go index 70c26a3..279798a 100644 --- a/cmd/owl/web/multi_user_test.go +++ b/cmd/owl/web/multi_user_test.go @@ -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") diff --git a/cmd/owl/web/post_test.go b/cmd/owl/web/post_test.go index b3efe63..9c6e42d 100644 --- a/cmd/owl/web/post_test.go +++ b/cmd/owl/web/post_test.go @@ -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") diff --git a/cmd/owl/web/rss_test.go b/cmd/owl/web/rss_test.go index 0967d7d..904cdf7 100644 --- a/cmd/owl/web/rss_test.go +++ b/cmd/owl/web/rss_test.go @@ -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") diff --git a/cmd/owl/web/server.go b/cmd/owl/web/server.go index dc90604..d64c051 100644 --- a/cmd/owl/web/server.go +++ b/cmd/owl/web/server.go @@ -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) + repo, err = owl.OpenRepository(repoPath) 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) diff --git a/cmd/owl/web/single_user_test.go b/cmd/owl/web/single_user_test.go index 0dc61d8..7ee722c 100644 --- a/cmd/owl/web/single_user_test.go +++ b/cmd/owl/web/single_user_test.go @@ -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 } diff --git a/cmd/owl/web/webmention_test.go b/cmd/owl/web/webmention_test.go index 0c9caa4..5d69061 100644 --- a/cmd/owl/web/webmention_test.go +++ b/cmd/owl/web/webmention_test.go @@ -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") diff --git a/embed/initial/repo/config.yml b/embed/initial/repo/config.yml deleted file mode 100644 index 78122e0..0000000 --- a/embed/initial/repo/config.yml +++ /dev/null @@ -1 +0,0 @@ -domain: "http://localhost:8080" \ No newline at end of file diff --git a/owl_test.go b/owl_test.go index 3523afc..532d21f 100644 --- a/owl_test.go +++ b/owl_test.go @@ -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 } diff --git a/post.go b/post.go index d9fabd4..bc6479f 100644 --- a/post.go +++ b/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(), ) diff --git a/post_test.go b/post_test.go index 6c441e2..2825d3c 100644 --- a/post_test.go +++ b/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") diff --git a/renderer_test.go b/renderer_test.go index 92d9cd7..534f4a8 100644 --- a/renderer_test.go +++ b/renderer_test.go @@ -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") diff --git a/repository.go b/repository.go index c1d1759..cf97038 100644 --- a/repository.go +++ b/repository.go @@ -16,19 +16,18 @@ var base_template string 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 + name string + HttpClient HttpClient + Parser HtmlParser } type RepoConfig struct { - Domain string `yaml:"domain"` + 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()) diff --git a/repository_test.go b/repository_test.go index 590a082..01ca4e9 100644 --- a/repository_test.go +++ b/repository_test.go @@ -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") diff --git a/user_test.go b/user_test.go index 0f8b5d4..7a4e800 100644 --- a/user_test.go +++ b/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")