@@ -32,6 +32,9 @@ func TestPagination(t *testing.T) {
3232 require .NoError (t , err )
3333 require .Equal (t , `SELECT * FROM t ORDER BY "id" ASC LIMIT 3 OFFSET 0` , sql )
3434 require .Empty (t , args )
35+ // Verify page.Column and page.Sort are not modified
36+ require .Empty (t , page .Column )
37+ require .Len (t , page .Sort , 0 )
3538
3639 result = paginator .PrepareResult (make ([]T , 0 ), page )
3740 require .Len (t , result , 0 )
@@ -60,6 +63,9 @@ func TestInvalidSort(t *testing.T) {
6063 require .NoError (t , err )
6164 require .Equal (t , "SELECT * FROM t ORDER BY \" ID; DROP TABLE users;\" ASC, \" name\" DESC LIMIT 11 OFFSET 0" , sql )
6265 require .Empty (t , args )
66+ // Verify columns in page.Sort are not quoted
67+ require .Equal (t , "ID; DROP TABLE users;" , page .Sort [0 ].Column )
68+ require .Equal (t , "name" , page .Sort [1 ].Column )
6369}
6470
6571func TestPageColumnInjection (t * testing.T ) {
@@ -73,6 +79,8 @@ func TestPageColumnInjection(t *testing.T) {
7379 require .NoError (t , err )
7480 require .Equal (t , "SELECT * FROM t ORDER BY \" id; DROP TABLE users;--\" ASC LIMIT 11 OFFSET 0" , sql )
7581 require .Empty (t , args )
82+ // Verify column in page is not quoted
83+ require .Equal (t , "id; DROP TABLE users;--" , page .Column )
7684}
7785
7886func TestPageColumnSpaces (t * testing.T ) {
@@ -86,6 +94,8 @@ func TestPageColumnSpaces(t *testing.T) {
8694 require .NoError (t , err )
8795 require .Equal (t , "SELECT * FROM t ORDER BY \" id\" ASC, \" name\" ASC LIMIT 11 OFFSET 0" , sql )
8896 require .Empty (t , args )
97+ // Verify column in page is not quoted
98+ require .Equal (t , "id, name" , page .Column )
8999}
90100
91101func TestSortOrderInjection (t * testing.T ) {
@@ -103,6 +113,10 @@ func TestSortOrderInjection(t *testing.T) {
103113 require .NoError (t , err )
104114 require .Equal (t , "SELECT * FROM t ORDER BY \" id\" ASC, \" name\" DESC, \" created_at\" ASC LIMIT 11 OFFSET 0" , sql )
105115 require .Empty (t , args )
116+ // Verify columns in page.Sort are not quoted
117+ require .Equal (t , "id" , page .Sort [0 ].Column )
118+ require .Equal (t , "name" , page .Sort [1 ].Column )
119+ require .Equal (t , "created_at" , page .Sort [2 ].Column )
106120}
107121
108122func TestPaginationEdgeCases (t * testing.T ) {
@@ -180,6 +194,10 @@ func TestColumnFunc(t *testing.T) {
180194 require .NoError (t , err )
181195 require .Equal (t , `SELECT * FROM t ORDER BY "ID" ASC, "NAME" DESC, "created_at" ASC LIMIT 11 OFFSET 0` , sql )
182196 require .Empty (t , args )
197+ // Verify columns in page.Sort are not quoted
198+ require .Equal (t , "id" , page .Sort [0 ].Column )
199+ require .Equal (t , "name" , page .Sort [1 ].Column )
200+ require .Equal (t , "created_at" , page .Sort [2 ].Column )
183201}
184202
185203func TestColumnFallbackUsesColumnFunc (t * testing.T ) {
@@ -199,6 +217,8 @@ func TestColumnFallbackUsesColumnFunc(t *testing.T) {
199217 require .NoError (t , err )
200218 require .Equal (t , `SELECT * FROM t ORDER BY "NAME" ASC LIMIT 11 OFFSET 0` , sql )
201219 require .Empty (t , args )
220+ // Verify column in page is not quoted or transformed
221+ require .Equal (t , "name" , page .Column )
202222}
203223
204224func TestSortTakesPrecedenceOverColumn (t * testing.T ) {
@@ -218,6 +238,8 @@ func TestSortTakesPrecedenceOverColumn(t *testing.T) {
218238 require .NoError (t , err )
219239 require .Equal (t , `SELECT * FROM t ORDER BY "id" DESC LIMIT 11 OFFSET 0` , sql )
220240 require .Empty (t , args )
241+ // Verify sort column in page is not quoted
242+ require .Equal (t , "id" , page .Sort [0 ].Column )
221243}
222244
223245func TestPaginationOffsetAndPageRecompute (t * testing.T ) {
0 commit comments