1- using System . Linq ;
1+ using System ;
2+ using System . Linq ;
23using System . Net ;
34using System . Net . Http ;
45using System . Threading . Tasks ;
89using JsonApiDotNetCoreExample ;
910using JsonApiDotNetCoreExample . Data ;
1011using JsonApiDotNetCoreExample . Models ;
11- using Microsoft . AspNetCore . Hosting ;
12- using Microsoft . AspNetCore . TestHost ;
1312using Newtonsoft . Json ;
1413using Xunit ;
1514using Person = JsonApiDotNetCoreExample . Models . Person ;
@@ -44,17 +43,13 @@ public async Task Can_Filter_On_Guid_Properties()
4443 var todoItem = _todoItemFaker . Generate ( ) ;
4544 context . TodoItems . Add ( todoItem ) ;
4645 await context . SaveChangesAsync ( ) ;
47-
48- var builder = new WebHostBuilder ( )
49- . UseStartup < Startup > ( ) ;
46+
5047 var httpMethod = new HttpMethod ( "GET" ) ;
5148 var route = $ "/api/v1/todo-items?filter[guid-property]={ todoItem . GuidProperty } ";
52- var server = new TestServer ( builder ) ;
53- var client = server . CreateClient ( ) ;
5449 var request = new HttpRequestMessage ( httpMethod , route ) ;
5550
5651 // act
57- var response = await client . SendAsync ( request ) ;
52+ var response = await _fixture . Client . SendAsync ( request ) ;
5853 var body = await response . Content . ReadAsStringAsync ( ) ;
5954 var deserializedBody = _fixture
6055 . GetService < IJsonApiDeSerializer > ( )
@@ -68,7 +63,6 @@ public async Task Can_Filter_On_Guid_Properties()
6863 Assert . Equal ( todoItem . GuidProperty , todoItemResponse . GuidProperty ) ;
6964 }
7065
71-
7266 [ Fact ]
7367 public async Task Can_Filter_On_Related_Attrs ( )
7468 {
@@ -79,17 +73,13 @@ public async Task Can_Filter_On_Related_Attrs()
7973 todoItem . Owner = person ;
8074 context . TodoItems . Add ( todoItem ) ;
8175 await context . SaveChangesAsync ( ) ;
82-
83- var builder = new WebHostBuilder ( )
84- . UseStartup < Startup > ( ) ;
76+
8577 var httpMethod = new HttpMethod ( "GET" ) ;
8678 var route = $ "/api/v1/todo-items?include=owner&filter[owner.first-name]={ person . FirstName } ";
87- var server = new TestServer ( builder ) ;
88- var client = server . CreateClient ( ) ;
8979 var request = new HttpRequestMessage ( httpMethod , route ) ;
9080
9181 // act
92- var response = await client . SendAsync ( request ) ;
82+ var response = await _fixture . Client . SendAsync ( request ) ;
9383 var body = await response . Content . ReadAsStringAsync ( ) ;
9484 var documents = JsonConvert . DeserializeObject < Documents > ( await response . Content . ReadAsStringAsync ( ) ) ;
9585 var included = documents . Included ;
@@ -101,5 +91,20 @@ public async Task Can_Filter_On_Related_Attrs()
10191 foreach ( var item in included )
10292 Assert . Equal ( person . FirstName , item . Attributes [ "first-name" ] ) ;
10393 }
94+
95+ [ Fact ]
96+ public async Task Cannot_Filter_If_Explicitly_Forbidden ( )
97+ {
98+ // arrange
99+ var httpMethod = new HttpMethod ( "GET" ) ;
100+ var route = $ "/api/v1/todo-items?include=owner&filter[achieved-date]={ DateTime . UtcNow . Date } ";
101+ var request = new HttpRequestMessage ( httpMethod , route ) ;
102+
103+ // act
104+ var response = await _fixture . Client . SendAsync ( request ) ;
105+
106+ // assert
107+ Assert . Equal ( HttpStatusCode . BadRequest , response . StatusCode ) ;
108+ }
104109 }
105110}
0 commit comments