Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
itminedu
okeanos-LoD
Commits
6e552206
Commit
6e552206
authored
Apr 07, 2016
by
Ioannis Tsafaras
Browse files
Merge pull request #13 from gouzouni625/review-app-upload
Add separate tests for existing project name
parents
ce933149
71a68ce7
Changes
1
Hide whitespace changes
Inline
Side-by-side
webapp/tests/test_applications.py
View file @
6e552206
...
...
@@ -110,9 +110,9 @@ class TestApplicationUpload(APITestCase):
application_id
,
self
.
application
.
name
,
self
.
application_description
)
# Test for uploading an application when all the required information are provided
# but there is already an application with the same name uploaded
.
# but there is already an application with the same name
, in the same project
uploaded
@
mock
.
patch
(
'backend.views.get_user_okeanos_projects'
)
def
test_existent_name
(
self
,
mock_get_user_okeanos_projects
):
def
test_existent_name
_on_same_project
(
self
,
mock_get_user_okeanos_projects
):
# Configure return values for mocks
mock_get_user_okeanos_projects
.
return_value
=
self
.
user_projects
...
...
@@ -139,6 +139,60 @@ class TestApplicationUpload(APITestCase):
self
.
assertEqual
(
response
.
data
[
'errors'
][
0
][
'detail'
],
CustomParseError
.
messages
[
'filename_already_exists_error'
])
# Test for uploading an application when all the required information are provided
# and there is already an application with the same name, on a different project uploaded
@
mock
.
patch
(
'backend.views.get_user_okeanos_projects'
)
@
mock
.
patch
(
'backend.views.events.create_new_application'
)
@
mock
.
patch
(
'backend.views.tasks.upload_application_to_pithos'
)
def
test_existent_name_on_other_project
(
self
,
mock_upload_application_to_pithos_task
,
mock_create_new_application_event
,
mock_get_user_okeanos_projects
):
# Configure return values for mocks.
chosen_project
=
self
.
user_projects
[
0
]
mock_get_user_okeanos_projects
.
return_value
=
self
.
user_projects
# Create an application on the database.
Application
.
objects
.
create
(
uuid
=
uuid
.
uuid4
(),
name
=
"existing_application.jar"
,
type
=
Application
.
BATCH
)
# Make a request to upload an application.
response
=
self
.
client
.
post
(
"/api/apps/"
,
{
'description'
:
self
.
application_description
,
'file'
:
self
.
application
,
'type'
:
self
.
application_type_batch
,
'project_name'
:
self
.
project_name
,
'execution_environment_name'
:
self
.
execution_environment_name
})
# Assert the structure of the response.
self
.
_assert_accepted_response_structure
(
response
)
# Assert the contents of the response.
self
.
assertEqual
(
response
.
data
[
'status'
][
'code'
],
status
.
HTTP_202_ACCEPTED
)
self
.
assertEqual
(
response
.
data
[
'status'
][
'short_description'
],
ResponseMessages
.
short_descriptions
[
'application_upload'
])
self
.
assertIsInstance
(
response
.
data
[
'data'
][
0
][
'id'
],
uuid
.
UUID
)
self
.
assertRegexpMatches
(
response
.
data
[
'data'
][
0
][
'links'
][
'self'
],
r
'^http://testserver/api/apps/([^/.]+)$'
)
# Get the id of the uploaded application.
application_id
=
response
.
data
[
'data'
][
0
][
'id'
]
# Assert that the proper tasks and views have been called.
mock_create_new_application_event
.
delay
.
\
assert_called_with
(
application_id
,
self
.
application
.
name
,
chosen_project
[
'id'
],
ApplicationViewSet
.
pithos_container
+
"_"
+
chosen_project
[
'name'
],
self
.
application_description
,
self
.
application_type_batch
,
self
.
user
,
self
.
execution_environment_name
)
mock_upload_application_to_pithos_task
.
delay
.
\
assert_called_with
(
self
.
AUTHENTICATION_URL
,
self
.
AUTHENTICATION_TOKEN
,
ApplicationViewSet
.
pithos_container
+
"_"
+
chosen_project
[
'name'
],
chosen_project
[
'id'
],
path
.
join
(
settings
.
TEMPORARY_FILE_STORAGE
,
self
.
application
.
name
),
application_id
,
self
.
application
.
name
,
self
.
application_description
)
# Test for uploading an application when no description is provided.
@
mock
.
patch
(
'backend.views.get_user_okeanos_projects'
)
@
mock
.
patch
(
'backend.views.events.create_new_application'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment