From b9b164663371ec6f8ab1ef1544fc6180eb8f3b3b Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Fri, 25 Oct 2019 15:14:03 +0200 Subject: [PATCH] Fix user listing Problem with nil check in whereMasked (user repo) --- system/repository/user.go | 3 ++- tests/system/user_test.go | 36 ++++++++++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/system/repository/user.go b/system/repository/user.go index c06994052..ec2e1ed49 100644 --- a/system/repository/user.go +++ b/system/repository/user.go @@ -8,6 +8,7 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" + "github.com/cortezaproject/corteza-server/pkg/permissions" "github.com/cortezaproject/corteza-server/pkg/rh" "github.com/cortezaproject/corteza-server/system/types" ) @@ -115,7 +116,7 @@ func (r user) Find(filter types.UserFilter) (set types.UserSet, f types.UserFilt q := r.queryNoFilter() // Returns user filter (flt) wrapped in IF() function with cnd as condition (when cnd != nil) - whereMasked := func(cnd squirrel.Sqlizer, flt squirrel.Sqlizer) squirrel.Sqlizer { + whereMasked := func(cnd *permissions.ResourceFilter, flt squirrel.Sqlizer) squirrel.Sqlizer { if cnd != nil { return rh.SquirrelFunction("IF", cnd, flt, squirrel.Expr("false")) } else { diff --git a/tests/system/user_test.go b/tests/system/user_test.go index 2fc09b20f..8de439df9 100644 --- a/tests/system/user_test.go +++ b/tests/system/user_test.go @@ -45,7 +45,7 @@ func TestUserRead(t *testing.T) { End() } -func TestUserList(t *testing.T) { +func TestUserListAll(t *testing.T) { h := newHelper(t) h.secCtx() @@ -58,9 +58,7 @@ func TestUserList(t *testing.T) { h.allow(types.UserPermissionResource.AppendWildcard(), "read") aux := struct { - Response *struct { - Filter *types.UserFilter - } + Response *struct{ Filter *types.UserFilter } }{} h.apiInit(). @@ -78,6 +76,36 @@ func TestUserList(t *testing.T) { h.a.GreaterOrEqual(int(aux.Response.Filter.Count), seedCount) } +func TestUserListQuery(t *testing.T) { + h := newHelper(t) + + h.secCtx() + + h.allow(types.UserPermissionResource.AppendWildcard(), "read") + + aux := struct { + Response *struct{ Filter *types.UserFilter } + }{} + + h.apiInit(). + Debug(). + Get("/users/"). + Query("query", h.randEmail()). + Query("email", h.randEmail()). + Query("name", "John Doe"). + Query("handle", "jdoe"). + Query("username", "jdoe"). + Expect(t). + Status(http.StatusOK). + Assert(helpers.AssertNoErrors). + End(). + JSON(&aux) + + h.a.NotNil(aux.Response) + h.a.NotNil(aux.Response.Filter) + h.a.GreaterOrEqual(int(aux.Response.Filter.Count), 0) +} + func TestUserListWithOneAllowed(t *testing.T) { h := newHelper(t)