Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE3
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
5
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
7739d371
authored
Aug 16, 2022
by
Szeberényi Imre
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'testcases' into 'master'
Testcases-Janos See merge request
!11
parents
7dc0aee0
40e7df8a
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
70 additions
and
72 deletions
+70
-72
circle/common/backends.py
+1
-3
circle/common/operations.py
+1
-1
circle/common/tests/test_operations.py
+1
-1
circle/common/views.py
+4
-4
circle/dashboard/fixtures/test-vm-fixture.json
+0
-8
circle/dashboard/forms.py
+5
-5
circle/dashboard/tests/test_mockedviews.py
+26
-21
circle/dashboard/tests/test_views.py
+29
-25
circle/firewall/models.py
+1
-1
circle/vm/operations.py
+1
-1
circle/vm/tests/test_models.py
+1
-2
No files found.
circle/common/backends.py
View file @
7739d371
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
import
re
import
re
import
logging
import
logging
import
sha
import
hashlib
from
django.conf
import
settings
from
django.conf
import
settings
from
djangosaml2.backends
import
Saml2Backend
as
Saml2BackendBase
from
djangosaml2.backends
import
Saml2Backend
as
Saml2BackendBase
...
@@ -43,8 +43,6 @@ class Saml2Backend(Saml2BackendBase):
...
@@ -43,8 +43,6 @@ class Saml2Backend(Saml2BackendBase):
match
=
match
.
group
()
match
=
match
.
group
()
return
'+
%04
x'
%
ord
(
match
)
return
'+
%04
x'
%
ord
(
match
)
if
isinstance
(
main_attribute
,
str
):
main_attribute
=
main_attribute
.
decode
(
'UTF-8'
)
assert
isinstance
(
main_attribute
,
str
)
assert
isinstance
(
main_attribute
,
str
)
attr
=
re
.
sub
(
r'[^\w.@-]'
,
replace
,
main_attribute
)
attr
=
re
.
sub
(
r'[^\w.@-]'
,
replace
,
main_attribute
)
max_length
=
settings
.
SAML_MAIN_ATTRIBUTE_MAX_LENGTH
max_length
=
settings
.
SAML_MAIN_ATTRIBUTE_MAX_LENGTH
...
...
circle/common/operations.py
View file @
7739d371
...
@@ -202,7 +202,7 @@ class Operation(object):
...
@@ -202,7 +202,7 @@ class Operation(object):
return
self
.
activity_name
return
self
.
activity_name
except
AttributeError
:
except
AttributeError
:
try
:
try
:
return
self
.
name
.
_proxy____args
[
0
]
# ewww!
return
self
.
name
# ewww!
except
AttributeError
:
except
AttributeError
:
raise
ImproperlyConfigured
(
raise
ImproperlyConfigured
(
"Set Operation.activity_name to an ugettext_nooped "
"Set Operation.activity_name to an ugettext_nooped "
...
...
circle/common/tests/test_operations.py
View file @
7739d371
...
@@ -34,7 +34,7 @@ class OperationTestCase(TestCase):
...
@@ -34,7 +34,7 @@ class OperationTestCase(TestCase):
with
patch
.
object
(
Operation
,
'check_precond'
):
with
patch
.
object
(
Operation
,
'check_precond'
):
with
patch
.
object
(
Operation
,
'create_activity'
)
as
create_act
:
with
patch
.
object
(
Operation
,
'create_activity'
)
as
create_act
:
try
:
try
:
op
.
async
(
system
=
True
)
op
.
_
async
(
system
=
True
)
except
AbortEx
:
except
AbortEx
:
self
.
assertTrue
(
create_act
.
called
)
self
.
assertTrue
(
create_act
.
called
)
...
...
circle/common/views.py
View file @
7739d371
...
@@ -45,10 +45,10 @@ def handler500(request):
...
@@ -45,10 +45,10 @@ def handler500(request):
logger
.
exception
(
"unhandled exception"
)
logger
.
exception
(
"unhandled exception"
)
ctx
=
get_context
(
request
,
exception
)
ctx
=
get_context
(
request
,
exception
)
try
:
try
:
resp
=
render
(
"500.html"
,
ctx
,
resp
=
render
(
request
,
"500.html"
,
ctx
,
RequestContext
(
request
)
.
flatten
())
RequestContext
(
request
)
.
flatten
())
except
:
except
:
resp
=
render
(
"500.html"
,
ctx
)
resp
=
render
(
request
,
"500.html"
,
ctx
)
resp
.
status_code
=
500
resp
.
status_code
=
500
return
resp
return
resp
...
@@ -56,6 +56,6 @@ def handler500(request):
...
@@ -56,6 +56,6 @@ def handler500(request):
def
handler403
(
request
,
*
args
,
**
argv
):
def
handler403
(
request
,
*
args
,
**
argv
):
cls
,
exception
,
traceback
=
exc_info
()
cls
,
exception
,
traceback
=
exc_info
()
ctx
=
get_context
(
request
,
exception
)
ctx
=
get_context
(
request
,
exception
)
resp
=
render
(
"403.html"
,
ctx
)
resp
=
render
(
request
,
"403.html"
,
ctx
)
resp
.
status_code
=
403
resp
.
status_code
=
403
return
resp
(
request
)
return
resp
circle/dashboard/fixtures/test-vm-fixture.json
View file @
7739d371
[
[
{
{
"pk"
:
1
,
"pk"
:
1
,
"model"
:
"sites.site"
,
"fields"
:
{
"domain"
:
"example.com"
,
"name"
:
"example.com"
}
},
{
"pk"
:
1
,
"model"
:
"vm.lease"
,
"model"
:
"vm.lease"
,
"fields"
:
{
"fields"
:
{
"suspend_interval_seconds"
:
18000
,
"suspend_interval_seconds"
:
18000
,
...
...
circle/dashboard/forms.py
View file @
7739d371
...
@@ -46,8 +46,8 @@ from django.forms.widgets import TextInput, HiddenInput
...
@@ -46,8 +46,8 @@ from django.forms.widgets import TextInput, HiddenInput
from
django.template.loader
import
render_to_string
from
django.template.loader
import
render_to_string
from
django.utils.html
import
escape
,
format_html
from
django.utils.html
import
escape
,
format_html
from
django.utils.safestring
import
mark_safe
from
django.utils.safestring
import
mark_safe
from
django.utils.t
ranslation
import
ugettex
t_lazy
from
django.utils.t
ext
import
forma
t_lazy
from
django.utils.translation
import
u
gettext_lazy
as
_
from
django.utils.translation
import
gettext_lazy
as
_
from
simplesshkey.models
import
UserKey
from
simplesshkey.models
import
UserKey
from
sizefield.widgets
import
FileSizeWidget
from
sizefield.widgets
import
FileSizeWidget
...
@@ -62,7 +62,7 @@ from vm.models import (
...
@@ -62,7 +62,7 @@ from vm.models import (
from
.models
import
Profile
,
GroupProfile
,
Message
from
.models
import
Profile
,
GroupProfile
,
Message
from
.validators
import
domain_validator
,
meta_data_validator
,
user_data_validator
from
.validators
import
domain_validator
,
meta_data_validator
,
user_data_validator
LANGUAGES_WITH_CODE
=
((
l
[
0
],
ugettext_lazy
(
l
[
1
],
" ("
,
l
[
0
],
")"
))
LANGUAGES_WITH_CODE
=
((
l
[
0
],
format_lazy
(
"{} ({})"
,
l
[
1
],
l
[
0
]
))
for
l
in
LANGUAGES
)
for
l
in
LANGUAGES
)
priority_choices
=
(
priority_choices
=
(
...
@@ -1103,7 +1103,7 @@ class VmPortRemoveForm(OperationForm):
...
@@ -1103,7 +1103,7 @@ class VmPortRemoveForm(OperationForm):
class
VmPortAddForm
(
OperationForm
):
class
VmPortAddForm
(
OperationForm
):
port
=
forms
.
IntegerField
(
required
=
True
,
label
=
_
(
'Port'
),
port
=
forms
.
IntegerField
(
required
=
True
,
label
=
_
(
'Port'
),
min_value
=
1
,
max_value
=
65535
)
min_value
=
1
,
max_value
=
65535
)
proto
=
forms
.
ChoiceField
(
initial
=
((
'tcp'
,
'tcp'
),
(
'udp'
,
'udp'
)),
proto
=
forms
.
ChoiceField
(
choices
=
((
'tcp'
,
'tcp'
),
(
'udp'
,
'udp'
)),
required
=
True
,
label
=
_
(
'Protocol'
))
required
=
True
,
label
=
_
(
'Protocol'
))
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
...
@@ -1303,7 +1303,7 @@ class TraitForm(forms.ModelForm):
...
@@ -1303,7 +1303,7 @@ class TraitForm(forms.ModelForm):
class
MyProfileForm
(
forms
.
ModelForm
):
class
MyProfileForm
(
forms
.
ModelForm
):
preferred_language
=
forms
.
ChoiceField
(
preferred_language
=
forms
.
ChoiceField
(
initial
=
LANGUAGES_WITH_CODE
,
choices
=
LANGUAGES_WITH_CODE
,
label
=
_
(
"Preferred language"
),
label
=
_
(
"Preferred language"
),
)
)
...
...
circle/dashboard/tests/test_mockedviews.py
View file @
7739d371
...
@@ -28,6 +28,7 @@ from django.http import HttpRequest, Http404, QueryDict
...
@@ -28,6 +28,7 @@ from django.http import HttpRequest, Http404, QueryDict
from
django.utils
import
baseconv
from
django.utils
import
baseconv
from
..models
import
Profile
from
..models
import
Profile
from
vm.models
import
Node
from
..views
import
InstanceActivityDetail
,
InstanceActivity
from
..views
import
InstanceActivityDetail
,
InstanceActivity
from
..views
import
vm_ops
,
vm_mass_ops
,
Instance
,
UnsubscribeFormView
from
..views
import
vm_ops
,
vm_mass_ops
,
Instance
,
UnsubscribeFormView
from
..views
import
AclUpdateView
from
..views
import
AclUpdateView
...
@@ -35,11 +36,13 @@ from .. import views
...
@@ -35,11 +36,13 @@ from .. import views
class
QuerySet
(
list
):
class
QuerySet
(
list
):
model
=
MagicMock
()
model
=
Node
def
get
(
self
,
*
args
,
**
kwargs
):
def
get
(
self
,
*
args
,
**
kwargs
):
return
self
.
pop
()
return
self
.
pop
()
def
all
(
self
):
return
self
class
ViewUserTestCase
(
unittest
.
TestCase
):
class
ViewUserTestCase
(
unittest
.
TestCase
):
...
@@ -165,14 +168,14 @@ class VmOperationViewTestCase(unittest.TestCase):
...
@@ -165,14 +168,14 @@ class VmOperationViewTestCase(unittest.TestCase):
inst
=
MagicMock
(
spec
=
Instance
)
inst
=
MagicMock
(
spec
=
Instance
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
migrate
=
Instance
.
_ops
[
'migrate'
](
inst
)
inst
.
migrate
=
Instance
.
_ops
[
'migrate'
](
inst
)
inst
.
migrate
.
async
=
MagicMock
()
inst
.
migrate
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
True
inst
.
has_level
.
return_value
=
True
form_kwargs
.
return_value
=
{
form_kwargs
.
return_value
=
{
'default'
:
100
,
'choices'
:
QuerySet
([
node
])}
'default'
:
100
,
'choices'
:
QuerySet
([
node
])}
go
.
return_value
=
inst
go
.
return_value
=
inst
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
assert
not
msg
.
error
.
called
assert
not
msg
.
error
.
called
inst
.
migrate
.
async
.
assert_called_once_with
(
inst
.
migrate
.
_
async
.
assert_called_once_with
(
to_node
=
node
,
live_migration
=
True
,
user
=
request
.
user
)
to_node
=
node
,
live_migration
=
True
,
user
=
request
.
user
)
def
test_migrate_failed
(
self
):
def
test_migrate_failed
(
self
):
...
@@ -186,14 +189,14 @@ class VmOperationViewTestCase(unittest.TestCase):
...
@@ -186,14 +189,14 @@ class VmOperationViewTestCase(unittest.TestCase):
inst
=
MagicMock
(
spec
=
Instance
)
inst
=
MagicMock
(
spec
=
Instance
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
migrate
=
Instance
.
_ops
[
'migrate'
](
inst
)
inst
.
migrate
=
Instance
.
_ops
[
'migrate'
](
inst
)
inst
.
migrate
.
async
=
MagicMock
()
inst
.
migrate
.
_
async
=
MagicMock
()
inst
.
migrate
.
async
.
side_effect
=
Exception
inst
.
migrate
.
_
async
.
side_effect
=
Exception
inst
.
has_level
.
return_value
=
True
inst
.
has_level
.
return_value
=
True
form_kwargs
.
return_value
=
{
form_kwargs
.
return_value
=
{
'default'
:
100
,
'choices'
:
QuerySet
([
node
])}
'default'
:
100
,
'choices'
:
QuerySet
([
node
])}
go
.
return_value
=
inst
go
.
return_value
=
inst
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
assert
inst
.
migrate
.
async
.
called
assert
inst
.
migrate
.
_
async
.
called
assert
msg
.
error
.
called
assert
msg
.
error
.
called
def
test_migrate_wo_permission
(
self
):
def
test_migrate_wo_permission
(
self
):
...
@@ -206,14 +209,14 @@ class VmOperationViewTestCase(unittest.TestCase):
...
@@ -206,14 +209,14 @@ class VmOperationViewTestCase(unittest.TestCase):
inst
=
MagicMock
(
spec
=
Instance
)
inst
=
MagicMock
(
spec
=
Instance
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
migrate
=
Instance
.
_ops
[
'migrate'
](
inst
)
inst
.
migrate
=
Instance
.
_ops
[
'migrate'
](
inst
)
inst
.
migrate
.
async
=
MagicMock
()
inst
.
migrate
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
True
inst
.
has_level
.
return_value
=
True
form_kwargs
.
return_value
=
{
form_kwargs
.
return_value
=
{
'default'
:
100
,
'choices'
:
QuerySet
([
node
])}
'default'
:
100
,
'choices'
:
QuerySet
([
node
])}
go
.
return_value
=
inst
go
.
return_value
=
inst
with
self
.
assertRaises
(
PermissionDenied
):
with
self
.
assertRaises
(
PermissionDenied
):
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
assert
not
inst
.
migrate
.
async
.
called
assert
not
inst
.
migrate
.
_
async
.
called
def
test_migrate_template
(
self
):
def
test_migrate_template
(
self
):
"""check if GET dialog's template can be rendered"""
"""check if GET dialog's template can be rendered"""
...
@@ -239,7 +242,7 @@ class VmOperationViewTestCase(unittest.TestCase):
...
@@ -239,7 +242,7 @@ class VmOperationViewTestCase(unittest.TestCase):
inst
.
name
=
"asd"
inst
.
name
=
"asd"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
save_as_template
=
Instance
.
_ops
[
'save_as_template'
](
inst
)
inst
.
save_as_template
=
Instance
.
_ops
[
'save_as_template'
](
inst
)
inst
.
save_as_template
.
async
=
MagicMock
()
inst
.
save_as_template
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
True
inst
.
has_level
.
return_value
=
True
go
.
return_value
=
inst
go
.
return_value
=
inst
assert
view
.
as_view
()(
request
,
pk
=
1234
)
assert
view
.
as_view
()(
request
,
pk
=
1234
)
...
@@ -256,7 +259,7 @@ class VmOperationViewTestCase(unittest.TestCase):
...
@@ -256,7 +259,7 @@ class VmOperationViewTestCase(unittest.TestCase):
inst
.
name
=
"asd"
inst
.
name
=
"asd"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
save_as_template
=
Instance
.
_ops
[
'save_as_template'
](
inst
)
inst
.
save_as_template
=
Instance
.
_ops
[
'save_as_template'
](
inst
)
inst
.
save_as_template
.
async
=
MagicMock
()
inst
.
save_as_template
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
True
inst
.
has_level
.
return_value
=
True
go
.
return_value
=
inst
go
.
return_value
=
inst
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
...
@@ -329,7 +332,7 @@ class VmMassOperationViewTestCase(unittest.TestCase):
...
@@ -329,7 +332,7 @@ class VmMassOperationViewTestCase(unittest.TestCase):
inst
=
MagicMock
(
spec
=
Instance
)
inst
=
MagicMock
(
spec
=
Instance
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
migrate
=
Instance
.
_ops
[
'migrate'
](
inst
)
inst
.
migrate
=
Instance
.
_ops
[
'migrate'
](
inst
)
inst
.
migrate
.
async
=
MagicMock
()
inst
.
migrate
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
True
inst
.
has_level
.
return_value
=
True
go
.
return_value
=
[
inst
]
go
.
return_value
=
[
inst
]
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
assert
view
.
as_view
()(
request
,
pk
=
1234
)[
'location'
]
...
@@ -408,13 +411,13 @@ class RenewViewTest(unittest.TestCase):
...
@@ -408,13 +411,13 @@ class RenewViewTest(unittest.TestCase):
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
lease
=
MagicMock
(
pk
=
99
)
inst
.
lease
=
MagicMock
(
pk
=
99
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
.
async
=
MagicMock
()
inst
.
renew
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
True
inst
.
has_level
.
return_value
=
True
go
.
return_value
=
inst
go
.
return_value
=
inst
assert
view
.
as_view
()(
request
,
pk
=
1234
)
assert
view
.
as_view
()(
request
,
pk
=
1234
)
assert
not
msg
.
error
.
called
assert
not
msg
.
error
.
called
assert
inst
.
renew
.
async
.
called_with
(
user
=
request
.
user
,
lease
=
None
)
assert
inst
.
renew
.
_
async
.
called_with
(
user
=
request
.
user
,
lease
=
None
)
assert
inst
.
renew
.
async
.
return_value
.
get
.
called
assert
inst
.
renew
.
_
async
.
return_value
.
get
.
called
# success would redirect
# success would redirect
def
test_renew_by_owner_w_param
(
self
):
def
test_renew_by_owner_w_param
(
self
):
...
@@ -427,7 +430,7 @@ class RenewViewTest(unittest.TestCase):
...
@@ -427,7 +430,7 @@ class RenewViewTest(unittest.TestCase):
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
lease
=
MagicMock
(
pk
=
99
)
inst
.
lease
=
MagicMock
(
pk
=
99
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
.
async
=
MagicMock
()
inst
.
renew
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
True
inst
.
has_level
.
return_value
=
True
go
.
return_value
=
inst
go
.
return_value
=
inst
assert
view
.
as_view
()(
request
,
pk
=
1234
)
assert
view
.
as_view
()(
request
,
pk
=
1234
)
...
@@ -441,7 +444,7 @@ class RenewViewTest(unittest.TestCase):
...
@@ -441,7 +444,7 @@ class RenewViewTest(unittest.TestCase):
inst
=
MagicMock
(
spec
=
Instance
)
inst
=
MagicMock
(
spec
=
Instance
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
.
async
=
MagicMock
()
inst
.
renew
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
False
inst
.
has_level
.
return_value
=
False
go
.
return_value
=
inst
go
.
return_value
=
inst
self
.
assertIn
(
'login'
,
self
.
assertIn
(
'login'
,
...
@@ -455,7 +458,7 @@ class RenewViewTest(unittest.TestCase):
...
@@ -455,7 +458,7 @@ class RenewViewTest(unittest.TestCase):
inst
=
MagicMock
(
spec
=
Instance
)
inst
=
MagicMock
(
spec
=
Instance
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
.
async
=
MagicMock
()
inst
.
renew
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
False
inst
.
has_level
.
return_value
=
False
go
.
return_value
=
inst
go
.
return_value
=
inst
with
self
.
assertRaises
(
PermissionDenied
):
with
self
.
assertRaises
(
PermissionDenied
):
...
@@ -470,7 +473,7 @@ class RenewViewTest(unittest.TestCase):
...
@@ -470,7 +473,7 @@ class RenewViewTest(unittest.TestCase):
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
lease
=
MagicMock
(
pk
=
99
)
inst
.
lease
=
MagicMock
(
pk
=
99
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
.
async
=
MagicMock
()
inst
.
renew
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
False
inst
.
has_level
.
return_value
=
False
go
.
return_value
=
inst
go
.
return_value
=
inst
with
self
.
assertRaises
(
PermissionDenied
):
with
self
.
assertRaises
(
PermissionDenied
):
...
@@ -481,8 +484,9 @@ class RenewViewTest(unittest.TestCase):
...
@@ -481,8 +484,9 @@ class RenewViewTest(unittest.TestCase):
view
=
vm_ops
[
'renew'
]
view
=
vm_ops
[
'renew'
]
inst
=
MagicMock
(
spec
=
Instance
,
pk
=
11
)
inst
=
MagicMock
(
spec
=
Instance
,
pk
=
11
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
lease
=
MagicMock
(
pk
=
99
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
.
async
=
MagicMock
()
inst
.
renew
.
_
async
=
MagicMock
()
key
=
view
.
get_token_url
(
inst
,
user
)
.
split
(
'?'
)[
1
]
.
split
(
'='
)[
1
]
key
=
view
.
get_token_url
(
inst
,
user
)
.
split
(
'?'
)[
1
]
.
split
(
'='
)[
1
]
request
=
FakeRequestFactory
(
GET
=
{
'k'
:
key
})
# other user!
request
=
FakeRequestFactory
(
GET
=
{
'k'
:
key
})
# other user!
...
@@ -499,8 +503,9 @@ class RenewViewTest(unittest.TestCase):
...
@@ -499,8 +503,9 @@ class RenewViewTest(unittest.TestCase):
view
=
vm_ops
[
'renew'
]
view
=
vm_ops
[
'renew'
]
inst
=
MagicMock
(
spec
=
Instance
,
pk
=
11
)
inst
=
MagicMock
(
spec
=
Instance
,
pk
=
11
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
lease
=
MagicMock
(
pk
=
99
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
.
async
=
MagicMock
()
inst
.
renew
.
_
async
=
MagicMock
()
inst
.
has_level
=
lambda
user
,
level
:
user
.
is_authenticated
inst
.
has_level
=
lambda
user
,
level
:
user
.
is_authenticated
key
=
view
.
get_token_url
(
inst
,
user
)
.
split
(
'?'
)[
1
]
.
split
(
'='
)[
1
]
key
=
view
.
get_token_url
(
inst
,
user
)
.
split
(
'?'
)[
1
]
.
split
(
'='
)[
1
]
request
=
FakeRequestFactory
(
GET
=
{
'k'
:
key
},
authenticated
=
False
)
request
=
FakeRequestFactory
(
GET
=
{
'k'
:
key
},
authenticated
=
False
)
...
@@ -536,7 +541,7 @@ class RenewViewTest(unittest.TestCase):
...
@@ -536,7 +541,7 @@ class RenewViewTest(unittest.TestCase):
inst
=
MagicMock
(
spec
=
Instance
,
pk
=
11
)
inst
=
MagicMock
(
spec
=
Instance
,
pk
=
11
)
inst
.
_meta
.
object_name
=
"Instance"
inst
.
_meta
.
object_name
=
"Instance"
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
=
Instance
.
_ops
[
'renew'
](
inst
)
inst
.
renew
.
async
=
MagicMock
()
inst
.
renew
.
_
async
=
MagicMock
()
inst
.
has_level
.
return_value
=
False
inst
.
has_level
.
return_value
=
False
key
=
view
.
get_token_url
(
inst
,
user
)
.
split
(
'?'
)[
1
]
.
split
(
'='
)[
1
]
key
=
view
.
get_token_url
(
inst
,
user
)
.
split
(
'?'
)[
1
]
.
split
(
'='
)[
1
]
with
patch
(
'dashboard.views.signing.loads'
)
as
loader
,
\
with
patch
(
'dashboard.views.signing.loads'
)
as
loader
,
\
...
...
circle/dashboard/tests/test_views.py
View file @
7739d371
...
@@ -25,14 +25,14 @@ from django.test.client import Client
...
@@ -25,14 +25,14 @@ from django.test.client import Client
from
django.contrib.auth.models
import
User
,
Group
,
Permission
from
django.contrib.auth.models
import
User
,
Group
,
Permission
from
django.contrib.auth
import
authenticate
from
django.contrib.auth
import
authenticate
from
c
ircle.c
ommon.tests.celery_mock
import
MockCeleryMixin
from
common.tests.celery_mock
import
MockCeleryMixin
from
circle.
dashboard.views
import
VmAddInterfaceView
from
dashboard.views
import
VmAddInterfaceView
from
circle.
vm.models
import
Instance
,
InstanceTemplate
,
Lease
,
Node
,
Trait
from
vm.models
import
Instance
,
InstanceTemplate
,
Lease
,
Node
,
Trait
from
circle.
vm.operations
import
(
WakeUpOperation
,
AddInterfaceOperation
,
from
vm.operations
import
(
WakeUpOperation
,
AddInterfaceOperation
,
AddPortOperation
,
RemoveInterfaceOperation
,
AddPortOperation
,
RemoveInterfaceOperation
,
DeployOperation
,
RenameOperation
)
DeployOperation
,
RenameOperation
)
from
..models
import
Profile
from
..models
import
Profile
from
circle.
firewall.models
import
Vlan
,
Host
,
VlanGroup
from
firewall.models
import
Vlan
,
Host
,
VlanGroup
from
unittest.mock
import
Mock
,
patch
from
unittest.mock
import
Mock
,
patch
from
simplesshkey.models
import
UserKey
from
simplesshkey.models
import
UserKey
...
@@ -137,7 +137,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -137,7 +137,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
inst
.
set_level
(
self
.
u2
,
'owner'
)
inst
.
set_level
(
self
.
u2
,
'owner'
)
interface_count
=
inst
.
interface_set
.
count
()
interface_count
=
inst
.
interface_set
.
count
()
with
patch
.
object
(
AddInterfaceOperation
,
'async'
)
as
_async
:
with
patch
.
object
(
AddInterfaceOperation
,
'
_
async'
)
as
_async
:
_async
.
side_effect
=
inst
.
add_interface
.
call
_async
.
side_effect
=
inst
.
add_interface
.
call
with
patch
.
object
(
VmAddInterfaceView
,
'get_form_kwargs'
,
with
patch
.
object
(
VmAddInterfaceView
,
'get_form_kwargs'
,
autospec
=
True
)
as
get_form_kwargs
:
autospec
=
True
)
as
get_form_kwargs
:
...
@@ -156,7 +156,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -156,7 +156,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
vlan
=
Vlan
.
objects
.
get
(
id
=
1
)
vlan
=
Vlan
.
objects
.
get
(
id
=
1
)
vlan
.
set_level
(
self
.
u1
,
'user'
)
vlan
.
set_level
(
self
.
u1
,
'user'
)
interface_count
=
inst
.
interface_set
.
count
()
interface_count
=
inst
.
interface_set
.
count
()
with
patch
.
object
(
AddInterfaceOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
AddInterfaceOperation
,
'
_
async'
)
as
mock_method
:
mock_method
.
side_effect
=
inst
.
add_interface
mock_method
.
side_effect
=
inst
.
add_interface
response
=
c
.
post
(
"/dashboard/vm/1/op/add_interface/"
,
response
=
c
.
post
(
"/dashboard/vm/1/op/add_interface/"
,
{
'vlan'
:
1
})
{
'vlan'
:
1
})
...
@@ -174,7 +174,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -174,7 +174,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
inst
.
save
()
inst
.
save
()
iface_count
=
inst
.
interface_set
.
count
()
iface_count
=
inst
.
interface_set
.
count
()
with
patch
.
object
(
RemoveInterfaceOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
RemoveInterfaceOperation
,
'
_
async'
)
as
mock_method
:
mock_method
.
side_effect
=
inst
.
remove_interface
mock_method
.
side_effect
=
inst
.
remove_interface
response
=
c
.
post
(
"/dashboard/vm/1/op/remove_interface/"
,
response
=
c
.
post
(
"/dashboard/vm/1/op/remove_interface/"
,
{
'interface'
:
1
})
{
'interface'
:
1
})
...
@@ -190,7 +190,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -190,7 +190,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
inst
.
add_interface
(
vlan
=
Vlan
.
objects
.
get
(
pk
=
1
),
user
=
self
.
us
)
inst
.
add_interface
(
vlan
=
Vlan
.
objects
.
get
(
pk
=
1
),
user
=
self
.
us
)
iface_count
=
inst
.
interface_set
.
count
()
iface_count
=
inst
.
interface_set
.
count
()
with
patch
.
object
(
RemoveInterfaceOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
RemoveInterfaceOperation
,
'
_
async'
)
as
mock_method
:
mock_method
.
side_effect
=
inst
.
remove_interface
mock_method
.
side_effect
=
inst
.
remove_interface
response
=
c
.
post
(
"/dashboard/vm/1/op/remove_interface/"
,
response
=
c
.
post
(
"/dashboard/vm/1/op/remove_interface/"
,
{
'interface'
:
1
})
{
'interface'
:
1
})
...
@@ -222,7 +222,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -222,7 +222,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
self
.
login
(
c
,
'user1'
)
self
.
login
(
c
,
'user1'
)
InstanceTemplate
.
objects
.
get
(
id
=
1
)
.
set_level
(
self
.
u1
,
'user'
)
InstanceTemplate
.
objects
.
get
(
id
=
1
)
.
set_level
(
self
.
u1
,
'user'
)
Vlan
.
objects
.
get
(
id
=
1
)
.
set_level
(
self
.
u1
,
'user'
)
Vlan
.
objects
.
get
(
id
=
1
)
.
set_level
(
self
.
u1
,
'user'
)
with
patch
.
object
(
DeployOperation
,
'async'
)
as
_async
:
with
patch
.
object
(
DeployOperation
,
'
_
async'
)
as
_async
:
response
=
c
.
post
(
'/dashboard/vm/create/'
,
response
=
c
.
post
(
'/dashboard/vm/create/'
,
{
'template'
:
1
,
{
'template'
:
1
,
'system'
:
"bubi"
,
'system'
:
"bubi"
,
...
@@ -234,7 +234,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -234,7 +234,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
def
test_use_permitted_template_superuser
(
self
):
def
test_use_permitted_template_superuser
(
self
):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
'superuser'
)
self
.
login
(
c
,
'superuser'
)
with
patch
.
object
(
DeployOperation
,
'async'
)
as
_async
:
with
patch
.
object
(
DeployOperation
,
'
_
async'
)
as
_async
:
response
=
c
.
post
(
'/dashboard/vm/create/'
,
response
=
c
.
post
(
'/dashboard/vm/create/'
,
{
'template'
:
1
,
{
'template'
:
1
,
'system'
:
"bubi"
,
'system'
:
"bubi"
,
...
@@ -257,7 +257,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -257,7 +257,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
tmpl
.
set_level
(
self
.
u1
,
'owner'
)
tmpl
.
set_level
(
self
.
u1
,
'owner'
)
Vlan
.
objects
.
get
(
id
=
1
)
.
set_level
(
self
.
u1
,
'user'
)
Vlan
.
objects
.
get
(
id
=
1
)
.
set_level
(
self
.
u1
,
'user'
)
kwargs
=
tmpl
.
__dict__
.
copy
()
kwargs
=
tmpl
.
__dict__
.
copy
()
kwargs
.
update
(
name
=
't1'
,
lease
=
1
,
disks
=
1
,
raw_data
=
'tst1'
)
kwargs
.
update
(
name
=
't1'
,
lease
=
1
,
disks
=
1
,
raw_data
=
'tst1'
,
parent_id
=
""
)
response
=
c
.
post
(
'/dashboard/template/1/'
,
kwargs
)
response
=
c
.
post
(
'/dashboard/template/1/'
,
kwargs
)
self
.
assertEqual
(
response
.
status_code
,
302
)
self
.
assertEqual
(
response
.
status_code
,
302
)
self
.
assertEqual
(
InstanceTemplate
.
objects
.
get
(
id
=
1
)
.
raw_data
,
self
.
assertEqual
(
InstanceTemplate
.
objects
.
get
(
id
=
1
)
.
raw_data
,
...
@@ -267,7 +267,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -267,7 +267,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
'superuser'
)
self
.
login
(
c
,
'superuser'
)
kwargs
=
InstanceTemplate
.
objects
.
get
(
id
=
1
)
.
__dict__
.
copy
()
kwargs
=
InstanceTemplate
.
objects
.
get
(
id
=
1
)
.
__dict__
.
copy
()
kwargs
.
update
(
name
=
't2'
,
lease
=
1
,
disks
=
1
,
kwargs
.
update
(
name
=
't2'
,
lease
=
1
,
disks
=
1
,
parent_id
=
""
,
raw_data
=
'<devices></devices>'
)
raw_data
=
'<devices></devices>'
)
response
=
c
.
post
(
'/dashboard/template/1/'
,
kwargs
)
response
=
c
.
post
(
'/dashboard/template/1/'
,
kwargs
)
self
.
assertEqual
(
response
.
status_code
,
302
)
self
.
assertEqual
(
response
.
status_code
,
302
)
...
@@ -312,7 +312,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -312,7 +312,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
inst
.
add_interface
(
user
=
self
.
u2
,
vlan
=
vlan
)
inst
.
add_interface
(
user
=
self
.
u2
,
vlan
=
vlan
)
host
=
Host
.
objects
.
get
(
host
=
Host
.
objects
.
get
(
interface__in
=
inst
.
interface_set
.
all
())
interface__in
=
inst
.
interface_set
.
all
())
with
patch
.
object
(
AddPortOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
AddPortOperation
,
'
_
async'
)
as
mock_method
:
mock_method
.
side_effect
=
inst
.
add_port
mock_method
.
side_effect
=
inst
.
add_port
response
=
c
.
post
(
"/dashboard/vm/1/op/add_port/"
,
{
response
=
c
.
post
(
"/dashboard/vm/1/op/add_port/"
,
{
'proto'
:
'tcp'
,
'host'
:
host
.
pk
,
'port'
:
'1337'
})
'proto'
:
'tcp'
,
'host'
:
host
.
pk
,
'port'
:
'1337'
})
...
@@ -329,7 +329,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -329,7 +329,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
interface__in
=
inst
.
interface_set
.
all
())
interface__in
=
inst
.
interface_set
.
all
())
self
.
u2
.
user_permissions
.
add
(
Permission
.
objects
.
get
(
self
.
u2
.
user_permissions
.
add
(
Permission
.
objects
.
get
(
name
=
'Can configure port forwards.'
))
name
=
'Can configure port forwards.'
))
with
patch
.
object
(
AddPortOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
AddPortOperation
,
'
_
async'
)
as
mock_method
:
mock_method
.
side_effect
=
inst
.
add_port
mock_method
.
side_effect
=
inst
.
add_port
response
=
c
.
post
(
"/dashboard/vm/1/op/add_port/"
,
{
response
=
c
.
post
(
"/dashboard/vm/1/op/add_port/"
,
{
'proto'
:
'tcp'
,
'host'
:
host
.
pk
,
'port'
:
'1337'
})
'proto'
:
'tcp'
,
'host'
:
host
.
pk
,
'port'
:
'1337'
})
...
@@ -343,7 +343,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -343,7 +343,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
inst
.
set_level
(
self
.
u2
,
'owner'
)
inst
.
set_level
(
self
.
u2
,
'owner'
)
self
.
u2
.
user_permissions
.
add
(
Permission
.
objects
.
get
(
self
.
u2
.
user_permissions
.
add
(
Permission
.
objects
.
get
(
name
=
'Can configure port forwards.'
))
name
=
'Can configure port forwards.'
))
with
patch
.
object
(
AddPortOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
AddPortOperation
,
'
_
async'
)
as
mock_method
:
mock_method
.
side_effect
=
inst
.
add_port
mock_method
.
side_effect
=
inst
.
add_port
response
=
c
.
post
(
"/dashboard/vm/1/op/add_port/"
,
{
response
=
c
.
post
(
"/dashboard/vm/1/op/add_port/"
,
{
'proto'
:
'tcp'
,
'host'
:
'9999'
,
'port'
:
'1337'
})
'proto'
:
'tcp'
,
'host'
:
'9999'
,
'port'
:
'1337'
})
...
@@ -360,10 +360,11 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -360,10 +360,11 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
inst
.
add_interface
(
user
=
self
.
u2
,
vlan
=
vlan
)
inst
.
add_interface
(
user
=
self
.
u2
,
vlan
=
vlan
)
host
=
Host
.
objects
.
get
(
host
=
Host
.
objects
.
get
(
interface__in
=
inst
.
interface_set
.
all
())
interface__in
=
inst
.
interface_set
.
all
())
#import pdb; pdb.set_trace()
self
.
u2
.
user_permissions
.
add
(
Permission
.
objects
.
get
(
self
.
u2
.
user_permissions
.
add
(
Permission
.
objects
.
get
(
name
=
'Can configure port forwards.'
))
name
=
'Can configure port forwards.'
))
port_count
=
len
(
host
.
list_ports
())
port_count
=
len
(
host
.
list_ports
())
with
patch
.
object
(
AddPortOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
AddPortOperation
,
'
_
async'
)
as
mock_method
:
mock_method
.
side_effect
=
inst
.
add_port
mock_method
.
side_effect
=
inst
.
add_port
response
=
c
.
post
(
"/dashboard/vm/1/op/add_port/"
,
{
response
=
c
.
post
(
"/dashboard/vm/1/op/add_port/"
,
{
'proto'
:
'tcp'
,
'host'
:
host
.
pk
,
'port'
:
'1337'
})
'proto'
:
'tcp'
,
'host'
:
host
.
pk
,
'port'
:
'1337'
})
...
@@ -437,7 +438,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -437,7 +438,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
def
test_unpermitted_set_name
(
self
):
def
test_unpermitted_set_name
(
self
):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
"user2"
)
self
.
login
(
c
,
"user2"
)
with
patch
.
object
(
RenameOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
RenameOperation
,
'
_
async'
)
as
mock_method
:
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
mock_method
.
side_effect
=
inst
.
rename
mock_method
.
side_effect
=
inst
.
rename
inst
.
set_level
(
self
.
u2
,
'user'
)
inst
.
set_level
(
self
.
u2
,
'user'
)
...
@@ -451,7 +452,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -451,7 +452,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
def
test_permitted_set_name
(
self
):
def
test_permitted_set_name
(
self
):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
"user2"
)
self
.
login
(
c
,
"user2"
)
with
patch
.
object
(
RenameOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
RenameOperation
,
'
_
async'
)
as
mock_method
:
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
mock_method
.
side_effect
=
inst
.
rename
mock_method
.
side_effect
=
inst
.
rename
inst
.
set_level
(
self
.
u2
,
'owner'
)
inst
.
set_level
(
self
.
u2
,
'owner'
)
...
@@ -465,7 +466,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -465,7 +466,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
"user2"
)
self
.
login
(
c
,
"user2"
)
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
with
patch
.
object
(
RenameOperation
,
'async'
)
as
mock_method
:
with
patch
.
object
(
RenameOperation
,
'
_
async'
)
as
mock_method
:
inst
.
set_level
(
self
.
u2
,
'owner'
)
inst
.
set_level
(
self
.
u2
,
'owner'
)
mock_method
.
side_effect
=
inst
.
rename
mock_method
.
side_effect
=
inst
.
rename
response
=
c
.
post
(
"/dashboard/vm/1/op/rename/"
,
response
=
c
.
post
(
"/dashboard/vm/1/op/rename/"
,
...
@@ -478,7 +479,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -478,7 +479,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
def
test_permitted_wake_up_wrong_state
(
self
):
def
test_permitted_wake_up_wrong_state
(
self
):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
"user2"
)
self
.
login
(
c
,
"user2"
)
with
patch
.
object
(
WakeUpOperation
,
'async'
)
as
mock_method
,
\
with
patch
.
object
(
WakeUpOperation
,
'
_
async'
)
as
mock_method
,
\
patch
.
object
(
Instance
.
WrongStateError
,
'send_message'
)
as
wro
:
patch
.
object
(
Instance
.
WrongStateError
,
'send_message'
)
as
wro
:
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
mock_method
.
side_effect
=
inst
.
wake_up
mock_method
.
side_effect
=
inst
.
wake_up
...
@@ -494,7 +495,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -494,7 +495,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
"user2"
)
self
.
login
(
c
,
"user2"
)
with
patch
.
object
(
Instance
,
'select_node'
,
return_value
=
None
),
\
with
patch
.
object
(
Instance
,
'select_node'
,
return_value
=
None
),
\
patch
.
object
(
WakeUpOperation
,
'async'
)
as
new_wake_up
,
\
patch
.
object
(
WakeUpOperation
,
'
_
async'
)
as
new_wake_up
,
\
patch
.
object
(
Instance
.
WrongStateError
,
'send_message'
)
as
wro
:
patch
.
object
(
Instance
.
WrongStateError
,
'send_message'
)
as
wro
:
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
inst
=
Instance
.
objects
.
get
(
pk
=
1
)
new_wake_up
.
side_effect
=
inst
.
wake_up
new_wake_up
.
side_effect
=
inst
.
wake_up
...
@@ -531,7 +532,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -531,7 +532,7 @@ class VmDetailTest(LoginMixin, MockCeleryMixin, TestCase):
self
.
login
(
c
,
"superuser"
)
self
.
login
(
c
,
"superuser"
)
instance_count
=
Instance
.
objects
.
all
()
.
count
()
instance_count
=
Instance
.
objects
.
all
()
.
count
()
with
patch
.
object
(
DeployOperation
,
'async'
)
as
_async
:
with
patch
.
object
(
DeployOperation
,
'
_
async'
)
as
_async
:
response
=
c
.
post
(
"/dashboard/vm/create/"
,
{
response
=
c
.
post
(
"/dashboard/vm/create/"
,
{
'name'
:
'vm'
,
'name'
:
'vm'
,
'amount'
:
1
,
'amount'
:
1
,
...
@@ -627,6 +628,7 @@ class NodeDetailTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -627,6 +628,7 @@ class NodeDetailTest(LoginMixin, MockCeleryMixin, TestCase):
def
test_200_superuser_node_page
(
self
):
def
test_200_superuser_node_page
(
self
):
c
=
Client
()
c
=
Client
()
#import pdb; pdb.set_trace()
self
.
login
(
c
,
'superuser'
)
self
.
login
(
c
,
'superuser'
)
response
=
c
.
get
(
'/dashboard/node/1/'
)
response
=
c
.
get
(
'/dashboard/node/1/'
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
...
@@ -828,6 +830,7 @@ class GroupCreateTest(LoginMixin, MockCeleryMixin, TestCase):
...
@@ -828,6 +830,7 @@ class GroupCreateTest(LoginMixin, MockCeleryMixin, TestCase):
c
=
Client
()
c
=
Client
()
groupnum
=
Group
.
objects
.
count
()
groupnum
=
Group
.
objects
.
count
()
self
.
login
(
c
,
'user1'
)
self
.
login
(
c
,
'user1'
)
#import pdb; pdb.set_trace()
response
=
c
.
post
(
'/dashboard/group/create/'
,
{
'name'
:
'newgroup'
})
response
=
c
.
post
(
'/dashboard/group/create/'
,
{
'name'
:
'newgroup'
})
self
.
assertEqual
(
response
.
status_code
,
403
)
self
.
assertEqual
(
response
.
status_code
,
403
)
self
.
assertEqual
(
Group
.
objects
.
count
(),
groupnum
)
self
.
assertEqual
(
Group
.
objects
.
count
(),
groupnum
)
...
@@ -1811,6 +1814,7 @@ class LeaseDetailTest(LoginMixin, TestCase):
...
@@ -1811,6 +1814,7 @@ class LeaseDetailTest(LoginMixin, TestCase):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
'superuser'
)
self
.
login
(
c
,
'superuser'
)
leases
=
Lease
.
objects
.
count
()
leases
=
Lease
.
objects
.
count
()
#import pdb; pdb.set_trace()
response
=
c
.
post
(
"/dashboard/lease/delete/1/"
)
response
=
c
.
post
(
"/dashboard/lease/delete/1/"
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
leases
,
Lease
.
objects
.
count
())
self
.
assertEqual
(
leases
,
Lease
.
objects
.
count
())
...
@@ -1900,7 +1904,7 @@ class TwoFactorTest(LoginMixin, TestCase):
...
@@ -1900,7 +1904,7 @@ class TwoFactorTest(LoginMixin, TestCase):
def
test_straight_to_2fa_as_anonymous
(
self
):
def
test_straight_to_2fa_as_anonymous
(
self
):
c
=
Client
()
c
=
Client
()
response
=
c
.
get
(
"/two-factor-login/"
,
follow
=
True
)
response
=
c
.
get
(
"/two-factor-login/"
,
follow
=
True
)
self
.
assert
Items
Equal
(
self
.
assert
Count
Equal
(
response
.
redirect_chain
,
response
.
redirect_chain
,
[(
'/'
,
302
),
[(
'/'
,
302
),
(
'/dashboard/'
,
302
),
(
'/dashboard/'
,
302
),
...
@@ -1911,7 +1915,7 @@ class TwoFactorTest(LoginMixin, TestCase):
...
@@ -1911,7 +1915,7 @@ class TwoFactorTest(LoginMixin, TestCase):
c
=
Client
()
c
=
Client
()
self
.
login
(
c
,
'user2'
)
self
.
login
(
c
,
'user2'
)
response
=
c
.
get
(
"/two-factor-login/"
,
follow
=
True
)
response
=
c
.
get
(
"/two-factor-login/"
,
follow
=
True
)
self
.
assert
Items
Equal
(
self
.
assert
Count
Equal
(
response
.
redirect_chain
,
response
.
redirect_chain
,
[(
'/'
,
302
),
[(
'/'
,
302
),
(
'/dashboard/'
,
302
)]
(
'/dashboard/'
,
302
)]
...
...
circle/firewall/models.py
View file @
7739d371
...
@@ -485,7 +485,7 @@ class Vlan(AclBase, models.Model):
...
@@ -485,7 +485,7 @@ class Vlan(AclBase, models.Model):
mask
=
int
(
IPAddress
(
tpl
%
{
"a"
:
1
,
"b"
:
1
,
"c"
:
1
,
"d"
:
1
}))
mask
=
int
(
IPAddress
(
tpl
%
{
"a"
:
1
,
"b"
:
1
,
"c"
:
1
,
"d"
:
1
}))
prefixlen
=
128
prefixlen
=
128
while
mask
%
2
==
0
:
while
mask
%
2
==
0
:
mask
/=
2
mask
/
/
=
2
prefixlen
-=
1
prefixlen
-=
1
return
(
tpl
,
prefixlen
)
return
(
tpl
,
prefixlen
)
...
...
circle/vm/operations.py
View file @
7739d371
...
@@ -35,7 +35,7 @@ from django.core.exceptions import PermissionDenied, SuspiciousOperation
...
@@ -35,7 +35,7 @@ from django.core.exceptions import PermissionDenied, SuspiciousOperation
from
django.urls
import
reverse
from
django.urls
import
reverse
from
django.db.models
import
Q
from
django.db.models
import
Q
from
django.utils
import
timezone
from
django.utils
import
timezone
from
django.utils.translation
import
ugettext
_lazy
as
_
,
ugettext_noop
from
django.utils.translation
import
ugettext
as
_
,
ugettext_noop
from
re
import
search
from
re
import
search
from
sizefield.utils
import
filesizeformat
from
sizefield.utils
import
filesizeformat
...
...
circle/vm/tests/test_models.py
View file @
7739d371
...
@@ -241,8 +241,7 @@ class InstanceActivityTestCase(TestCase):
...
@@ -241,8 +241,7 @@ class InstanceActivityTestCase(TestCase):
original_create
=
InstanceActivity
.
create
original_create
=
InstanceActivity
.
create
mocked_create
=
types
.
MethodType
(
original_create
.
__func__
,
mocked_create
=
types
.
MethodType
(
original_create
.
__func__
,
mock_instance_activity_cls
,
mock_instance_activity_cls
)
original_create
.
__self__
.
__class__
)
try
:
try
:
mocked_create
(
'test'
,
instance
,
readable_name
=
"test"
,
mocked_create
(
'test'
,
instance
,
readable_name
=
"test"
,
concurrency_check
=
False
)
concurrency_check
=
False
)
...
...
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