Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9345873
test_directory.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
test_directory.py
View Options
# Copyright (C) 2017 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from
unittest.mock
import
patch
from
nose.tools
import
istest
,
nottest
from
django.test
import
TestCase
from
swh.web.common.exc
import
BadInputExc
,
NotFoundExc
from
swh.web.common.utils
import
reverse
from
swh.web.common.utils
import
gen_path_info
from
swh.web.tests.testbase
import
SWHWebTestBase
from
.data.directory_test_data
import
(
stub_root_directory_sha1
,
stub_root_directory_data
,
stub_sub_directory_path
,
stub_sub_directory_data
)
class
SwhBrowseDirectoryTest
(
SWHWebTestBase
,
TestCase
):
@nottest
def
directory_view
(
self
,
root_directory_sha1
,
directory_entries
,
path
=
None
):
dirs
=
[
e
for
e
in
directory_entries
if
e
[
'type'
]
==
'dir'
]
files
=
[
e
for
e
in
directory_entries
if
e
[
'type'
]
==
'file'
]
url_args
=
{
'sha1_git'
:
root_directory_sha1
}
if
path
:
url_args
[
'path'
]
=
path
url
=
reverse
(
'browse-directory'
,
kwargs
=
url_args
)
root_dir_url
=
reverse
(
'browse-directory'
,
kwargs
=
{
'sha1_git'
:
root_directory_sha1
})
resp
=
self
.
client
.
get
(
url
)
self
.
assertEquals
(
resp
.
status_code
,
200
)
self
.
assertTemplateUsed
(
'directory.html'
)
self
.
assertContains
(
resp
,
'<a href="'
+
root_dir_url
+
'">'
+
root_directory_sha1
[:
7
]
+
'</a>'
)
self
.
assertContains
(
resp
,
'<td class="swh-directory">'
,
count
=
len
(
dirs
))
self
.
assertContains
(
resp
,
'<td class="swh-content">'
,
count
=
len
(
files
))
for
d
in
dirs
:
dir_path
=
d
[
'name'
]
if
path
:
dir_path
=
"
%s
/
%s
"
%
(
path
,
d
[
'name'
])
dir_url
=
reverse
(
'browse-directory'
,
kwargs
=
{
'sha1_git'
:
root_directory_sha1
,
'path'
:
dir_path
})
self
.
assertContains
(
resp
,
dir_url
)
for
f
in
files
:
file_path
=
"
%s
/
%s
"
%
(
root_directory_sha1
,
f
[
'name'
])
if
path
:
file_path
=
"
%s
/
%s
/
%s
"
%
(
root_directory_sha1
,
path
,
f
[
'name'
])
query_string
=
'sha1_git:'
+
f
[
'target'
]
file_url
=
reverse
(
'browse-content'
,
kwargs
=
{
'query_string'
:
query_string
},
query_params
=
{
'path'
:
file_path
})
self
.
assertContains
(
resp
,
file_url
)
path_info
=
gen_path_info
(
path
)
self
.
assertContains
(
resp
,
'<li class="swh-path">'
,
count
=
len
(
path_info
)
+
1
)
self
.
assertContains
(
resp
,
'<a href="
%s
">
%s
</a>'
%
(
root_dir_url
,
root_directory_sha1
[:
7
]))
for
p
in
path_info
:
dir_url
=
reverse
(
'browse-directory'
,
kwargs
=
{
'sha1_git'
:
root_directory_sha1
,
'path'
:
p
[
'path'
]})
self
.
assertContains
(
resp
,
'<a href="
%s
">
%s
</a>'
%
(
dir_url
,
p
[
'name'
]))
@patch
(
'swh.web.browse.utils.service'
)
@istest
def
root_directory_view
(
self
,
mock_service
):
mock_service
.
lookup_directory
.
return_value
=
\
stub_root_directory_data
self
.
directory_view
(
stub_root_directory_sha1
,
stub_root_directory_data
)
@patch
(
'swh.web.browse.utils.service'
)
@patch
(
'swh.web.browse.views.directory.service'
)
@istest
def
sub_directory_view
(
self
,
mock_directory_service
,
mock_utils_service
):
mock_utils_service
.
lookup_directory
.
return_value
=
\
stub_sub_directory_data
mock_directory_service
.
lookup_directory_with_path
.
return_value
=
\
{
'target'
:
'120c39eeb566c66a77ce0e904d29dfde42228adc'
}
self
.
directory_view
(
stub_root_directory_sha1
,
stub_sub_directory_data
,
stub_sub_directory_path
)
@patch
(
'swh.web.browse.utils.service'
)
@patch
(
'swh.web.browse.views.directory.service'
)
@istest
def
directory_request_errors
(
self
,
mock_directory_service
,
mock_utils_service
):
mock_utils_service
.
lookup_directory
.
side_effect
=
\
BadInputExc
(
'directory not found'
)
dir_url
=
reverse
(
'browse-directory'
,
kwargs
=
{
'sha1_git'
:
'1253456'
})
resp
=
self
.
client
.
get
(
dir_url
)
self
.
assertEquals
(
resp
.
status_code
,
400
)
self
.
assertTemplateUsed
(
'error.html'
)
mock_utils_service
.
lookup_directory
.
side_effect
=
\
NotFoundExc
(
'directory not found'
)
dir_url
=
reverse
(
'browse-directory'
,
kwargs
=
{
'sha1_git'
:
'1253456'
})
resp
=
self
.
client
.
get
(
dir_url
)
self
.
assertEquals
(
resp
.
status_code
,
404
)
self
.
assertTemplateUsed
(
'error.html'
)
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Fri, Jul 4, 3:34 PM (1 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3366382
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment