563 lines
19 KiB
Go
563 lines
19 KiB
Go
package tests
|
||
|
||
import (
|
||
"bytes"
|
||
"context"
|
||
"encoding/json"
|
||
"fmt"
|
||
"net/http"
|
||
"net/http/httptest"
|
||
"os"
|
||
"strconv"
|
||
"testing"
|
||
|
||
"enshi/db_connection"
|
||
"enshi/env"
|
||
"enshi/routes"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
var router *gin.Engine
|
||
|
||
// SetupRouter initializes the router with route groups for testing
|
||
func SetupRouter() (*gin.Engine, error) {
|
||
router := gin.Default()
|
||
err := routes.SetupRotes(router)
|
||
return router, err
|
||
}
|
||
|
||
// TestMain sets up the global router before running tests
|
||
func TestMain(m *testing.M) {
|
||
if err := env.LoadEnv("../utils/secret.env"); err != nil {
|
||
fmt.Println(err.Error())
|
||
return
|
||
}
|
||
|
||
if err := db_connection.SetupDatabase(); err != nil {
|
||
fmt.Println(err.Error())
|
||
return
|
||
}
|
||
defer db_connection.Dbx.Close()
|
||
defer db_connection.Dbx_connection.Close(context.Background())
|
||
|
||
var err error
|
||
router, err = SetupRouter()
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
// Run all tests
|
||
exitCode := m.Run()
|
||
|
||
// Exit with the appropriate status code
|
||
os.Exit(exitCode)
|
||
}
|
||
|
||
// TestRouterSetup verifies that the router is set up correctly
|
||
func TestRouterSetup(t *testing.T) {
|
||
if router == nil {
|
||
t.Fatalf("Router is not initialized")
|
||
}
|
||
t.Log("Routes setup successfully")
|
||
}
|
||
|
||
// TestGetRandomPost tests the /posts/random endpoint
|
||
func TestGetRandomPost(t *testing.T) {
|
||
t.Log("router in here", router)
|
||
req, _ := http.NewRequest("GET", "/test/posts/random", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
// Use the global router to serve the request
|
||
router.ServeHTTP(w, req)
|
||
|
||
// Check the response status code
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetRandomPost endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestGetRandomPost_WithLimit проверяет успешный запрос с указанным лимитом постов.
|
||
func TestGetRandomPost_WithLimit(t *testing.T) {
|
||
req, _ := http.NewRequest("GET", "/test/posts/random?limit=5", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetRandomPost with limit endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestGetRandomPost_InvalidLimit проверяет запрос с недопустимым лимитом.
|
||
func TestGetRandomPost_InvalidLimit(t *testing.T) {
|
||
req, _ := http.NewRequest("GET", "/test/posts/random?limit=invalid", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusInternalServerError {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusInternalServerError, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetRandomPost with invalid limit returned Internal Server Error as expected")
|
||
}
|
||
}
|
||
|
||
// TestGetPost_Success проверяет успешное получение поста по корректному ID.
|
||
func TestGetPost_Success(t *testing.T) {
|
||
// Предполагается, что пост с ID 1 существует в тестовой базе данных
|
||
postID := "5984625340089268323"
|
||
req, _ := http.NewRequest("GET", "/test/posts/"+postID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetPost endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestGetPost_InvalidID проверяет запрос с некорректным форматом ID.
|
||
func TestGetPost_InvalidID(t *testing.T) {
|
||
invalidPostID := "abc"
|
||
req, _ := http.NewRequest("GET", "/test/posts/"+invalidPostID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetPost with invalid ID returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestGetPost_NotFound проверяет запрос к несуществующему посту.
|
||
func TestGetPost_NotFound(t *testing.T) {
|
||
// Предполагается, что пост с ID 9999 не существует
|
||
nonExistentPostID := "9999"
|
||
req, _ := http.NewRequest("GET", "/test/posts/"+nonExistentPostID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusInternalServerError {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusInternalServerError, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetPost with non-existent ID returned Internal Server Error as expected")
|
||
}
|
||
}
|
||
|
||
// TestCreateBlog_Success проверяет успешное создание блога.
|
||
func TestCreateBlog_Success(t *testing.T) {
|
||
// Создаем тестовые данные для блога
|
||
blogData := map[string]interface{}{
|
||
"user_id": 1,
|
||
"title": "Test Blog",
|
||
"description": "A blog for testing",
|
||
"category_id": 2,
|
||
}
|
||
body, _ := json.Marshal(blogData)
|
||
|
||
req, _ := http.NewRequest("POST", "/test/blogs", bytes.NewBuffer(body))
|
||
req.Header.Set("Content-Type", "application/json")
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusCreated {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusCreated, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("CreateBlog endpoint returned Created")
|
||
}
|
||
}
|
||
|
||
// TestCreateBlog_InvalidData проверяет создание блога с некорректными данными.
|
||
func TestCreateBlog_InvalidData(t *testing.T) {
|
||
// Отсутствует обязательное поле user_id
|
||
blogData := map[string]interface{}{
|
||
"title": "Test Blog",
|
||
"description": "A blog with invalid data",
|
||
}
|
||
body, _ := json.Marshal(blogData)
|
||
|
||
req, _ := http.NewRequest("POST", "/test/blogs", bytes.NewBuffer(body))
|
||
req.Header.Set("Content-Type", "application/json")
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("CreateBlog with invalid data returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestGetBlogsByUser_Success проверяет успешное получение блогов по user_id.
|
||
func TestGetBlogsByUser_Success(t *testing.T) {
|
||
userID := 1
|
||
req, _ := http.NewRequest("GET", "/test/users/"+strconv.Itoa(userID)+"/blogs", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetBlogsByUser endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestGetBlog_Success проверяет успешное получение блога по blog_id.
|
||
func TestGetBlog_Success(t *testing.T) {
|
||
// Предполагается, что блог с ID 1 существует
|
||
blogID := "1"
|
||
req, _ := http.NewRequest("GET", "/test/blogs/"+blogID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetBlog endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestGetBlog_InvalidID проверяет получение блога с некорректным blog_id.
|
||
func TestGetBlog_InvalidID(t *testing.T) {
|
||
invalidBlogID := "abc"
|
||
req, _ := http.NewRequest("GET", "/test/blogs/"+invalidBlogID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetBlog with invalid ID returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestGetBlog_NotFound проверяет получение несуществующего блога.
|
||
func TestGetBlog_NotFound(t *testing.T) {
|
||
// Предполагается, что блог с ID 9999 не существует
|
||
nonExistentBlogID := "9999"
|
||
req, _ := http.NewRequest("GET", "/test/blogs/"+nonExistentBlogID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusNotFound {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusNotFound, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetBlog with non-existent ID returned Not Found as expected")
|
||
}
|
||
}
|
||
|
||
// TestUpdateBlog_Success проверяет успешное обновление блога.
|
||
func TestUpdateBlog_Success(t *testing.T) {
|
||
// Предполагается, что блог с ID 1 существует
|
||
blogID := "1"
|
||
updateData := map[string]interface{}{
|
||
"title": "Updated Test Blog",
|
||
"description": "Updated description",
|
||
"category_id": 3,
|
||
}
|
||
body, _ := json.Marshal(updateData)
|
||
|
||
req, _ := http.NewRequest("PUT", "/test/blogs/"+blogID, bytes.NewBuffer(body))
|
||
req.Header.Set("Content-Type", "application/json")
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("UpdateBlog endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestUpdateBlog_InvalidData проверяет обновление блога с некорректными данными.
|
||
func TestUpdateBlog_InvalidData(t *testing.T) {
|
||
// Предполагается, что блог с ID 1 существует
|
||
blogID := "1"
|
||
// Отсутствует обязательное поле title
|
||
updateData := map[string]interface{}{
|
||
"description": "Updated description without title",
|
||
}
|
||
body, _ := json.Marshal(updateData)
|
||
|
||
req, _ := http.NewRequest("PUT", "/test/blogs/"+blogID, bytes.NewBuffer(body))
|
||
req.Header.Set("Content-Type", "application/json")
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("UpdateBlog with invalid data returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestUpdateBlog_NotFound проверяет обновление несуществующего блога.
|
||
func TestUpdateBlog_NotFound(t *testing.T) {
|
||
nonExistentBlogID := "9999"
|
||
updateData := map[string]interface{}{
|
||
"title": "Non-existent Blog",
|
||
"description": "Trying to update a blog that does not exist",
|
||
"category_id": 4,
|
||
}
|
||
body, _ := json.Marshal(updateData)
|
||
|
||
req, _ := http.NewRequest("PUT", "/test/blogs/"+nonExistentBlogID, bytes.NewBuffer(body))
|
||
req.Header.Set("Content-Type", "application/json")
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusNotFound {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusNotFound, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("UpdateBlog for non-existent blog returned Not Found as expected")
|
||
}
|
||
}
|
||
|
||
// TestDeleteBlog_Success проверяет успешное удаление блога.
|
||
func TestDeleteBlog_Success(t *testing.T) {
|
||
// Предполагается, что блог с ID 2 существует и может быть удален
|
||
blogID := "2"
|
||
req, _ := http.NewRequest("DELETE", "/test/blogs/"+blogID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("DeleteBlog endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestDeleteBlog_InvalidID проверяет удаление блога с некорректным blog_id.
|
||
func TestDeleteBlog_InvalidID(t *testing.T) {
|
||
invalidBlogID := "xyz"
|
||
req, _ := http.NewRequest("DELETE", "/test/blogs/"+invalidBlogID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("DeleteBlog with invalid ID returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestDeleteBlog_NotFound проверяет удаление несуществующего блога.
|
||
func TestDeleteBlog_NotFound(t *testing.T) {
|
||
nonExistentBlogID := "9999"
|
||
req, _ := http.NewRequest("DELETE", "/test/blogs/"+nonExistentBlogID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusNotFound {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusNotFound, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("DeleteBlog for non-existent blog returned Not Found as expected")
|
||
}
|
||
}
|
||
|
||
// TestCreateBookmark_Success проверяет успешное создание закладки.
|
||
func TestCreateBookmark_Success(t *testing.T) {
|
||
bookmarkData := map[string]interface{}{
|
||
"user_id": 1,
|
||
"post_id": 1,
|
||
}
|
||
body, _ := json.Marshal(bookmarkData)
|
||
|
||
req, _ := http.NewRequest("POST", "/test/bookmarks", bytes.NewBuffer(body))
|
||
req.Header.Set("Content-Type", "application/json")
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusCreated {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusCreated, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("CreateBookmark endpoint returned Created")
|
||
}
|
||
}
|
||
|
||
// TestCreateBookmark_InvalidData проверяет создание закладки с некорректными данными.
|
||
func TestCreateBookmark_InvalidData(t *testing.T) {
|
||
// Отсутствует обязательное поле post_id
|
||
bookmarkData := map[string]interface{}{
|
||
"user_id": 1,
|
||
}
|
||
body, _ := json.Marshal(bookmarkData)
|
||
|
||
req, _ := http.NewRequest("POST", "/test/bookmarks", bytes.NewBuffer(body))
|
||
req.Header.Set("Content-Type", "application/json")
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("CreateBookmark with invalid data returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestGetBookmarksByUser_Success проверяет успешное получение закладок по user_id.
|
||
func TestGetBookmarksByUser_Success(t *testing.T) {
|
||
userID := 1
|
||
req, _ := http.NewRequest("GET", "/test/users/"+strconv.Itoa(userID)+"/bookmarks", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetBookmarksByUser endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestGetBookmarksByUser_InvalidUserID проверяет получение закладок с некорректным user_id.
|
||
func TestGetBookmarksByUser_InvalidUserID(t *testing.T) {
|
||
invalidUserID := "abc"
|
||
req, _ := http.NewRequest("GET", "/test/users/"+invalidUserID+"/bookmarks", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetBookmarksByUser with invalid user ID returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestDeleteBookmark_Success проверяет успешное удаление закладки.
|
||
func TestDeleteBookmark_Success(t *testing.T) {
|
||
// Предполагается, что закладка с user_id=1 и post_id=2 существует
|
||
userID := "1"
|
||
postID := "2"
|
||
req, _ := http.NewRequest("DELETE", "/test/bookmarks/"+userID+"/"+postID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("DeleteBookmark endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestDeleteBookmark_InvalidData проверяет удаление закладки с некорректными данными.
|
||
func TestDeleteBookmark_InvalidData(t *testing.T) {
|
||
invalidUserID := "xyz"
|
||
invalidPostID := "abc"
|
||
req, _ := http.NewRequest("DELETE", "/test/bookmarks/"+invalidUserID+"/"+invalidPostID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("DeleteBookmark with invalid data returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestDeleteBookmark_NotFound проверяет удаление несуществующей закладки.
|
||
func TestDeleteBookmark_NotFound(t *testing.T) {
|
||
nonExistentUserID := "9999"
|
||
nonExistentPostID := "9999"
|
||
req, _ := http.NewRequest("DELETE", "/test/bookmarks/"+nonExistentUserID+"/"+nonExistentPostID, nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusNotFound {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusNotFound, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("DeleteBookmark for non-existent bookmark returned Not Found as expected")
|
||
}
|
||
}
|
||
|
||
// TestGetCountOfBookmarksByPost_Success проверяет успешное получение количества закладок для поста.
|
||
func TestGetCountOfBookmarksByPost_Success(t *testing.T) {
|
||
postID := "1"
|
||
req, _ := http.NewRequest("GET", "/test/posts/"+postID+"/bookmarks/count", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetCountOfBookmarksByPost endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestGetCountOfBookmarksByPost_InvalidPostID проверяет получение количества закладок с некорректным post_id.
|
||
func TestGetCountOfBookmarksByPost_InvalidPostID(t *testing.T) {
|
||
invalidPostID := "abc"
|
||
req, _ := http.NewRequest("GET", "/test/posts/"+invalidPostID+"/bookmarks/count", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetCountOfBookmarksByPost with invalid post ID returned Bad Request as expected")
|
||
}
|
||
}
|
||
|
||
// TestGetBookmarkTimestamp_Success проверяет успешное получение временной метки закладки.
|
||
func TestGetBookmarkTimestamp_Success(t *testing.T) {
|
||
userID := "1"
|
||
postID := "1"
|
||
req, _ := http.NewRequest("GET", "/test/bookmarks/"+userID+"/"+postID+"/timestamp", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusOK {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusOK, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetBookmarkTimestamp endpoint returned OK")
|
||
}
|
||
}
|
||
|
||
// TestGetBookmarkTimestamp_InvalidData проверяет получение временной метки с некорректными данными.
|
||
func TestGetBookmarkTimestamp_InvalidData(t *testing.T) {
|
||
invalidUserID := "xyz"
|
||
invalidPostID := "abc"
|
||
req, _ := http.NewRequest("GET", "/test/bookmarks/"+invalidUserID+"/"+invalidPostID+"/timestamp", nil)
|
||
w := httptest.NewRecorder()
|
||
|
||
router.ServeHTTP(w, req)
|
||
|
||
if w.Code != http.StatusBadRequest {
|
||
t.Errorf("Expected status code %d but got %d. Body: %s", http.StatusBadRequest, w.Code, w.Body.String())
|
||
} else {
|
||
t.Log("GetBookmarkTimestamp with invalid data returned Bad Request as expected")
|
||
}
|
||
}
|