1- import { getRepository } from 'typeorm' ;
1+ import { getRepository , Entity } from 'typeorm' ;
22
33import { createMockRequest } from '../../../../src/test-probe' ;
44import { ExampleUser , BaseModel } from '../../../../src/models' ;
55import { getFilter } from '../../../../src/filters' ;
6- import { OnlySelfCanRead , OnlyAdminCanRead } from '../../../../src/bodyguard' ;
6+ import { OnlySelfCanRead , OnlyAdminCanRead , AnyoneCanRead } from '../../../../src/bodyguard' ;
77
88class OnlySelfCanReadMember extends BaseModel {
99 @OnlySelfCanRead ( ) public id : number = undefined ;
@@ -17,6 +17,10 @@ class NobodyCanReadMember extends BaseModel {
1717 public id : number = undefined ;
1818}
1919
20+ class EntityWithJSONColumn extends BaseModel {
21+ @AnyoneCanRead ( ) public options : Object = undefined ;
22+ }
23+
2024/**
2125 * getFilter()
2226 * pointyapi/guards
@@ -245,4 +249,45 @@ describe('[Guards] getFilter', async () => {
245249
246250 getFilter ( request , response , ( ) => { } ) ;
247251 } ) ;
252+
253+ // https://github.com/StatelessStudio/pointyapi/issues/197
254+ it ( 'allows JSON column value to pass' , async ( ) => {
255+ // Create mock request/response
256+ const { request, response } = createMockRequest ( ) ;
257+
258+ // Create request
259+ const entity : EntityWithJSONColumn = {
260+ options : {
261+ enableSomething : true
262+ }
263+ } ;
264+
265+ request . query = { select : [ 'options' ] } ;
266+ request . payload = [ entity ] ;
267+ request . payloadType = EntityWithJSONColumn ;
268+
269+ // Filter
270+ let result = false ;
271+
272+ getFilter ( request , response , ( ) => {
273+ if ( request . payload && request . payload . length ) {
274+ if ( 'options' in request . payload [ 0 ] ) {
275+ if ( 'enableSomething' in request . payload [ 0 ] . options ) {
276+ result = true ;
277+ }
278+ else {
279+ fail ( 'enableSomething was removed from payload.' ) ;
280+ }
281+ }
282+ else {
283+ fail ( 'No options column returned.' ) ;
284+ }
285+ }
286+ else {
287+ fail ( 'No payload returned.' ) ;
288+ }
289+ } ) ;
290+
291+ expect ( result ) . toBe ( true ) ;
292+ } ) ;
248293} ) ;
0 commit comments