@@ -677,6 +677,19 @@ describe('transmission', () => {
677
677
expect ( res3 . headers [ 'last-modified' ] ) . to . equal ( res2 . headers [ 'last-modified' ] ) ;
678
678
} ) ;
679
679
680
+ it ( 'returns a brotlied file in the response when the request accepts br' , async ( ) => {
681
+
682
+ const server = Hapi . server ( { compression : { minBytes : 1 } , routes : { files : { relativeTo : __dirname } } } ) ;
683
+ await server . register ( Inert ) ;
684
+ server . route ( { method : 'GET' , path : '/file' , handler : ( request , h ) => h . file ( __dirname + '/../package.json' ) } ) ;
685
+
686
+ const res = await server . inject ( { url : '/file' , headers : { 'accept-encoding' : 'br' } } ) ;
687
+ expect ( res . headers [ 'content-type' ] ) . to . equal ( 'application/json; charset=utf-8' ) ;
688
+ expect ( res . headers [ 'content-encoding' ] ) . to . equal ( 'br' ) ;
689
+ expect ( res . headers [ 'content-length' ] ) . to . not . exist ( ) ;
690
+ expect ( res . payload ) . to . exist ( ) ;
691
+ } ) ;
692
+
680
693
it ( 'returns a gzipped file in the response when the request accepts gzip' , async ( ) => {
681
694
682
695
const server = Hapi . server ( { compression : { minBytes : 1 } , routes : { files : { relativeTo : __dirname } } } ) ;
@@ -729,6 +742,16 @@ describe('transmission', () => {
729
742
expect ( res . payload ) . to . exist ( ) ;
730
743
} ) ;
731
744
745
+ it ( 'returns a brotlied stream response without a content-length header when accept-encoding is br' , async ( ) => {
746
+
747
+ const server = Hapi . server ( { compression : { minBytes : 1 } } ) ;
748
+ server . route ( { method : 'GET' , path : '/stream' , handler : ( ) => new internals . TimerStream ( ) } ) ;
749
+
750
+ const res = await server . inject ( { url : '/stream' , headers : { 'Content-Type' : 'application/json' , 'accept-encoding' : 'br' } } ) ;
751
+ expect ( res . statusCode ) . to . equal ( 200 ) ;
752
+ expect ( res . headers [ 'content-length' ] ) . to . not . exist ( ) ;
753
+ } ) ;
754
+
732
755
it ( 'returns a gzipped stream response without a content-length header when accept-encoding is gzip' , async ( ) => {
733
756
734
757
const server = Hapi . server ( { compression : { minBytes : 1 } } ) ;
@@ -749,6 +772,37 @@ describe('transmission', () => {
749
772
expect ( res . headers [ 'content-length' ] ) . to . not . exist ( ) ;
750
773
} ) ;
751
774
775
+ it ( 'returns a br response on a post request when accept-encoding: br is requested' , async ( ) => {
776
+
777
+ const data = '{"test":"true"}' ;
778
+
779
+ const server = Hapi . server ( { compression : { minBytes : 1 } } ) ;
780
+ server . route ( { method : 'POST' , path : '/' , handler : ( request ) => request . payload } ) ;
781
+ await server . start ( ) ;
782
+
783
+ const uri = 'http://localhost:' + server . info . port ;
784
+ const brotlied = await internals . compress ( 'brotliCompress' , Buffer . from ( data ) ) ;
785
+
786
+ const { payload } = await Wreck . post ( uri , { headers : { 'accept-encoding' : 'br' } , payload : data } ) ;
787
+ expect ( payload . toString ( ) ) . to . equal ( brotlied . toString ( ) ) ;
788
+ await server . stop ( ) ;
789
+ } ) ;
790
+
791
+ it ( 'returns a br response on a get request when accept-encoding: br is requested' , async ( ) => {
792
+
793
+ const data = '{"test":"true"}' ;
794
+
795
+ const server = Hapi . server ( { compression : { minBytes : 1 } } ) ;
796
+ server . route ( { method : 'GET' , path : '/' , handler : ( ) => data } ) ;
797
+ await server . start ( ) ;
798
+
799
+ const uri = 'http://localhost:' + server . info . port ;
800
+ const brotlied = await internals . compress ( 'brotliCompress' , Buffer . from ( data ) ) ;
801
+ const { payload } = await Wreck . get ( uri , { headers : { 'accept-encoding' : 'br' } } ) ;
802
+ expect ( payload . toString ( ) ) . to . equal ( brotlied . toString ( ) ) ;
803
+ await server . stop ( ) ;
804
+ } ) ;
805
+
752
806
it ( 'returns a gzip response on a post request when accept-encoding: gzip is requested' , async ( ) => {
753
807
754
808
const data = '{"test":"true"}' ;
@@ -891,6 +945,35 @@ describe('transmission', () => {
891
945
await server . stop ( ) ;
892
946
} ) ;
893
947
948
+
949
+ it ( 'returns a br response on a post request when accept-encoding: gzip;q=1, deflate;q=0.5, br;q=1 is requested' , async ( ) => {
950
+
951
+ const data = '{"test":"true"}' ;
952
+ const server = Hapi . server ( { compression : { minBytes : 1 , priority : [ 'br' ] } } ) ;
953
+ server . route ( { method : 'POST' , path : '/' , handler : ( request ) => request . payload } ) ;
954
+ await server . start ( ) ;
955
+
956
+ const uri = 'http://localhost:' + server . info . port ;
957
+ const brotlied = await internals . compress ( 'brotliCompress' , Buffer . from ( data ) ) ;
958
+ const { payload } = await Wreck . post ( uri , { headers : { 'accept-encoding' : 'gzip;q=1, deflate;q=0.5, br;q=1' } , payload : data } ) ;
959
+ expect ( payload . toString ( ) ) . to . equal ( brotlied . toString ( ) ) ;
960
+ await server . stop ( ) ;
961
+ } ) ;
962
+
963
+ it ( 'returns a br response on a get request when accept-encoding: gzip;q=1, deflate;q=0.5, br;q=1 is requested' , async ( ) => {
964
+
965
+ const data = '{"test":"true"}' ;
966
+ const server = Hapi . server ( { compression : { minBytes : 1 , priority : [ 'br' ] } } ) ;
967
+ server . route ( { method : 'GET' , path : '/' , handler : ( ) => data } ) ;
968
+ await server . start ( ) ;
969
+
970
+ const uri = 'http://localhost:' + server . info . port ;
971
+ const brotlied = await internals . compress ( 'brotliCompress' , Buffer . from ( data ) ) ;
972
+ const { payload } = await Wreck . get ( uri , { headers : { 'accept-encoding' : 'gzip;q=1, deflate;q=0.5, br;q=1' } } ) ;
973
+ expect ( payload . toString ( ) ) . to . equal ( brotlied . toString ( ) ) ;
974
+ await server . stop ( ) ;
975
+ } ) ;
976
+
894
977
it ( 'returns a gzip response on a post request when accept-encoding: deflate, gzip is requested' , async ( ) => {
895
978
896
979
const data = '{"test":"true"}' ;
@@ -919,6 +1002,35 @@ describe('transmission', () => {
919
1002
await server . stop ( ) ;
920
1003
} ) ;
921
1004
1005
+
1006
+ it ( 'returns a br response on a post request when accept-encoding: gzip, deflate, br is requested' , async ( ) => {
1007
+
1008
+ const data = '{"test":"true"}' ;
1009
+ const server = Hapi . server ( { compression : { minBytes : 1 , priority : [ 'br' ] } } ) ;
1010
+ server . route ( { method : 'POST' , path : '/' , handler : ( request ) => request . payload } ) ;
1011
+ await server . start ( ) ;
1012
+
1013
+ const uri = 'http://localhost:' + server . info . port ;
1014
+ const brotlied = await internals . compress ( 'brotliCompress' , Buffer . from ( data ) ) ;
1015
+ const { payload } = await Wreck . post ( uri , { headers : { 'accept-encoding' : 'gzip, deflate, br' } , payload : data } ) ;
1016
+ expect ( payload . toString ( ) ) . to . equal ( brotlied . toString ( ) ) ;
1017
+ await server . stop ( ) ;
1018
+ } ) ;
1019
+
1020
+ it ( 'returns a br response on a get request when accept-encoding: gzip, deflate, br is requested' , async ( ) => {
1021
+
1022
+ const data = '{"test":"true"}' ;
1023
+ const server = Hapi . server ( { compression : { minBytes : 1 , priority : [ 'br' ] } } ) ;
1024
+ server . route ( { method : 'GET' , path : '/' , handler : ( ) => data } ) ;
1025
+ await server . start ( ) ;
1026
+
1027
+ const uri = 'http://localhost:' + server . info . port ;
1028
+ const brotlied = await internals . compress ( 'brotliCompress' , Buffer . from ( data ) ) ;
1029
+ const { payload } = await Wreck . get ( uri , { headers : { 'accept-encoding' : 'gzip, deflate, br' } } ) ;
1030
+ expect ( payload . toString ( ) ) . to . equal ( brotlied . toString ( ) ) ;
1031
+ await server . stop ( ) ;
1032
+ } ) ;
1033
+
922
1034
it ( 'boom object reused does not affect encoding header.' , async ( ) => {
923
1035
924
1036
const error = Boom . badRequest ( ) ;
0 commit comments