Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
AE UTBM
Sith
Commits
5ae7d10e
Verified
Commit
5ae7d10e
authored
May 14, 2019
by
Sli
Browse files
Add unit tests for student cards and fix edge cases
parent
e1ffdbe3
Changes
4
Hide whitespace changes
Inline
Side-by-side
core/management/commands/populate.py
View file @
5ae7d10e
...
@@ -48,7 +48,7 @@ from accounting.models import (
...
@@ -48,7 +48,7 @@ from accounting.models import (
from
core.utils
import
resize_image
from
core.utils
import
resize_image
from
club.models
import
Club
,
Membership
from
club.models
import
Club
,
Membership
from
subscription.models
import
Subscription
from
subscription.models
import
Subscription
from
counter.models
import
Customer
,
ProductType
,
Product
,
Counter
,
Selling
from
counter.models
import
Customer
,
ProductType
,
Product
,
Counter
,
Selling
,
StudentCard
from
com.models
import
Sith
,
Weekmail
,
News
,
NewsDate
from
com.models
import
Sith
,
Weekmail
,
News
,
NewsDate
from
election.models
import
Election
,
Role
,
Candidature
,
ElectionList
from
election.models
import
Election
,
Role
,
Candidature
,
ElectionList
from
forum.models
import
Forum
,
ForumTopic
from
forum.models
import
Forum
,
ForumTopic
...
@@ -870,6 +870,7 @@ Welcome to the wiki page!
...
@@ -870,6 +870,7 @@ Welcome to the wiki page!
start
=
s
.
subscription_start
,
start
=
s
.
subscription_start
,
)
)
s
.
save
()
s
.
save
()
StudentCard
(
uid
=
"9A89B82018B0A0"
,
customer
=
sli
.
customer
).
save
()
# Adding subscription for Krophil
# Adding subscription for Krophil
s
=
Subscription
(
s
=
Subscription
(
member
=
User
.
objects
.
filter
(
pk
=
krophil
.
pk
).
first
(),
member
=
User
.
objects
.
filter
(
pk
=
krophil
.
pk
).
first
(),
...
...
counter/models.py
View file @
5ae7d10e
...
@@ -757,7 +757,7 @@ class StudentCard(models.Model):
...
@@ -757,7 +757,7 @@ class StudentCard(models.Model):
def
can_create
(
customer
,
user
):
def
can_create
(
customer
,
user
):
return
user
.
pk
==
customer
.
user
.
pk
or
user
.
is_board_member
or
user
.
is_root
return
user
.
pk
==
customer
.
user
.
pk
or
user
.
is_board_member
or
user
.
is_root
def
can_edit
(
self
,
obj
):
def
can_
be_
edit
ed_by
(
self
,
obj
):
if
isinstance
(
obj
,
User
):
if
isinstance
(
obj
,
User
):
return
StudentCard
.
can_create
(
self
.
customer
,
obj
)
return
StudentCard
.
can_create
(
self
.
customer
,
obj
)
return
False
return
False
...
...
counter/tests.py
View file @
5ae7d10e
...
@@ -142,3 +142,195 @@ class BarmanConnectionTest(TestCase):
...
@@ -142,3 +142,195 @@ class BarmanConnectionTest(TestCase):
self
.
assertFalse
(
self
.
assertFalse
(
'<li><a href="/user/1/">S' Kia</a></li>'
in
str
(
response_get
.
content
)
'<li><a href="/user/1/">S' Kia</a></li>'
in
str
(
response_get
.
content
)
)
)
class
StudentCardTest
(
TestCase
):
"""
Tests for adding and deleting Stundent Cards
Test that an user can be found with it's student card
"""
def
setUp
(
self
):
call_command
(
"populate"
)
self
.
krophil
=
User
.
objects
.
get
(
username
=
"krophil"
)
self
.
sli
=
User
.
objects
.
get
(
username
=
"sli"
)
self
.
counter
=
Counter
.
objects
.
filter
(
id
=
2
).
first
()
# Auto login on counter
self
.
client
.
post
(
reverse
(
"counter:login"
,
args
=
[
self
.
counter
.
id
]),
{
"username"
:
"krophil"
,
"password"
:
"plop"
},
)
def
test_search_user_with_student_card
(
self
):
response
=
self
.
client
.
post
(
reverse
(
"counter:details"
,
args
=
[
self
.
counter
.
id
]),
{
"code"
:
"9A89B82018B0A0"
},
)
self
.
assertEqual
(
response
.
url
,
reverse
(
"counter:click"
,
kwargs
=
{
"counter_id"
:
self
.
counter
.
id
,
"user_id"
:
self
.
sli
.
id
},
),
)
def
test_add_student_card_from_counter
(
self
):
response
=
self
.
client
.
post
(
reverse
(
"counter:click"
,
kwargs
=
{
"counter_id"
:
self
.
counter
.
id
,
"user_id"
:
self
.
sli
.
id
},
),
{
"student_card_uid"
:
"8B90734A802A8F"
,
"action"
:
"add_student_card"
},
)
self
.
assertContains
(
response
,
text
=
"8B90734A802A8F"
)
def
test_add_student_card_from_counter_fail
(
self
):
response
=
self
.
client
.
post
(
reverse
(
"counter:click"
,
kwargs
=
{
"counter_id"
:
self
.
counter
.
id
,
"user_id"
:
self
.
sli
.
id
},
),
{
"student_card_uid"
:
"8B90734A802A8"
,
"action"
:
"add_student_card"
},
)
self
.
assertContains
(
response
,
text
=
"Ce n'est pas un UID de carte étudiante valide"
)
response
=
self
.
client
.
post
(
reverse
(
"counter:click"
,
kwargs
=
{
"counter_id"
:
self
.
counter
.
id
,
"user_id"
:
self
.
sli
.
id
},
),
{
"student_card_uid"
:
"8B90734A802A8FA"
,
"action"
:
"add_student_card"
},
)
self
.
assertContains
(
response
,
text
=
"Ce n'est pas un UID de carte étudiante valide"
)
def
test_delete_student_card_with_owner
(
self
):
self
.
client
.
login
(
username
=
"sli"
,
password
=
"plop"
)
self
.
client
.
post
(
reverse
(
"counter:delete_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
,
"card_id"
:
self
.
sli
.
customer
.
student_cards
.
first
().
id
,
},
)
)
self
.
assertFalse
(
self
.
sli
.
customer
.
student_cards
.
exists
())
def
test_delete_student_card_with_board_member
(
self
):
self
.
client
.
login
(
username
=
"skia"
,
password
=
"plop"
)
self
.
client
.
post
(
reverse
(
"counter:delete_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
,
"card_id"
:
self
.
sli
.
customer
.
student_cards
.
first
().
id
,
},
)
)
self
.
assertFalse
(
self
.
sli
.
customer
.
student_cards
.
exists
())
def
test_delete_student_card_with_root
(
self
):
self
.
client
.
login
(
username
=
"root"
,
password
=
"plop"
)
self
.
client
.
post
(
reverse
(
"counter:delete_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
,
"card_id"
:
self
.
sli
.
customer
.
student_cards
.
first
().
id
,
},
)
)
self
.
assertFalse
(
self
.
sli
.
customer
.
student_cards
.
exists
())
def
test_delete_student_card_fail
(
self
):
self
.
client
.
login
(
username
=
"krophil"
,
password
=
"plop"
)
response
=
self
.
client
.
post
(
reverse
(
"counter:delete_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
,
"card_id"
:
self
.
sli
.
customer
.
student_cards
.
first
().
id
,
},
)
)
self
.
assertEqual
(
response
.
status_code
,
403
)
self
.
assertTrue
(
self
.
sli
.
customer
.
student_cards
.
exists
())
def
test_add_student_card_from_user_preferences
(
self
):
# Test with owner of the card
self
.
client
.
login
(
username
=
"sli"
,
password
=
"plop"
)
self
.
client
.
post
(
reverse
(
"counter:add_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
}
),
{
"uid"
:
"8B90734A802A8F"
},
)
response
=
self
.
client
.
get
(
reverse
(
"core:user_prefs"
,
kwargs
=
{
"user_id"
:
self
.
sli
.
id
})
)
self
.
assertContains
(
response
,
text
=
"8B90734A802A8F"
)
# Test with board member
self
.
client
.
login
(
username
=
"skia"
,
password
=
"plop"
)
self
.
client
.
post
(
reverse
(
"counter:add_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
}
),
{
"uid"
:
"8B90734A802A8A"
},
)
response
=
self
.
client
.
get
(
reverse
(
"core:user_prefs"
,
kwargs
=
{
"user_id"
:
self
.
sli
.
id
})
)
self
.
assertContains
(
response
,
text
=
"8B90734A802A8A"
)
# Test with root
self
.
client
.
login
(
username
=
"root"
,
password
=
"plop"
)
self
.
client
.
post
(
reverse
(
"counter:add_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
}
),
{
"uid"
:
"8B90734A802A8B"
},
)
response
=
self
.
client
.
get
(
reverse
(
"core:user_prefs"
,
kwargs
=
{
"user_id"
:
self
.
sli
.
id
})
)
self
.
assertContains
(
response
,
text
=
"8B90734A802A8B"
)
def
test_add_student_card_from_user_preferences_fail
(
self
):
self
.
client
.
login
(
username
=
"sli"
,
password
=
"plop"
)
response
=
self
.
client
.
post
(
reverse
(
"counter:add_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
}
),
{
"uid"
:
"8B90734A802A8"
},
)
self
.
assertContains
(
response
,
text
=
"Cet UID est invalide"
)
response
=
self
.
client
.
post
(
reverse
(
"counter:add_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
}
),
{
"uid"
:
"8B90734A802A8FA"
},
)
self
.
assertContains
(
response
,
text
=
"Cet UID est invalide"
)
# Test with unauthorized user
self
.
client
.
login
(
username
=
"krophil"
,
password
=
"plop"
)
response
=
self
.
client
.
post
(
reverse
(
"counter:add_student_card"
,
kwargs
=
{
"customer_id"
:
self
.
sli
.
customer
.
pk
}
),
{
"uid"
:
"8B90734A802A8F"
},
)
self
.
assertEqual
(
response
.
status_code
,
403
)
counter/views.py
View file @
5ae7d10e
...
@@ -113,8 +113,8 @@ class StudentCardForm(forms.ModelForm):
...
@@ -113,8 +113,8 @@ class StudentCardForm(forms.ModelForm):
def
clean
(
self
):
def
clean
(
self
):
cleaned_data
=
super
(
StudentCardForm
,
self
).
clean
()
cleaned_data
=
super
(
StudentCardForm
,
self
).
clean
()
uid
=
cleaned_data
.
get
(
"uid"
)
uid
=
cleaned_data
.
get
(
"uid"
,
None
)
if
not
StudentCard
.
is_valid
(
uid
):
if
not
uid
or
not
StudentCard
.
is_valid
(
uid
):
raise
forms
.
ValidationError
(
_
(
"This uid is invalid"
),
code
=
"invalid"
)
raise
forms
.
ValidationError
(
_
(
"This uid is invalid"
),
code
=
"invalid"
)
return
cleaned_data
return
cleaned_data
...
...
Write
Preview
Supports
Markdown
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