Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Debian New Member Process
nm.debian.org
Commits
db396a6c
Commit
db396a6c
authored
Jun 02, 2016
by
Enrico Zini
Browse files
Started testing process_add_log with mock-based tests
parent
1bfceafa
Changes
1
Hide whitespace changes
Inline
Side-by-side
process/tests/test_log.py
View file @
db396a6c
...
@@ -15,6 +15,10 @@ import uuid
...
@@ -15,6 +15,10 @@ import uuid
# TODO: list log entries, check confidentiality filter
# TODO: list log entries, check confidentiality filter
mock_ts
=
datetime
.
datetime
(
2016
,
1
,
1
,
0
,
0
,
0
)
def
mock_now
():
return
mock_ts
class
TestLog
(
ProcessFixtureMixin
,
TestCase
):
class
TestLog
(
ProcessFixtureMixin
,
TestCase
):
@
classmethod
@
classmethod
...
@@ -48,27 +52,11 @@ class TestLog(ProcessFixtureMixin, TestCase):
...
@@ -48,27 +52,11 @@ class TestLog(ProcessFixtureMixin, TestCase):
cls
.
visitor
=
None
cls
.
visitor
=
None
# if cls.am_assigned:
# pmodels.AMAssignment.objects.create(process=cls.processes.app, am=cls.ams.am, assigned_by=cls.persons["fd"], assigned_time=ts)
#else:
# cls.req_am_ok = None
# @classmethod
# def __add_extra_tests__(cls):
# visitors = [None, "pending", "dc", "dc_ga", "dm", "dm_ga", "dd_nu", "dd_u", "dd_e", "dd_r", "activeam", "fd", "dam", "app", "am"]
# for visitor in visitors:
# cls._add_method(cls._test_add_log, visitor, "log_private", "add_log")
# cls._add_method(cls._test_add_log, visitor, "log_public", "add_log")
# cls._add_method(cls._test_add_log, visitor, "req_approve", "req_approve")
# cls._add_method(cls._test_add_log, visitor, "req_unapprove", "req_unapprove")
# cls._add_method(cls._test_add_log, visitor, "proc_freeze", "proc_freeze")
# cls._add_method(cls._test_add_log, visitor, "proc_unfreeze", "proc_unfreeze")
# cls._add_method(cls._test_add_log, visitor, "proc_approve", "proc_approve")
def
get_new_log
(
self
,
process
,
logtext
):
def
get_new_log
(
self
,
process
,
logtext
):
entry
=
pmodels
.
Log
.
objects
.
get
(
process
=
process
,
logtext
=
logtext
)
entry
=
pmodels
.
Log
.
objects
.
get
(
process
=
process
,
logtext
=
logtext
)
self
.
assertEqual
(
entry
.
changed_by
,
self
.
visitor
)
self
.
assertEqual
(
entry
.
changed_by
,
self
.
visitor
)
self
.
assertEqual
(
entry
.
process
,
self
.
processes
.
app
)
self
.
assertEqual
(
entry
.
process
,
self
.
processes
.
app
)
self
.
assertEqual
(
entry
.
logdate
,
mock_ts
)
return
entry
return
entry
def
assertFailed
(
self
,
response
,
logtext
):
def
assertFailed
(
self
,
response
,
logtext
):
...
@@ -81,6 +69,7 @@ class TestLog(ProcessFixtureMixin, TestCase):
...
@@ -81,6 +69,7 @@ class TestLog(ProcessFixtureMixin, TestCase):
self
.
assertEqual
(
self
.
processes
.
app
.
approved_time
,
self
.
orig_ts
)
self
.
assertEqual
(
self
.
processes
.
app
.
approved_time
,
self
.
orig_ts
)
self
.
assertEqual
(
self
.
processes
.
app
.
closed
,
self
.
orig_ts
)
self
.
assertEqual
(
self
.
processes
.
app
.
closed
,
self
.
orig_ts
)
@
patch
(
"django.utils.timezone.now"
,
new_callable
=
mock_now
)
def
test_process_log_private
(
self
):
def
test_process_log_private
(
self
):
client
=
self
.
make_test_client
(
self
.
visitor
)
client
=
self
.
make_test_client
(
self
.
visitor
)
logtext
=
uuid
.
uuid4
().
hex
logtext
=
uuid
.
uuid4
().
hex
...
@@ -97,6 +86,65 @@ class TestLog(ProcessFixtureMixin, TestCase):
...
@@ -97,6 +86,65 @@ class TestLog(ProcessFixtureMixin, TestCase):
self
.
assertFalse
(
entry
.
is_public
)
self
.
assertFalse
(
entry
.
is_public
)
self
.
assertEqual
(
entry
.
action
,
""
)
self
.
assertEqual
(
entry
.
action
,
""
)
@
patch
(
"django.utils.timezone.now"
,
new_callable
=
mock_now
)
def
test_process_log_public
(
self
):
client
=
self
.
make_test_client
(
self
.
visitor
)
logtext
=
uuid
.
uuid4
().
hex
with
patch
.
object
(
pmodels
.
Process
,
"permissions_of"
,
return_value
=
set
()):
response
=
client
.
post
(
self
.
url
,
data
=
{
"logtext"
:
logtext
,
"add_action"
:
"log_public"
})
self
.
assertFailed
(
response
,
logtext
)
with
patch
.
object
(
pmodels
.
Process
,
"permissions_of"
,
return_value
=
set
([
"add_log"
])):
response
=
client
.
post
(
self
.
url
,
data
=
{
"logtext"
:
logtext
,
"add_action"
:
"log_public"
})
self
.
assertRedirectMatches
(
response
,
self
.
processes
.
app
.
get_absolute_url
())
entry
=
self
.
get_new_log
(
self
.
processes
.
app
,
logtext
)
self
.
assertIsNone
(
entry
.
requirement
)
self
.
assertTrue
(
entry
.
is_public
)
self
.
assertEqual
(
entry
.
action
,
""
)
@
patch
(
"django.utils.timezone.now"
,
new_callable
=
mock_now
)
def
test_process_proc_freeze
(
self
):
client
=
self
.
make_test_client
(
self
.
visitor
)
logtext
=
uuid
.
uuid4
().
hex
with
patch
.
object
(
pmodels
.
Process
,
"permissions_of"
,
return_value
=
set
()):
response
=
client
.
post
(
self
.
url
,
data
=
{
"logtext"
:
logtext
,
"add_action"
:
"proc_freeze"
})
self
.
assertFailed
(
response
,
logtext
)
with
patch
.
object
(
pmodels
.
Process
,
"permissions_of"
,
return_value
=
set
([
"proc_freeze"
])):
response
=
client
.
post
(
self
.
url
,
data
=
{
"logtext"
:
logtext
,
"add_action"
:
"proc_freeze"
})
self
.
assertRedirectMatches
(
response
,
self
.
processes
.
app
.
get_absolute_url
())
entry
=
self
.
get_new_log
(
self
.
processes
.
app
,
logtext
)
self
.
assertIsNone
(
entry
.
requirement
)
self
.
assertTrue
(
entry
.
is_public
)
self
.
assertEqual
(
entry
.
action
,
"proc_freeze"
)
self
.
process
.
app
.
refresh_from_db
()
self
.
assertEqual
(
self
.
processes
.
app
.
frozen_by
,
self
.
visitor
)
self
.
assertEqual
(
self
.
processes
.
app
.
frozen_time
,
self
.
orig_ts
)
self
.
assertEqual
(
self
.
processes
.
app
.
approved_by
,
self
.
persons
.
fd
)
self
.
assertEqual
(
self
.
processes
.
app
.
approved_time
,
self
.
orig_ts
)
self
.
assertEqual
(
self
.
processes
.
app
.
closed
,
self
.
orig_ts
)
# if cls.am_assigned:
# pmodels.AMAssignment.objects.create(process=cls.processes.app, am=cls.ams.am, assigned_by=cls.persons["fd"], assigned_time=ts)
#else:
# cls.req_am_ok = None
# @classmethod
# def __add_extra_tests__(cls):
# visitors = [None, "pending", "dc", "dc_ga", "dm", "dm_ga", "dd_nu", "dd_u", "dd_e", "dd_r", "activeam", "fd", "dam", "app", "am"]
# for visitor in visitors:
# cls._add_method(cls._test_add_log, visitor, "log_private", "add_log")
# cls._add_method(cls._test_add_log, visitor, "log_public", "add_log")
# cls._add_method(cls._test_add_log, visitor, "req_approve", "req_approve")
# cls._add_method(cls._test_add_log, visitor, "req_unapprove", "req_unapprove")
# cls._add_method(cls._test_add_log, visitor, "proc_freeze", "proc_freeze")
# cls._add_method(cls._test_add_log, visitor, "proc_unfreeze", "proc_unfreeze")
# cls._add_method(cls._test_add_log, visitor, "proc_approve", "proc_approve")
# def _test_add_log(self, visitor, action, perm):
# def _test_add_log(self, visitor, action, perm):
# if visitor == "am" and not self.has_am: return
# if visitor == "am" and not self.has_am: return
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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