github.com/kaleido-io/firefly@v0.0.0-20210622132723-8b4b6aacb971/internal/apiserver/restfilter_test.go (about) 1 // Copyright © 2021 Kaleido, Inc. 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 // 5 // Licensed under the Apache License, Version 2.0 (the "License"); 6 // you may not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 17 package apiserver 18 19 import ( 20 "net/http/httptest" 21 "testing" 22 23 "github.com/kaleido-io/firefly/pkg/database" 24 "github.com/stretchr/testify/assert" 25 ) 26 27 func TestBuildFilter(t *testing.T) { 28 maxFilterLimit = 250 29 30 req := httptest.NewRequest("GET", "/things?created=0&confirmed=!0&Tag=>abc&TAG=<abc&tag=<=abc&tag=>=abc&tag=@abc&tag=^abc&tag=!@abc&tag=!^abc&skip=10&limit=50&sort=tag,sequence&descending", nil) 31 filter, err := buildFilter(req, database.MessageQueryFactory) 32 assert.NoError(t, err) 33 fi, err := filter.Finalize() 34 assert.NoError(t, err) 35 36 assert.Equal(t, "( confirmed != 0 ) && ( created == 0 ) && ( ( tag %! 'abc' ) || ( tag ^! 'abc' ) || ( tag <= 'abc' ) || ( tag < 'abc' ) || ( tag >= 'abc' ) || ( tag > 'abc' ) || ( tag %= 'abc' ) || ( tag ^= 'abc' ) ) sort=tag,sequence descending skip=10 limit=50", fi.String()) 37 } 38 39 func TestBuildFilterLimitSkip(t *testing.T) { 40 maxFilterSkip = 250 41 42 req := httptest.NewRequest("GET", "/things?skip=251", nil) 43 _, err := buildFilter(req, database.MessageQueryFactory) 44 assert.Regexp(t, "FF10183.*250", err) 45 } 46 47 func TestBuildFilterLimitLimit(t *testing.T) { 48 maxFilterLimit = 500 49 50 req := httptest.NewRequest("GET", "/things?limit=501", nil) 51 _, err := buildFilter(req, database.MessageQueryFactory) 52 assert.Regexp(t, "FF10184.*500", err) 53 }