90 lines
3.8 KiB
Python
90 lines
3.8 KiB
Python
"""File containing Member app tests."""
|
|
|
|
from django.test import TestCase, Client
|
|
from django.contrib.auth.models import User
|
|
from members.management.commands.createsahkopiikkiuser import Command as SahkopiikkiCommand
|
|
from members.models import Member
|
|
from rest_framework.authtoken.models import Token
|
|
|
|
import logging
|
|
|
|
|
|
class MemberRegisterTestCase(TestCase):
|
|
"""Tests member registration."""
|
|
|
|
def setUp(self):
|
|
"""Setup testing environment by creating member and admin."""
|
|
memb = Member.objects.create(first_name="Tidus", last_name="Tester")
|
|
username, password = 'test_admin', 'password123'
|
|
test_admin = User.objects.create_superuser(
|
|
username, 'myemail@test.com', password)
|
|
self.c = Client()
|
|
self.c.login(username=username, password=password)
|
|
|
|
sc = SahkopiikkiCommand()
|
|
sc.handle()
|
|
|
|
def test_member_created(self):
|
|
"""Test member creation."""
|
|
exists = Member.objects.filter(first_name="Tidus").exists()
|
|
self.assertTrue(exists)
|
|
|
|
def test_import_csv_single_line(self):
|
|
"""Test csv import only with single line in csv file."""
|
|
data = 'Teppo, Tulppu, teppo@tulppu.fi, Ankkalinna, 0, 0'
|
|
response = self.c.post('/members/import_csv', {'textarea': data}, follow=True)
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
def test_import_csv_multi_line(self):
|
|
"""Test csv import with multilined csv."""
|
|
data = ('Teppo, Tulppu, teppo@tulppu.fi, Ankkalinna, 0, 0\n'
|
|
'Reiska, Remontti, remontti@reiska.fi, Värisilmä, 1, 1')
|
|
|
|
response = self.c.post('/members/import_csv', {'textarea': data}, follow=True)
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
def test_autocomplete_search_found(self):
|
|
"""Test member autocomplete search"""
|
|
search_terms = 'Tidus'
|
|
response = self.c.get('/members/member-autocomplete?q={}'.format(search_terms), follow=True)
|
|
results = response.json()['results']
|
|
self.assertEqual(len(results), 1)
|
|
|
|
def test_autocomplete_search_not_found(self):
|
|
"""Test member autocomplete search"""
|
|
search_terms = 'Notfound'
|
|
response = self.c.get('/members/member-autocomplete?q={}'.format(search_terms), follow=True)
|
|
results = response.json()['results']
|
|
self.assertEqual(len(results), 0)
|
|
|
|
def test_sahkopiikki_check_by_email_not_found(self):
|
|
"""Test if sähköpiikki auth and search work"""
|
|
email = 'teppo@tulppu.fi'
|
|
wrong_email = 'asd@asd.fi'
|
|
Member.objects.create(email=email, first_name='Teppo', last_name='Tulppu')
|
|
token = Token.objects.get(user__username='sahkopiikki').key
|
|
self.c.defaults['HTTP_AUTHORIZATION'] = 'Token ' + token
|
|
|
|
response = self.c.get('/members/check?email={}'.format(wrong_email), follow=True)
|
|
self.assertEqual(response.json()['exists'], False)
|
|
|
|
def test_sahkopiikki_check_by_email_found(self):
|
|
"""Test if sähköpiikki auth and search work"""
|
|
email = 'teppo@tulppu.fi'
|
|
Member.objects.create(email=email, first_name='Teppo', last_name='Tulppu')
|
|
token = Token.objects.get(user__username='sahkopiikki').key
|
|
self.c.defaults['HTTP_AUTHORIZATION'] = 'Token ' + token
|
|
|
|
response = self.c.get('/members/check?email={}'.format(email), follow=True)
|
|
self.assertEqual(response.json()['exists'], True)
|
|
|
|
def test_sahkopiikki_check_by_email_forbidden(self):
|
|
"""Test if sähköpiikki auth and search work"""
|
|
email = 'teppo@tulppu.fi'
|
|
Member.objects.create(email=email, first_name='Teppo', last_name='Tulppu')
|
|
token = Token.objects.get(user__username='sahkopiikki').key
|
|
self.c.defaults['HTTP_AUTHORIZATION'] = 'Token ' + token + 'DERP'
|
|
|
|
response = self.c.get('/members/check?email={}'.format(email), follow=True)
|
|
self.assertEqual(response.status_code, 401)
|