feat(search): scope inbox search access
This commit is contained in:
@@ -289,6 +289,9 @@ func serializeSearchPayload(results []search.SearchResult) gin.H {
|
||||
|
||||
func parseChatwootSearchFilter(c *gin.Context) search.SearchFilter {
|
||||
filter := search.ParseSearchFilter(c)
|
||||
if userID := getUserID(c); userID != 0 {
|
||||
filter.CurrentUserID = &userID
|
||||
}
|
||||
if c.Query("per_page") == "" {
|
||||
filter.PerPage = chatwootSearchPerPage
|
||||
}
|
||||
|
||||
@@ -253,6 +253,27 @@ func TestSearchHandler_SearchMessages_Success(t *testing.T) {
|
||||
assert.Equal(t, 15, repo.msgFilter.PerPage)
|
||||
}
|
||||
|
||||
func TestSearchHandler_SearchMessages_AddsCurrentUserToFilter(t *testing.T) {
|
||||
repo := &mockSearchRepo{
|
||||
messages: []model.Message{makeMessage(1, 1, "hello world")},
|
||||
msgTotal: 1,
|
||||
}
|
||||
svc := search.NewSearchService(repo)
|
||||
handler := NewSearchHandler(svc)
|
||||
router := setupSearchHandlerRouter(handler)
|
||||
|
||||
w := httptest.NewRecorder()
|
||||
req := httptest.NewRequest("GET", "/api/v1/accounts/1/search/messages?q=hello&page=1", nil)
|
||||
req.Header.Set("X-User-ID", "42")
|
||||
router.ServeHTTP(w, req)
|
||||
|
||||
require.Equal(t, http.StatusOK, w.Code)
|
||||
require.NotNil(t, repo.msgFilter)
|
||||
if assert.NotNil(t, repo.msgFilter.CurrentUserID) {
|
||||
assert.Equal(t, uint(42), *repo.msgFilter.CurrentUserID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSearchHandler_SearchMessages_MeiliHitPayloadShape(t *testing.T) {
|
||||
svc := search.NewSearchServiceWithEngine(&stubSearchEngine{
|
||||
resp: &search.SearchResponse{
|
||||
|
||||
Reference in New Issue
Block a user