package main_test import ( main "h4kor/owl-blogs/cmd/owl-web" "net/http" "net/http/httptest" "os" "testing" ) func TestRedirectOnAliases(t *testing.T) { repo := getTestRepo() user, _ := repo.CreateUser("test-1") post, _ := user.CreateNewPost("post-1") content := "---\n" content += "title: Test\n" content += "aliases: \n" content += " - /foo/bar\n" content += " - /foo/baz\n" content += "---\n" content += "This is a test" os.WriteFile(post.ContentFile(), []byte(content), 0644) // Create Request and Response req, err := http.NewRequest("GET", "/foo/bar", nil) if err != nil { t.Fatal(err) } rr := httptest.NewRecorder() router := main.Router(repo) router.ServeHTTP(rr, req) // Check the status code is what we expect. if status := rr.Code; status != http.StatusMovedPermanently { t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusMovedPermanently) } // Check that Location header is set correctly if rr.Header().Get("Location") != post.UrlPath() { t.Errorf("Location header is not set correctly, expected: %v Got: %v", post.UrlPath(), rr.Header().Get("Location"), ) } } func TestNoRedirectOnNonExistingAliases(t *testing.T) { repo := getTestRepo() user, _ := repo.CreateUser("test-1") post, _ := user.CreateNewPost("post-1") content := "---\n" content += "title: Test\n" content += "aliases: \n" content += " - /foo/bar\n" content += " - /foo/baz\n" content += "---\n" content += "This is a test" os.WriteFile(post.ContentFile(), []byte(content), 0644) // Create Request and Response req, err := http.NewRequest("GET", "/foo/bar2", nil) if err != nil { t.Fatal(err) } rr := httptest.NewRecorder() router := main.Router(repo) router.ServeHTTP(rr, req) // Check the status code is what we expect. if status := rr.Code; status != http.StatusNotFound { t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusNotFound) } }