Page Menu
Home
Search
Configure Global Search
Log In
Files
F13399553
test_flask_extra.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
3 KB
Subscribers
None
test_flask_extra.py
View Options
import
unittest
import
flask
from
pillar.tests
import
AbstractPillarTest
class
FlaskExtraTest
(
unittest
.
TestCase
):
def
test_vary_xhr
(
self
):
import
pillar.flask_extra
class
TestApp
(
flask
.
Flask
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
()
.
__init__
(
*
args
,
**
kwargs
)
self
.
add_url_rule
(
'/must-vary'
,
'must-vary'
,
self
.
must_vary
)
self
.
add_url_rule
(
'/no-vary'
,
'no-vary'
,
self
.
no_vary
)
@pillar.flask_extra.vary_xhr
()
def
must_vary
(
self
):
return
'yay'
def
no_vary
(
self
):
return
'nah'
,
201
app
=
TestApp
(
__name__
)
client
=
app
.
test_client
()
resp
=
client
.
get
(
'/must-vary'
)
self
.
assertEqual
(
200
,
resp
.
status_code
)
self
.
assertEqual
(
'X-Requested-With'
,
resp
.
headers
[
'Vary'
])
self
.
assertEqual
(
'yay'
,
resp
.
data
.
decode
())
resp
=
client
.
get
(
'/no-vary'
)
self
.
assertEqual
(
201
,
resp
.
status_code
)
self
.
assertNotIn
(
'Vary'
,
resp
.
headers
)
self
.
assertEqual
(
'nah'
,
resp
.
data
.
decode
())
class
EnsureSchemaTest
(
unittest
.
TestCase
):
def
test_ensure_schema_http
(
self
):
import
pillar.flask_extra
suffix
=
'://user:password@hostname/some-path/
%2F
paththing?query=abc#fragment'
app
=
flask
.
Flask
(
__name__
)
app
.
config
[
'PREFERRED_URL_SCHEME'
]
=
'http'
with
app
.
app_context
():
for
scheme
in
(
'http'
,
'https'
,
'ftp'
,
'gopher'
):
self
.
assertEqual
(
f
'http{suffix}'
,
pillar
.
flask_extra
.
ensure_schema
(
f
'{scheme}{suffix}'
))
def
test_ensure_schema_https
(
self
):
import
pillar.flask_extra
suffix
=
'://user:password@hostname/some-path/
%2F
paththing?query=abc#fragment'
app
=
flask
.
Flask
(
__name__
)
app
.
config
[
'PREFERRED_URL_SCHEME'
]
=
'https'
with
app
.
app_context
():
for
scheme
in
(
'http'
,
'https'
,
'ftp'
,
'gopher'
):
self
.
assertEqual
(
f
'https{suffix}'
,
pillar
.
flask_extra
.
ensure_schema
(
f
'{scheme}{suffix}'
))
def
test_no_config
(
self
):
import
pillar.flask_extra
suffix
=
'://user:password@hostname/some-path/
%2F
paththing?query=abc#fragment'
app
=
flask
.
Flask
(
__name__
)
app
.
config
.
pop
(
'PREFERRED_URL_SCHEME'
,
None
)
with
app
.
app_context
():
self
.
assertEqual
(
f
'https{suffix}'
,
pillar
.
flask_extra
.
ensure_schema
(
f
'gopher{suffix}'
))
def
test_corner_cases
(
self
):
import
pillar.flask_extra
app
=
flask
.
Flask
(
__name__
)
app
.
config
[
'PREFERRED_URL_SCHEME'
]
=
'https'
with
app
.
app_context
():
self
.
assertEqual
(
''
,
pillar
.
flask_extra
.
ensure_schema
(
''
))
self
.
assertEqual
(
'/some/path/only'
,
pillar
.
flask_extra
.
ensure_schema
(
'/some/path/only'
))
self
.
assertEqual
(
'https://hostname/path'
,
pillar
.
flask_extra
.
ensure_schema
(
'//hostname/path'
))
class
HashedPathConverterTest
(
AbstractPillarTest
):
def
test_to_python
(
self
):
from
pillar.flask_extra
import
HashedPathConverter
hpc
=
HashedPathConverter
({})
self
.
assertEqual
(
'/path/to/file.min.js'
,
hpc
.
to_python
(
'/path/to/file.min.abcd1234.js'
))
self
.
assertEqual
(
'/path/to/file.js'
,
hpc
.
to_python
(
'/path/to/file.abcd1234.js'
))
self
.
assertEqual
(
'/path/to/file'
,
hpc
.
to_python
(
'/path/to/file'
))
self
.
assertEqual
(
''
,
hpc
.
to_python
(
''
))
def
test_to_url
(
self
):
from
pillar.flask_extra
import
HashedPathConverter
hpc
=
HashedPathConverter
({})
with
self
.
app
.
app_context
():
self
.
assertEqual
(
'/path/to/file.min.abcd1234.js'
,
hpc
.
to_url
(
'/path/to/file.min.js'
))
self
.
assertEqual
(
'/path/to/file.abcd1234.js'
,
hpc
.
to_url
(
'/path/to/file.js'
))
self
.
assertEqual
(
'/path/to/file'
,
hpc
.
to_url
(
'/path/to/file'
))
self
.
assertEqual
(
''
,
hpc
.
to_url
(
''
))
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Sat, Aug 20, 9:11 AM (2 d)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
39/69/76da3aff080b265ca44a7157c17b
Attached To
rPS Pillar
Event Timeline
Log In to Comment