@@ -80,6 +80,37 @@ public function testRequests($requestRange, $offset, $length, $responseRange)
80
80
$ this ->assertEquals ($ responseRange , $ response ->headers ->get ('Content-Range ' ));
81
81
}
82
82
83
+ /**
84
+ * @dataProvider provideRanges
85
+ */
86
+ public function testRequestsWithoutEtag ($ requestRange , $ offset , $ length , $ responseRange )
87
+ {
88
+ $ response = BinaryFileResponse::create (__DIR__ .'/File/Fixtures/test.gif ' , 200 , array ('Content-Type ' => 'application/octet-stream ' ));
89
+
90
+ // do a request to get the LastModified
91
+ $ request = Request::create ('/ ' );
92
+ $ response ->prepare ($ request );
93
+ $ lastModified = $ response ->headers ->get ('Last-Modified ' );
94
+
95
+ // prepare a request for a range of the testing file
96
+ $ request = Request::create ('/ ' );
97
+ $ request ->headers ->set ('If-Range ' , $ lastModified );
98
+ $ request ->headers ->set ('Range ' , $ requestRange );
99
+
100
+ $ file = fopen (__DIR__ .'/File/Fixtures/test.gif ' , 'r ' );
101
+ fseek ($ file , $ offset );
102
+ $ data = fread ($ file , $ length );
103
+ fclose ($ file );
104
+
105
+ $ this ->expectOutputString ($ data );
106
+ $ response = clone $ response ;
107
+ $ response ->prepare ($ request );
108
+ $ response ->sendContent ();
109
+
110
+ $ this ->assertEquals (206 , $ response ->getStatusCode ());
111
+ $ this ->assertEquals ($ responseRange , $ response ->headers ->get ('Content-Range ' ));
112
+ }
113
+
83
114
public function provideRanges ()
84
115
{
85
116
return array (
@@ -91,6 +122,25 @@ public function provideRanges()
91
122
);
92
123
}
93
124
125
+ public function testRangeRequestsWithoutLastModifiedDate ()
126
+ {
127
+ // prevent auto last modified
128
+ $ response = BinaryFileResponse::create (__DIR__ .'/File/Fixtures/test.gif ' , 200 , array ('Content-Type ' => 'application/octet-stream ' ), true , null , false , false );
129
+
130
+ // prepare a request for a range of the testing file
131
+ $ request = Request::create ('/ ' );
132
+ $ request ->headers ->set ('If-Range ' , date ('D, d M Y H:i:s ' ).' GMT ' );
133
+ $ request ->headers ->set ('Range ' , 'bytes=1-4 ' );
134
+
135
+ $ this ->expectOutputString (file_get_contents (__DIR__ .'/File/Fixtures/test.gif ' ));
136
+ $ response = clone $ response ;
137
+ $ response ->prepare ($ request );
138
+ $ response ->sendContent ();
139
+
140
+ $ this ->assertEquals (200 , $ response ->getStatusCode ());
141
+ $ this ->assertNull ($ response ->headers ->get ('Content-Range ' ));
142
+ }
143
+
94
144
/**
95
145
* @dataProvider provideFullFileRanges
96
146
*/
0 commit comments