blob: 0870c81bbd6ab2a2987a8fab38d5b86b35644c75 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
// Copyright (c) 2019-2021 Alexander Medvednikov. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.
import net.urllib
fn test_net_urllib() {
test_query := 'Hellö Wörld@vlang'
assert urllib.query_escape(test_query) == 'Hell%C3%B6+W%C3%B6rld%40vlang'
test_url := 'https://joe:pass@www.mydomain.com:8080/som/url?param1=test1¶m2=test2&foo=bar#testfragment'
u := urllib.parse(test_url) or {
assert false
return
}
assert u.scheme == 'https' && u.hostname() == 'www.mydomain.com' && u.port() == '8080'
&& u.path == '/som/url' && u.fragment == 'testfragment' && u.user.username == 'joe'
&& u.user.password == 'pass'
}
fn test_str() {
url := urllib.parse('https://en.wikipedia.org/wiki/Brazil_(1985_film)') or {
panic('unable to parse URL')
}
assert url.str() == 'https://en.wikipedia.org/wiki/Brazil_(1985_film)'
}
fn test_escape_unescape() {
original := 'те ст: т\\%'
escaped := urllib.query_escape(original)
assert escaped == '%D1%82%D0%B5+%D1%81%D1%82%3A+%D1%82%5C%25'
unescaped := urllib.query_unescape(escaped) or {
assert false
return
}
assert unescaped == original
}
fn test_parse_query() ? {
q1 := urllib.parse_query('format=%22%25l%3A+%25c+%25t%22') ?
q2 := urllib.parse_query('format="%l:+%c+%t"') ?
// dump(q1)
// dump(q2)
assert q1.data['format'].data == ['"%l: %c %t"']
assert q2.data['format'].data == ['"%l: %c %t"']
}
fn test_parse_missing_host() ? {
// issue #10311
url := urllib.parse('http:///') ?
assert url.str() == 'http://///'
}
|