| 270 | |
| 271 | |
| 272 | def test_basic_building(): |
| 273 | map = r.Map( |
| 274 | [ |
| 275 | r.Rule(class="st">"/", endpoint=class="st">"index"), |
| 276 | r.Rule(class="st">"/foo", endpoint=class="st">"foo"), |
| 277 | r.Rule(class="st">"/bar/<baz>", endpoint=class="st">"bar"), |
| 278 | r.Rule(class="st">"/bar/<int:bazi>", endpoint=class="st">"bari"), |
| 279 | r.Rule(class="st">"/bar/<float:bazf>", endpoint=class="st">"barf"), |
| 280 | r.Rule(class="st">"/bar/<path:bazp>", endpoint=class="st">"barp"), |
| 281 | r.Rule(class="st">"/hehe", endpoint=class="st">"blah", subdomain=class="st">"blah"), |
| 282 | r.Rule(class="st">"/ws", endpoint=class="st">"ws", websocket=True), |
| 283 | ] |
| 284 | ) |
| 285 | adapter = map.bind(class="st">"example.org", class="st">"/", subdomain=class="st">"blah") |
| 286 | |
| 287 | assert adapter.build(class="st">"index", {}) == class="st">"http://example.org/" |
| 288 | assert adapter.build(class="st">"foo", {}) == class="st">"http://example.org/foo" |
| 289 | assert adapter.build(class="st">"bar", {class="st">"baz": class="st">"blub"}) == class="st">"http://example.org/bar/blub" |
| 290 | assert adapter.build(class="st">"bari", {class="st">"bazi": 50}) == class="st">"http://example.org/bar/50" |
| 291 | assert adapter.build(class="st">"barf", {class="st">"bazf": 0.815}) == class="st">"http://example.org/bar/0.815" |
| 292 | assert adapter.build(class="st">"barp", {class="st">"bazp": class="st">"la/di"}) == class="st">"http://example.org/bar/la/di" |
| 293 | assert adapter.build(class="st">"blah", {}) == class="st">"/hehe" |
| 294 | pytest.raises(r.BuildError, lambda: adapter.build(class="st">"urks")) |
| 295 | |
| 296 | adapter = map.bind(class="st">"example.org", class="st">"/test", subdomain=class="st">"blah") |
| 297 | assert adapter.build(class="st">"index", {}) == class="st">"http://example.org/test/" |
| 298 | assert adapter.build(class="st">"foo", {}) == class="st">"http://example.org/test/foo" |
| 299 | assert adapter.build(class="st">"bar", {class="st">"baz": class="st">"blub"}) == class="st">"http://example.org/test/bar/blub" |
| 300 | assert adapter.build(class="st">"bari", {class="st">"bazi": 50}) == class="st">"http://example.org/test/bar/50" |
| 301 | assert adapter.build(class="st">"barf", {class="st">"bazf": 0.815}) == class="st">"http://example.org/test/bar/0.815" |
| 302 | assert ( |
| 303 | adapter.build(class="st">"barp", {class="st">"bazp": class="st">"la/di"}) == class="st">"http://example.org/test/bar/la/di" |
| 304 | ) |
| 305 | assert adapter.build(class="st">"blah", {}) == class="st">"/test/hehe" |
| 306 | |
| 307 | adapter = map.bind(class="st">"example.org") |
| 308 | assert adapter.build(class="st">"foo", {}) == class="st">"/foo" |
| 309 | assert adapter.build(class="st">"foo", {}, force_external=True) == class="st">"http://example.org/foo" |
| 310 | adapter = map.bind(class="st">"example.org", url_scheme=class="st">"") |
| 311 | assert adapter.build(class="st">"foo", {}) == class="st">"/foo" |
| 312 | assert adapter.build(class="st">"foo", {}, force_external=True) == class="st">"//example.org/foo" |
| 313 | assert ( |
| 314 | adapter.build(class="st">"foo", {}, url_scheme=class="st">"https", force_external=True) |
| 315 | == class="st">"https://example.org/foo" |
| 316 | ) |
| 317 | |
| 318 | adapter = map.bind(class="st">"example.org", url_scheme=class="st">"ws") |
| 319 | assert adapter.build(class="st">"ws", {}) == class="st">"ws://example.org/ws" |
| 320 | assert adapter.build(class="st">"foo", {}, force_external=True) == class="st">"http://example.org/foo" |
| 321 | assert adapter.build(class="st">"foo", {}) == class="st">"/foo" |
| 322 | assert adapter.build(class="st">"ws", {}, url_scheme=class="st">"https") == class="st">"wss://example.org/ws" |
| 323 | |
| 324 | |
| 325 | def test_long_build(): |