@@ -114,6 +114,45 @@ function buildSuite({ handlerBuilder, title }: BuildSuiteOptions): void {
114114 } ) ;
115115 } ) ;
116116
117+ describe ( "handling headers validation" , ( ) => {
118+ const schema = Joi . object ( {
119+ "accept-language" : Joi . string ( ) . valid ( "en" , "es" ) . required ( ) ,
120+ } ) ;
121+
122+ it ( "returns a 400 by default if unknown headers are not ignored" , async ( ) => {
123+ const handler = handlerBuilder ( validate , { headers : schema } , postANewUser ) ;
124+
125+ const response = await server . inject ( handler , {
126+ headers : { "accept-language" : "en" } ,
127+ method : "post" ,
128+ } ) ;
129+
130+ expect ( response . status ) . toBe ( 400 ) ;
131+ } ) ;
132+
133+ it ( "returns a 200 response if the validation passes" , async ( ) => {
134+ const handler = handlerBuilder ( validate , { headers : schema . unknown ( ) } , postANewUser ) ;
135+
136+ const response = await server . inject ( handler , {
137+ headers : { "accept-language" : "en" } ,
138+ method : "post" ,
139+ } ) ;
140+
141+ expect ( response . status ) . toBe ( 200 ) ;
142+ } ) ;
143+
144+ it ( "returns a 400 response if the validation doesn't pass" , async ( ) => {
145+ const handler = handlerBuilder ( validate , { headers : schema . unknown ( ) } , postANewUser ) ;
146+
147+ const response = await server . inject ( handler , {
148+ headers : { "accept-language" : "pt" } ,
149+ method : "post" ,
150+ } ) ;
151+
152+ expect ( response . status ) . toBe ( 400 ) ;
153+ } ) ;
154+ } ) ;
155+
117156 describe ( "working with custom error handling" , ( ) => {
118157 const body = Joi . object ( { name : Joi . string ( ) . required ( ) } ) ;
119158
0 commit comments