package owl_test import ( "os" "path" "strings" "testing" ) func TestCanGetPostTitle(t *testing.T) { user := getTestUser() post, _ := user.CreateNewPost("testpost") result := post.Title() if result != "testpost" { t.Error("Wrong Title. Got: " + result) } } func TestMediaDir(t *testing.T) { user := getTestUser() post, _ := user.CreateNewPost("testpost") result := post.MediaDir() if result != path.Join(post.Dir(), "media") { t.Error("Wrong MediaDir. Got: " + result) } } func TestPostUrlPath(t *testing.T) { user := getTestUser() post, _ := user.CreateNewPost("testpost") expected := "/user/" + user.Name() + "/posts/" + post.Id() + "/" if !(post.UrlPath() == expected) { t.Error("Wrong url path") t.Error("Expected: " + expected) t.Error(" Got: " + post.UrlPath()) } } func TestPostFullUrl(t *testing.T) { user := getTestUser() post, _ := user.CreateNewPost("testpost") expected := "http://localhost:8080/user/" + user.Name() + "/posts/" + post.Id() + "/" if !(post.FullUrl() == expected) { t.Error("Wrong url path") t.Error("Expected: " + expected) t.Error(" Got: " + post.FullUrl()) } } func TestPostUrlMediaPath(t *testing.T) { user := getTestUser() post, _ := user.CreateNewPost("testpost") expected := "/user/" + user.Name() + "/posts/" + post.Id() + "/media/data.png" if !(post.UrlMediaPath("data.png") == expected) { t.Error("Wrong url path") t.Error("Expected: " + expected) t.Error(" Got: " + post.UrlPath()) } } func TestPostUrlMediaPathWithSubDir(t *testing.T) { user := getTestUser() post, _ := user.CreateNewPost("testpost") expected := "/user/" + user.Name() + "/posts/" + post.Id() + "/media/foo/data.png" if !(post.UrlMediaPath("foo/data.png") == expected) { t.Error("Wrong url path") t.Error("Expected: " + expected) t.Error(" Got: " + post.UrlPath()) } } func TestDraftInMetaData(t *testing.T) { user := getTestUser() post, _ := user.CreateNewPost("testpost") content := "---\n" content += "title: test\n" content += "draft: true\n" content += "---\n" content += "\n" content += "Write your post here.\n" os.WriteFile(post.ContentFile(), []byte(content), 0644) meta := post.Meta() if !meta.Draft { t.Error("Draft should be true") } } func TestNoRawHTMLIfDisallowedByRepo(t *testing.T) { repo := getTestRepo() user, _ := repo.CreateUser("testuser") post, _ := user.CreateNewPost("testpost") content := "---\n" content += "title: test\n" content += "draft: true\n" content += "---\n" content += "\n" content += "\n" os.WriteFile(post.ContentFile(), []byte(content), 0644) html := post.RenderedContent() html_str := html.String() if strings.Contains(html_str, "\n" os.WriteFile(post.ContentFile(), []byte(content), 0644) html := post.RenderedContent() html_str := html.String() if !strings.Contains(html_str, "\n" os.WriteFile(post.ContentFile(), []byte(content), 0644) err := post.LoadMeta() if err != nil { t.Errorf("Got Error: %v", err) } if post.Meta().Title != "test" { t.Errorf("Expected title: %s, got %s", "test", post.Meta().Title) } if len(post.Meta().Aliases) != 1 || post.Meta().Aliases[0] != "foo/bar/" { t.Errorf("Expected title: %v, got %v", []string{"foo/bar/"}, post.Meta().Aliases) } if post.Meta().Date != "Wed, 17 Aug 2022 10:50:02 +0000" { t.Errorf("Expected title: %s, got %s", "Wed, 17 Aug 2022 10:50:02 +0000", post.Meta().Title) } if post.Meta().Draft != true { t.Errorf("Expected title: %v, got %v", true, post.Meta().Draft) } } func TestAddWebmentionCreatesFile(t *testing.T) { repo := getTestRepo() repo.SetAllowRawHtml(true) user, _ := repo.CreateUser("testuser") post, _ := user.CreateNewPost("testpost") post.AddWebmention("https://example.com") dir, _ := os.Open(post.WebmentionDir()) defer dir.Close() files, _ := dir.Readdirnames(-1) if len(files) != 1 { t.Error("No file created for webmention") } } func TestAddWebmentionNotOverwritingFile(t *testing.T) { repo := getTestRepo() repo.SetAllowRawHtml(true) user, _ := repo.CreateUser("testuser") post, _ := user.CreateNewPost("testpost") post.AddWebmention("https://example.com") dir, _ := os.Open(post.WebmentionDir()) defer dir.Close() files, _ := dir.Readdirnames(-1) if len(files) != 1 { t.Error("No file created for webmention") } content := "url: https://example.com\n" content += "verified: true" os.WriteFile(path.Join(post.WebmentionDir(), files[0]), []byte(content), 0644) post.AddWebmention("https://example.com") fileContent, _ := os.ReadFile(path.Join(post.WebmentionDir(), files[0])) if string(fileContent) != content { t.Error("File content was modified.") t.Errorf("Got: %v", fileContent) t.Errorf("Expected: %v", content) } }