"""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)