| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library shelf.request_test; | 5 library shelf.request_test; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:shelf/shelf.dart'; | 9 import 'package:shelf/shelf.dart'; |
| 10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 var request = new Request('GET', LOCALHOST_URI); | 21 var request = new Request('GET', LOCALHOST_URI); |
| 22 expect(request.protocolVersion, '1.1'); | 22 expect(request.protocolVersion, '1.1'); |
| 23 }); | 23 }); |
| 24 | 24 |
| 25 test('provide non-default protocolVersion', () { | 25 test('provide non-default protocolVersion', () { |
| 26 var request = new Request('GET', LOCALHOST_URI, protocolVersion: '1.0'); | 26 var request = new Request('GET', LOCALHOST_URI, protocolVersion: '1.0'); |
| 27 expect(request.protocolVersion, '1.0'); | 27 expect(request.protocolVersion, '1.0'); |
| 28 }); | 28 }); |
| 29 | 29 |
| 30 test('requestedUri must be absolute', () { | 30 test('requestedUri must be absolute', () { |
| 31 expect(() => new Request('GET', Uri.parse('/path')), | 31 expect(() => new Request('GET', Uri.parse('/path')), throwsArgumentError); |
| 32 throwsArgumentError); | |
| 33 }); | 32 }); |
| 34 | 33 |
| 35 test('if uri is null, scriptName must be null', () { | 34 test('if uri is null, scriptName must be null', () { |
| 36 expect(() => new Request('GET', Uri.parse('/path'), | 35 expect(() => new Request('GET', Uri.parse('/path'), |
| 37 scriptName: '/script/name'), throwsArgumentError); | 36 scriptName: '/script/name'), throwsArgumentError); |
| 38 }); | 37 }); |
| 39 | 38 |
| 40 test('if scriptName is null, uri must be null', () { | 39 test('if scriptName is null, uri must be null', () { |
| 41 var relativeUri = new Uri(path: '/cool/beans.html'); | 40 var relativeUri = new Uri(path: '/cool/beans.html'); |
| 42 expect(() => new Request('GET', Uri.parse('/path'), | 41 expect(() => new Request('GET', Uri.parse('/path'), url: relativeUri), |
| 43 url: relativeUri), throwsArgumentError); | 42 throwsArgumentError); |
| 44 }); | 43 }); |
| 45 | 44 |
| 46 test('uri must be relative', () { | 45 test('uri must be relative', () { |
| 47 var relativeUri = Uri.parse('http://localhost/test'); | 46 var relativeUri = Uri.parse('http://localhost/test'); |
| 48 | 47 |
| 49 expect(() => new Request('GET', LOCALHOST_URI, | 48 expect(() => new Request('GET', LOCALHOST_URI, |
| 50 url: relativeUri, scriptName: '/news'), | 49 url: relativeUri, scriptName: '/news'), throwsArgumentError); |
| 51 throwsArgumentError); | |
| 52 | 50 |
| 53 // NOTE: explicitly testing fragments due to Issue 18053 | 51 // NOTE: explicitly testing fragments due to Issue 18053 |
| 54 relativeUri = Uri.parse('http://localhost/test#fragment'); | 52 relativeUri = Uri.parse('http://localhost/test#fragment'); |
| 55 | 53 |
| 56 expect(() => new Request('GET', LOCALHOST_URI, | 54 expect(() => new Request('GET', LOCALHOST_URI, |
| 57 url: relativeUri, scriptName: '/news'), | 55 url: relativeUri, scriptName: '/news'), throwsArgumentError); |
| 58 throwsArgumentError); | |
| 59 }); | 56 }); |
| 60 | 57 |
| 61 test('uri and scriptName', () { | 58 test('uri and scriptName', () { |
| 62 var pathInfo = '/pages/page.html?utm_source=ABC123'; | 59 var pathInfo = '/pages/page.html?utm_source=ABC123'; |
| 63 var scriptName = '/assets/static'; | 60 var scriptName = '/assets/static'; |
| 64 var fullUrl = 'http://localhost/other_path/other_resource.asp'; | 61 var fullUrl = 'http://localhost/other_path/other_resource.asp'; |
| 65 var request = new Request('GET', Uri.parse(fullUrl), | 62 var request = new Request('GET', Uri.parse(fullUrl), |
| 66 url: Uri.parse(pathInfo), scriptName: scriptName); | 63 url: Uri.parse(pathInfo), scriptName: scriptName); |
| 67 | 64 |
| 68 expect(request.scriptName, scriptName); | 65 expect(request.scriptName, scriptName); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 81 expect(request.url.path, '/'); | 78 expect(request.url.path, '/'); |
| 82 expect(request.url.query, ''); | 79 expect(request.url.query, ''); |
| 83 }); | 80 }); |
| 84 | 81 |
| 85 test('invalid url', () { | 82 test('invalid url', () { |
| 86 var testUrl = 'page'; | 83 var testUrl = 'page'; |
| 87 var scriptName = '/assets/static'; | 84 var scriptName = '/assets/static'; |
| 88 var fullUrl = 'http://localhost$scriptName$testUrl'; | 85 var fullUrl = 'http://localhost$scriptName$testUrl'; |
| 89 | 86 |
| 90 expect(() => new Request('GET', Uri.parse(fullUrl), | 87 expect(() => new Request('GET', Uri.parse(fullUrl), |
| 91 url: Uri.parse(testUrl), scriptName: scriptName), | 88 url: Uri.parse(testUrl), scriptName: scriptName), |
| 92 throwsArgumentError); | 89 throwsArgumentError); |
| 93 }); | 90 }); |
| 94 | 91 |
| 95 test('scriptName with no leading slash', () { | 92 test('scriptName with no leading slash', () { |
| 96 var pathInfo = '/page'; | 93 var pathInfo = '/page'; |
| 97 var scriptName = 'assets/static'; | 94 var scriptName = 'assets/static'; |
| 98 var fullUrl = 'http://localhost/assets/static/pages'; | 95 var fullUrl = 'http://localhost/assets/static/pages'; |
| 99 | 96 |
| 100 expect(() => new Request('GET',Uri.parse(fullUrl), | 97 expect(() => new Request('GET', Uri.parse(fullUrl), |
| 101 url: Uri.parse(pathInfo), scriptName: scriptName), | 98 url: Uri.parse(pathInfo), scriptName: scriptName), |
| 102 throwsArgumentError); | 99 throwsArgumentError); |
| 103 | 100 |
| 104 pathInfo = '/assets/static/page'; | 101 pathInfo = '/assets/static/page'; |
| 105 scriptName = '/'; | 102 scriptName = '/'; |
| 106 fullUrl = 'http://localhost/assets/static/pages'; | 103 fullUrl = 'http://localhost/assets/static/pages'; |
| 107 | 104 |
| 108 expect(() => new Request('GET',Uri.parse(fullUrl), | 105 expect(() => new Request('GET', Uri.parse(fullUrl), |
| 109 url: Uri.parse(pathInfo), scriptName: scriptName), | 106 url: Uri.parse(pathInfo), scriptName: scriptName), |
| 110 throwsArgumentError); | 107 throwsArgumentError); |
| 111 }); | 108 }); |
| 112 | 109 |
| 113 test('scriptName that is only a slash', () { | 110 test('scriptName that is only a slash', () { |
| 114 var pathInfo = '/assets/static/page'; | 111 var pathInfo = '/assets/static/page'; |
| 115 var scriptName = '/'; | 112 var scriptName = '/'; |
| 116 var fullUrl = 'http://localhost/assets/static/pages'; | 113 var fullUrl = 'http://localhost/assets/static/pages'; |
| 117 | 114 |
| 118 expect(() => new Request('GET',Uri.parse(fullUrl), | 115 expect(() => new Request('GET', Uri.parse(fullUrl), |
| 119 url: Uri.parse(pathInfo), scriptName: scriptName), | 116 url: Uri.parse(pathInfo), scriptName: scriptName), |
| 120 throwsArgumentError); | 117 throwsArgumentError); |
| 121 }); | 118 }); |
| 122 }); | 119 }); |
| 123 | 120 |
| 124 group("ifModifiedSince", () { | 121 group("ifModifiedSince", () { |
| 125 test("is null without an If-Modified-Since header", () { | 122 test("is null without an If-Modified-Since header", () { |
| 126 var request = _request(); | 123 var request = _request(); |
| 127 expect(request.ifModifiedSince, isNull); | 124 expect(request.ifModifiedSince, isNull); |
| 128 }); | 125 }); |
| 129 | 126 |
| 130 test("comes from the Last-Modified header", () { | 127 test("comes from the Last-Modified header", () { |
| 131 var request = _request({ | 128 var request = |
| 132 'if-modified-since': 'Sun, 06 Nov 1994 08:49:37 GMT' | 129 _request({'if-modified-since': 'Sun, 06 Nov 1994 08:49:37 GMT'}); |
| 133 }); | |
| 134 expect(request.ifModifiedSince, | 130 expect(request.ifModifiedSince, |
| 135 equals(DateTime.parse("1994-11-06 08:49:37z"))); | 131 equals(DateTime.parse("1994-11-06 08:49:37z"))); |
| 136 }); | 132 }); |
| 137 }); | 133 }); |
| 138 | 134 |
| 139 group('change', () { | 135 group('change', () { |
| 140 test('with no arguments returns instance with equal values', () { | 136 test('with no arguments returns instance with equal values', () { |
| 141 var controller = new StreamController(); | 137 var controller = new StreamController(); |
| 142 | 138 |
| 143 var uri = Uri.parse('https://test.example.com/static/file.html'); | 139 var uri = Uri.parse('https://test.example.com/static/file.html'); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 var request = new Request('GET', uri); | 188 var request = new Request('GET', uri); |
| 193 var copy = request.change(url: Uri.parse('/other_path/file.html')); | 189 var copy = request.change(url: Uri.parse('/other_path/file.html')); |
| 194 | 190 |
| 195 expect(copy.scriptName, ''); | 191 expect(copy.scriptName, ''); |
| 196 expect(copy.url, Uri.parse('/other_path/file.html')); | 192 expect(copy.url, Uri.parse('/other_path/file.html')); |
| 197 }); | 193 }); |
| 198 | 194 |
| 199 test('scriptName and url', () { | 195 test('scriptName and url', () { |
| 200 var uri = Uri.parse('https://test.example.com/static/file.html'); | 196 var uri = Uri.parse('https://test.example.com/static/file.html'); |
| 201 var request = new Request('GET', uri); | 197 var request = new Request('GET', uri); |
| 202 var copy = request.change(scriptName: '/dynamic', | 198 var copy = request.change( |
| 203 url: Uri.parse('/other_path/file.html')); | 199 scriptName: '/dynamic', url: Uri.parse('/other_path/file.html')); |
| 204 | 200 |
| 205 expect(copy.scriptName, '/dynamic'); | 201 expect(copy.scriptName, '/dynamic'); |
| 206 expect(copy.url, Uri.parse('/other_path/file.html')); | 202 expect(copy.url, Uri.parse('/other_path/file.html')); |
| 207 }); | 203 }); |
| 208 }); | 204 }); |
| 209 } | 205 } |
| OLD | NEW |