Skip to content

Commit

Permalink
feat: support in operator in query
Browse files Browse the repository at this point in the history
  • Loading branch information
fredmaggiowski committed Apr 27, 2023
1 parent 9665cee commit b293a5e
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions service/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -816,6 +816,54 @@ allow {
require.Equal(t, expectedQuery, filterQuery)
})

t.Run("sends filter query with $in", func(t *testing.T) {
policy := `package policies
allow {
input.request.method == "GET"
employee := data.resources[_]
employee.membership in "member_test"
}
allow {
input.request.method == "GET"
input.request.path == "/api"
employee := data.resources[_]
employee.salary > 0
}
`

mockBodySting := "I am a body"

body := strings.NewReader(mockBodySting)

partialEvaluators, err := core.SetupEvaluators(ctx, nil, &oasWithFilter, mockOPAModule, envs)
require.NoError(t, err, "Unexpected error")

ctx := createContext(t,
context.Background(),
env,
nil,
mockRondConfigWithQueryGen,
&core.OPAModuleConfig{Name: "mypolicy.rego", Content: policy},
partialEvaluators,
)

r, err := http.NewRequestWithContext(ctx, "GET", "http://www.example.com:8080/api", body)
require.NoError(t, err, "Unexpected error")
r.Header.Set("miauserproperties", `{"name":"gianni"}`)
r.Header.Set("examplekey", "value")
r.Header.Set("Content-Type", "text/plain")
w := httptest.NewRecorder()

rbacHandler(w, r)

require.Equal(t, http.StatusOK, w.Result().StatusCode, "Unexpected status code.")
filterQuery := r.Header.Get("rowfilterquery")
expectedQuery := `{"$or":[{"$and":[{"membership":{"$in":["manager_test"]}}]},{"$and":[{"salary":{"$gt":0}}]}]}`
require.Equal(t, expectedQuery, filterQuery)
})

t.Run("sends empty filter query", func(t *testing.T) {
policy := `package policies
allow {
Expand Down

0 comments on commit b293a5e

Please sign in to comment.