def register(request): form = forms.NewUserForm() if request.POST: ensure_permissions() form = forms.NewUserForm(request.POST) role = request.POST.get('role') if form.is_valid(): username = form.cleaned_data.get('username') password = form.cleaned_data.get('password') user = User.objects.create_user(username=username, password=password) if role is not None: if have_permission(request, ['blog.can_add', 'blog.can_edit_schedule']): if role == 'is_admin' or role == 'is_cashier': if role == 'is_admin': permission = Permission.objects.get(codename='can_add') elif role == 'is_cashier': permission = Permission.objects.get(codename='can_edit_schedule') else: user.delete() return redirect('no_permission') e = UserProfile() e.profile = user e.author = request.user e.save() user.user_permissions.add(permission) user.save() if request.user.has_perm('blog.can_add') or request.user.has_perm('blog.can_edit_schedule'): return redirect('users.html') else: return redirect('login.html') perm = have_permission(request, ['blog.can_add', 'blog.can_edit_scheduele']) return render(request, 'register.html', {'form': form, 'perm': perm})
def signup(request): if request.method == 'GET': context = { 'form': UserCreationForm(), } return render(request, 'accounts/signup.html', context) else: form = UserCreationForm(request.POST) if form.is_valid(): user = form.save() profile = UserProfile( user=user, ) profile.save() login(request, user) return redirect('current user profile') context = { 'form': form, } return render(request, 'accounts/signup.html', context)
def registration(self, request, **kwargs): self.method_check(request, allowed=['post']) data = json.loads(request.body) try: email = data.get('email') password = data.get('password') confirm_password = data.get('confirm_password') phone_number = data.get('phone_number') except KeyError: return self.create_response(request, {}, HttpBadRequest) first_name = data.get('first_name', '') last_name = data.get('last_name', '') try: User.objects.get(username=email) return self.create_response(request, {}, HttpBadRequest) except ObjectDoesNotExist: if password == confirm_password: user = User.objects.create_user(email, email, password, first_name=first_name, last_name=last_name) user.save() user_profile = UserProfile(user=user, phone_number=phone_number) try: user_profile.save() except: user.delete() return self.create_response(request, {}, HttpBadRequest) return self.create_response(request, {}) else: return self.create_response(request, {}, HttpBadRequest)
def create_voters(self): res = [] for i in range(10): u = User(username='******'.format(i)) u.set_password('1234abcd') u.save() user_profile = UserProfile(user=u, gender='Male', birthdate='2019-01-13 11:39:48.792042+01:00') user_profile.save() user_id = User.objects.filter(username='******'.format(i)).values('id')[0]['id'] res.append(user_id) return res
def setUp(self): user_admin = UserProfile(username='******', sex='F', style='C', is_staff=True, is_superuser=True, is_active=True) user_admin.set_password('qwerty') user_admin.save() self.client.force_login(user_admin) super().setUp()
def register_webapp(request): ''' Input ================================== name email ''' registered = False flag = 0 response = {} response['success'] = 0 if request.method == "POST": profile = UserProfile() name = request.POST['name'] email = request.POST['email'] password = "" mobile_id = "Not avaliable" try: user = User.objects.get(username=email) except User.DoesNotExist: user = User() flag = 1 if flag == 1: user.first_name = name user.username = email user.password = password user.set_password(user.password) user.is_active = True user.save() profile.user = user profile.mobile_id = mobile_id profile.lastLoginDate = datetime.now() profile.ipaddress = get_client_ip(request) profile.save() registered = True response['success'] = 1 response['email'] = email response['id'] = user.id else: response['success'] = 1 response['message'] = "User is already present" response['email'] = user.username response['id'] = user.id user = authenticate(username=email, password=password) login(request, user) user.lastLoginDate = datetime.now() user.userprofile.loggedIn = True user.save() if len(SectionScore.objects.filter(email=user.username)) > 0: s = SectionScore.objects.filter(email=user.username)[0] s.is_download = True s.save() return JsonResponse(response)
def setUp(self): self.base = BaseTestCase() self.base.setUp() user_admin = UserProfile(username='******', sex='F', style='N', is_staff=True, is_superuser=True, is_active=True) user_admin.set_password('qwerty') user_admin.save() self.base.login(user='******', password='******')
def setUp(self): self.client = APIClient() mods.mock_query(self.client) u = UserProfile(id=1, username='******', sex='M') u.set_password('123') u.save() token= mods.post('authentication', entry_point='/login/', json={'username':'******', 'password': '******'}) #Add session token session = self.client.session session['user_token'] = token session['voter_id']=u.id session['username']=u.username session.save()
def registergoogle(request): print('google sign-in register method called') registered = False flag = 0 response = {} response['success'] = 0 if request.method == "POST": method = request.POST['method'] profile = UserProfile() name = request.POST['name'] email = request.POST['email'] print(email) password = "" if method == 'normal': password = request.POST['password'] #mobile_id=request.POST['mobile_id'] # we are doing only google sign in registration try: user = User.objects.get(username=email) except User.DoesNotExist: user = User() flag = 1 if flag == 1: user.first_name = name user.username = email user.password = password user.set_password(user.password) user.is_active = True user.save() profile.user = user #profile.mobile_id=mobile_id profile.lastLoginDate = datetime.now() profile.ipaddress = get_client_ip(request) profile.save() registered = True response['success'] = 1 response['email'] = email response['id'] = user.id else: #user.userprofile.mobile_id=mobile_id user.first_name = name #user.userprofile.save() user.save() response['success'] = 1 response['message'] = "User is already present" response['email'] = user.username response['id'] = user.id if len(SectionScore.objects.filter(email=user.username)) > 0: s = SectionScore.objects.filter(email=user.username)[0] s.is_download = True s.save() return JsonResponse(response)
def newuser(request, utype, password, email): response = {} if request.method == "POST": user = authenticate(username=email, password=password) if user is not None: if not user.is_active: print "User is registering" first_name = request.POST['first_name'] password = request.POST['password'] conpassword = request.POST['conpassword'] if password == conpassword: user.set_password(password) user.first_name = first_name user.is_active = True user.save() userp = UserProfile() userp.user = user userp.collegeName = request.POST['collegeName'] userp.phone = request.POST['telephone'] userp.description = request.POST['description'] userp.usertype = utype if request.FILES['picture']: userp.profilepicture = request.FILES['picture'] else: userp.profilepicture = 'default.jpg' userp.lastLoginDate = datetime.now() userp.save() if utype == 'Organisation': org = Organisation() org.user = user org.name = request.POST['first_name'] org.description = request.POST['description'] if request.FILES['picture']: org.logo = request.FILES['picture'] else: org.logo = 'default.jpg' org.address = request.POST['address'] org.save() return HttpResponseRedirect('/login') else: response['message'] = "Password not matching" else: response['message'] = 'User already active' else: response['message'] = 'User is not allowed to be registered' response['utype'] = utype response['password'] = password response['email'] = email return render(request, 'site/registernewuser.html', response)
def newuser(request,utype,password,email): response={} if request.method == "POST": user=authenticate(username=email, password=password) if user is not None: if not user.is_active: print "User is registering" first_name=request.POST['first_name'] password=request.POST['password'] conpassword=request.POST['conpassword'] if password == conpassword: user.set_password(password) user.first_name=first_name user.is_active=True user.save() userp=UserProfile() userp.user=user userp.collegeName=request.POST['collegeName'] userp.phone=request.POST['telephone'] userp.description=request.POST['description'] userp.usertype=utype if request.FILES['picture']: userp.profilepicture=request.FILES['picture'] else: userp.profilepicture='default.jpg' userp.lastLoginDate=datetime.now() userp.save() if utype == 'Organisation': org=Organisation() org.user=user org.name=request.POST['first_name'] org.description=request.POST['description'] if request.FILES['picture']: org.logo=request.FILES['picture'] else: org.logo='default.jpg' org.address=request.POST['address'] org.save() return HttpResponseRedirect('/login') else: response['message']="Password not matching" else: response['message']='User already active' else: response['message']='User is not allowed to be registered' response['utype']=utype response['password']=password response['email']=email return render(request,'site/registernewuser.html',response)
def setUp(self): self.client = APIClient() self.token = None mods.mock_query(self.client) user_noadmin = UserProfile(username='******', sex='M', style='N') user_noadmin.set_password('qwerty') user_noadmin.save() user_admin = UserProfile(username='******', sex='F', style='N', is_staff=True) user_admin.set_password('qwerty') user_admin.save()
def test_dashboard_details(self): #Create user 2 self.client = APIClient() mods.mock_query(self.client) u2 = UserProfile(id=2, username='******', sex='M') u2.set_password('123') u2.save() token2 = mods.post('authentication', entry_point='/login/', json={'username':'******', 'password': '******'}) #Add session token 2 session = self.client.session session['user_token'] = token2 session['voter_id'] = u2.id session.save() response = self.client.get(reverse('dashboard'), follow=True) self.assertEqual(response.status_code, 200)
def setUp(self): self.client = APIClient() self.token = None mods.mock_query(self.client) options = webdriver.ChromeOptions() options.headless = True self.driver = webdriver.Chrome(options=options) user_admin = UserProfile(username='******', sex='F', style='N', is_staff=True, is_superuser=True) user_admin.set_password('qwerty') user_admin.save() super().setUp()
def setUp(self): self.base = BaseTestCase() self.base.setUp() user_admin_superuser = UserProfile(username='******', sex='F', style='N', is_staff=True, is_superuser=True) user_admin_superuser.set_password('qwerty') user_admin_superuser.save() self.base.user_admin = user_admin_superuser options = webdriver.FirefoxOptions() options.headless = True self.driver = webdriver.Firefox(options=options) self.vars = {} self.driver.maximize_window() #For maximizing window self.driver.implicitly_wait(20) #gives an implicit wait for 20 seconds super().setUp()
def setUp(self): # Create user self.client = APIClient() mods.mock_query(self.client) u = UserProfile(id=1, username='******', sex='M') u.set_password('123') u.save() token= mods.post('authentication', entry_point='/login/', json={'username':'******', 'password': '******'}) # Add session token session = self.client.session session['user_token'] = token session.save() #Create voting #Create question 1 q1 = Question(id=1,desc='Unique option question', option_types=1) q1.save() for i in range(3): opt = QuestionOption(question=q1, option='option {}'.format(i+1)) opt.save() #Create question 2 q2 = Question(id=2,desc='Multiple option question', option_types=2) q2.save() for i in range(4): opt = QuestionOption(question=q2, option='option {}'.format(i+1)) opt.save() #Create question 3 q3 = Question(id=3,desc='Rank order scale question', option_types=3) q3.save() for i in range(5): opt = QuestionOption(question=q3, option='option {}'.format(i+1)) opt.save() v = Voting(id=1, name='Single question voting',desc='Single question voting...', points=1, start_date=timezone.now()) v.save() v.question.add(q1), v.question.add(q2), v.question.add(q3) a, _ = Auth.objects.get_or_create(url=settings.BASEURL, defaults={'me': True, 'name': 'base'}) a.save() v.auths.add(a) Voting.create_pubkey(v) #Add user to census census = Census(voting_id=v.id, voter_id=u.id) census.save()
def test_search_filter(self): date = datetime.datetime.now() voting = Voting(name='test 1', desc='r') voting.save() voting2 = Voting(name='test 2', desc='r', start_date=date) voting2.save() voting3 = Voting(name='test 3', desc='r', start_date=date, end_date=date) voting3.save() user_admin = UserProfile(username='******', sex='F', style='N', is_staff=True, is_superuser=True, is_active=True) user_admin.set_password('qwerty') user_admin.save() self.client.force_login(user_admin) response = self.client.get('/visualizer/?filter=A') votings = response.context['votings'] self.assertEqual(votings.first(), voting2) self.assertEqual(votings.count(), 1) response = self.client.get('/visualizer/?filter=S') votings = response.context['votings'] self.assertEqual(votings.first(), voting) self.assertEqual(votings.count(), 1) response = self.client.get('/visualizer/?filter=Fn') votings = response.context['votings'] self.assertEqual(votings.first(), voting3) self.assertEqual(votings.count(), 1) response = self.client.get('/visualizer/?nombre=1') votings = response.context['votings'] self.assertEqual(votings.first(), voting) self.assertEqual(votings.count(), 1) response = self.client.get('/visualizer/?nombre=3') votings = response.context['votings'] self.assertEqual(votings.first(), voting3) self.assertEqual(votings.count(), 1) self.client.logout()
def newusercap(request,utype,password,email,capadminid): print "newusercap" response={} if request.method == "POST": user=authenticate(username=email, password=password) if user is not None: if not user.is_active: print "User is registering" first_name=request.POST['first_name'] password=request.POST['password'] conpassword=request.POST['conpassword'] if password == conpassword: user.set_password(password) user.first_name=first_name user.is_active=True user.save() userp=UserProfile() userp.user=user userp.collegeName=request.POST['collegeName'] userp.phone=request.POST['telephone'] userp.description=request.POST['description'] userp.usertype=utype if request.FILES['picture']: userp.profilepicture=request.FILES['picture'] else: userp.profilepicture='default.jpg' userp.lastLoginDate=datetime.now() userp.save() cap=CapMember() cap.capadmin=User.objects.get(id=capadminid) cap.capmember=user cap.save() return HttpResponseRedirect('/login') else: response['message']="Password not matching" else: response['message']='User already active' else: response['message']='User is not allowed to be registered' response['utype']=utype response['password']=password response['email']=email response['capadminid']=capadminid response['capadmin']=User.objects.get(id=capadminid) return render(request,'site/registernewuser.html',response)
def newusercap(request, utype, password, email, capadminid): print "newusercap" response = {} if request.method == "POST": user = authenticate(username=email, password=password) if user is not None: if not user.is_active: print "User is registering" first_name = request.POST['first_name'] password = request.POST['password'] conpassword = request.POST['conpassword'] if password == conpassword: user.set_password(password) user.first_name = first_name user.is_active = True user.save() userp = UserProfile() userp.user = user userp.collegeName = request.POST['collegeName'] userp.phone = request.POST['telephone'] userp.description = request.POST['description'] userp.usertype = utype if request.FILES['picture']: userp.profilepicture = request.FILES['picture'] else: userp.profilepicture = 'default.jpg' userp.lastLoginDate = datetime.now() userp.save() cap = CapMember() cap.capadmin = User.objects.get(id=capadminid) cap.capmember = user cap.save() return HttpResponseRedirect('/login') else: response['message'] = "Password not matching" else: response['message'] = 'User already active' else: response['message'] = 'User is not allowed to be registered' response['utype'] = utype response['password'] = password response['email'] = email response['capadminid'] = capadminid response['capadmin'] = User.objects.get(id=capadminid) return render(request, 'site/registernewuser.html', response)
def test_no_political_party_voting_senate(self): u = User(username='******') u.set_password('senator') u.save() q = Question(desc='Choose') q.save() opt = QuestionOption(question=q, option='senator') opt.save() political_party = PoliticalParty(name='Partido Popular', acronym='PP', description='test', headquarters='test') political_party.save() birthdate = date(2000, 2, 28) userProfile = UserProfile(related_political_party=political_party, birthdate=birthdate, sex='F', related_user=u, province='S', employment='S') userProfile.save() v = Voting(name='test voting', question=q, tipe='S', province='S', political_party=political_party) v.save() a, _ = Auth.objects.get_or_create(url=settings.BASEURL, defaults={ 'me': True, 'name': 'test auth' }) a.save() v.auths.add(a) self.assertRaises(ValidationError, v.clean)
def create_voting_senate_primaries(self): u = User(username='******') u.set_password('123') u.save() q = Question(desc='test question') q.save() opt = QuestionOption(question=q, option='senator') opt.save() political_party = PoliticalParty(name='for senator', acronym='test', description='test', headquarters='test') political_party.save() birthdate = date(2000, 2, 28) userProfile = UserProfile(related_political_party=political_party, birthdate=birthdate, sex='F', related_user=u, province='S', employment='B') userProfile.save() v = Voting(name='test voting', question=q, tipe='SP', political_party=political_party) v.save() a, _ = Auth.objects.get_or_create(url=settings.BASEURL, defaults={ 'me': True, 'name': 'test auth' }) a.save() v.auths.add(a) return v
def update(self, instance, validated_data): profile_data = validated_data.pop('UserProfile') UserProfile = instance.UserProfile instance.email = validated_data.get('email', instance.email) instance.save() UserProfile.phone = profile_data.get('phone', UserProfile.phone) UserProfile.dob = profile_data.get('dob', UserProfile.dob) UserProfile.adhaar = profile_data.get('adhaar', UserProfile.adhaar) UserProfile.accountNumber = profile_data.get('accountNumber', UserProfile.accountNumber) UserProfile.accountIFSC = profile_data.get('accountIFSC', UserProfile.accountIFSC) UserProfile.accountBranch = profile_data.get('accountBranch', UserProfile.accountBranch) UserProfile.photo = profile_data.get('photo', UserProfile.photo) UserProfile.save() return instance
def test_get_votings_from_list_voting_admin(self): voting = Voting(name='test', desc='r') voting.save() user_admin = UserProfile(username='******', sex='F', style='N', is_staff=True, is_superuser=True, is_active=True) user_admin.set_password('qwerty') user_admin.save() self.client.force_login(user_admin) response = self.client.get('/visualizer/') votings = response.context['votings'] self.client.logout() self.assertEqual(votings.first(), voting)
def setUp(self): self.base = BaseTestCase() self.base.setUp() options = webdriver.FirefoxOptions() options.headless = True self.driver = webdriver.Firefox(options=options) self.driver.implicitly_wait(30) self.base_url = "https://www.google.com/" self.verificationErrors = [] self.accept_next_alert = False user = UserProfile(username='******', sex='M', style='N', is_staff=False, is_superuser=False, is_active=True) user.set_password('test') user.save() super().setUp()
def setUp(self): self.base = BaseTestCase() self.base.setUp() options = webdriver.ChromeOptions() options.headless = True self.driver = webdriver.Chrome(options=options) voting = Voting(name='Test Voting', desc='r') voting.save() user_admin = UserProfile(username='******', sex='F', style='N', is_staff=True, is_superuser=True, is_active=True) user_admin.set_password('decide98') user_admin.save() super().setUp()
def register(request): #if request.user.is_authenticated(): # They already have an account; don't let them register again # return render_to_response('core/register.html', {'has_account': True}) if request.method == 'GET': c = {} c.update(csrf(request)) c['form'] = RegistrationForm() return render_to_response('authentication/register.html', c) if not request.method == 'POST': return HttpResponseRedirect('/') registrationForm = RegistrationForm(request.POST) if registrationForm.is_valid(): user = registrationForm.save(commit=False) user.is_active = False user.save() profile = UserProfile( user=user, activation_key=hashlib.sha224(user.username).hexdigest()[:40], key_expires=datetime.datetime.today() + datetime.timedelta(days=2)) profile.save() host = request.META['SERVER_NAME'] email_subject = 'Welcome!' email_body = """Thanks for signing up. To activate your account, follow this link: http://%(host)s/accounts/confirm/%(hash)s""" email_body = email_body % { 'host': host, 'hash': profile.activation_key } send_mail(email_subject, email_body, 'account_creator@' + host, [user.email]) return render_to_response('authentication/register.html', {'created': True}) c = {} c.update(csrf(request)) c['form'] = registrationForm return render_to_response('authentication/register.html', c)
def register_view(request): error = None if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): username = form.cleaned_data['username'] password = form.cleaned_data['password1'] if User.objects.filter(username=username).exists(): error = 'Username already exist' else: User.objects.create_user(username=username, password=password) user = authenticate(username=username, password=password) login(request, user) profile = UserProfile(user=user, email='', preferences='') profile.save() #return HttpResponseRedirect(reverse('events:events_page', args=(1,))) установка параметров return HttpResponseRedirect(reverse('media:index')) else: form = UserCreationForm() return render(request, 'authentication/register.html', {'form': form, 'error': error})
def getEvent(request): if request.method == "POST": response = {} eventid = request.POST['id'] email = request.POST['email'] try: user = User.objects.get(username=email) except User.DoesNotExist: user = User() user.first_name = email.split('@')[0] user.username = email user.password = "" user.set_password(user.password) user.is_active = True user.save() profile = UserProfile() profile.user = user profile.mobile_id = "test12345" profile.lastLoginDate = datetime.datetime.now() profile.ipaddress = get_client_ip(request) profile.save() response['message'] = "User not found....creating user" event = Event.objects.get(id=eventid) try: uevent = UserEvents.objects.get(user=user, event=event) response['going'] = 1 except UserEvents.DoesNotExist: response['going'] = 0 try: ufeedback = EventRatings.objects.get(user=user, event=event) response['feedback'] = 1 except EventRatings.DoesNotExist: response['feedback'] = 0 cur_time = datetime.datetime.now() event_time = event.date_time if event_time < cur_time: response['started'] = 1 else: response['started'] = 0 users = UserEvents.objects.filter(event=event) ratings = EventRatings.objects.filter(event=event) response['id'] = event.id response['name'] = event.name response['date'] = event.date_time if event.club: response['club'] = event.club.name else: response['club'] = 'Club' response['contact_name_1'] = event.contact_name_1 response['contact_number_1'] = event.contact_number_1 response['contact_name_2'] = event.contact_name_2 response['contact_number_2'] = event.contact_number_2 response['venue'] = event.venue response['user_count'] = len(users) response['content'] = event.content.description response['average_rating'] = ratings.aggregate( Avg('rating'))['rating__avg'] # try: # img=open(event.content.image.path,'rb') # data=img.read() # response['image']="%s" % data.encode('base64') # except IOError: # return event.content.image.url response['image'] = get_current_site( request).domain + event.content.image.url return JsonResponse(response) return JsonResponse({'success': 0})
def setUp(self): #Create user 1 self.client = APIClient() mods.mock_query(self.client) u1 = UserProfile(id=1, username='******', sex='M') u1.set_password('123') u1.save() token1 = mods.post('authentication', entry_point='/login/', json={'username':'******', 'password': '******'}) #Add session token 1 session = self.client.session session['user_token'] = token1 session['voter_id'] = u1.id session.save() #Create voting 1 #Create question 1 q1 = Question(id=1,desc='Unique option question', option_types=1) q1.save() for i in range(3): opt = QuestionOption(question=q1, option='option {}'.format(i+1)) opt.save() #Create question 2 q2 = Question(id=2,desc='Multiple option question', option_types=2) q2.save() for i in range(4): opt = QuestionOption(question=q2, option='option {}'.format(i+1)) opt.save() #Create question 3 q3 = Question(id=3,desc='Rank order scale question', option_types=3) q3.save() for i in range(5): opt = QuestionOption(question=q3, option='option {}'.format(i+1)) opt.save() v1 = Voting(id=1, name='Single question voting',desc='Single question voting...', points=1, start_date=timezone.now()) v1.save() v1.question.add(q1), v1.question.add(q2), v1.question.add(q3) a, _ = Auth.objects.get_or_create(url=settings.BASEURL, defaults={'me': True, 'name': 'base'}) a.save() v1.auths.add(a) Voting.create_pubkey(v1) #Create voting 2 #Create question 4 q4 = Question(id=4, desc='Unique option question 2', option_types=1) q4.save() for i in range(3): opt = QuestionOption(question=q4, option='option {}'.format(i+1)) opt.save() #Create question 5 q5 = Question(id=5, desc='Multiple option question 2', option_types=2) q5.save() for i in range(4): opt = QuestionOption(question=q5, option='option {}'.format(i+1)) opt.save() #Create question 6 q6 = Question(id=6, desc='Rank order scale question 2', option_types=3) q6.save() for i in range(5): opt = QuestionOption(question=q6, option='option {}'.format(i+1)) opt.save() v2 = Voting(id=2, name='Single question voting 2',desc='Single question voting...', points=1, start_date=M_DATE, end_date=E_DATE) v2.save() v2.question.add(q4), v2.question.add(q5), v2.question.add(q6) v2.auths.add(a) Voting.create_pubkey(v2) #Add user to census census1 = Census(voting_id=v1.id, voter_id=u1.id) census1.save() census2 = Census(voting_id=v2.id, voter_id=u1.id) census2.save() #Create suggestion 1 s1 = SuggestingForm(id=1, user_id=u1.id, title="Suggesting title", suggesting_date=S_DATE, content="Suggesting content...", send_date=NOW_DATE, is_approved=True) s1.save()
def setUp(self): self.booth = BoothTests() self.booth.setUp() options = webdriver.ChromeOptions() options.headless = True self.driver = webdriver.Chrome(options=options) u = UserProfile(id=1, username='******', sex='M') u.set_password('123') u.save() token = mods.post('authentication', entry_point='/login/', json={ 'username': '******', 'password': '******' }) # Add session token session = self.client.session session['user_token'] = token session.save() q2 = Question(id=2, desc='Multiple option question', option_types=2) q2.save() for i in range(4): opt = QuestionOption(question=q2, option='option {}'.format(i + 1)) opt.save() q3 = Question(id=3, desc='Rank order scale question', option_types=3) q3.save() for i in range(5): opt = QuestionOption(question=q3, option='option {}'.format(i + 1)) opt.save() a, _ = Auth.objects.get_or_create(url=settings.BASEURL, defaults={ 'me': True, 'name': 'base' }) a.save() v2 = Voting(id=2, name='Rank question voting', desc='Rank question voting...', points=1, start_date=timezone.now()) v2.save() v2.question.add(q3) v3 = Voting(id=3, name='Multiple question voting', desc='Multiple question voting...', points=1, start_date=timezone.now()) v3.save() v3.question.add(q2) v2.auths.add(a) Voting.create_pubkey(v2) #Add user to census census = Census(voting_id=v2.id, voter_id=u.id) census.save() v3.auths.add(a) Voting.create_pubkey(v3) #Add user to census census = Census(voting_id=v3.id, voter_id=u.id) census.save() super().setUp()
class CensusTestCase(BaseTestCase): def create_voters(self): res = [] for i in range(10): u = User(username='******'.format(i)) u.set_password('1234abcd') u.save() user_profile = UserProfile(user=u, gender='Male', birthdate='2019-01-13 11:39:48.792042+01:00') user_profile.save() user_id = User.objects.filter(username='******'.format(i)).values('id')[0]['id'] res.append(user_id) return res def setUp(self): super().setUp() self.login() self.u = User(username='******') self.u.set_password('1234abcd') self.u.save() self.user_profile = UserProfile(user=self.u, gender='Male', birthdate='2019-01-13 11:39:48.792042+01:00') self.user_profile.save() voting_data = { 'name': 'test_voting_General', 'desc': 'Description example', 'question': 'I want a ', 'question_opt': ['cat', 'dog', 'horse'] } response = self.client.post('/voting/', voting_data, format='json') self.assertEqual(response.status_code, 201) user_id = User.objects.filter(username='******').values('id')[0]['id'] voting_id = Voting.objects.filter(name='test_voting_General').values('id')[0]['id'] self.voting = Voting.objects.get(id=voting_id) self.census = Census.create(voting_id=voting_id, voter_id=user_id) self.census.save() def tearDown(self): super().tearDown() self.census.delete() self.voting.delete() def test_check_vote_permissions(self): user_id = User.objects.filter(username='******').values('id')[0]['id'] voting_id = Voting.objects.filter(name='test_voting_General').values('id')[0]['id'] response = self.client.get('/census/{}/?voter_id={}'.format(1, 2), format='json') self.assertEqual(response.status_code, 401) self.assertEqual(response.json(), 'Invalid voter') response = self.client.get('/census/{}/?voter_id={}'.format(voting_id, user_id), format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), 'Valid voter') def test_list_voting(self): voting_id = Voting.objects.filter(name='test_voting_General').values('id')[0]['id'] user_id = User.objects.filter(username='******').values('id')[0]['id'] response = self.client.get('/census/?voting_id={}'.format(voting_id), format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), {'voters': [user_id]}) self.logout() response = self.client.get('/census/?voting_id={}'.format(voting_id), format='json') self.assertEqual(response.status_code, 401) def test_add_new_voters_conflict(self): user_id = User.objects.filter(username='******').values('id')[0]['id'] voting_id = Voting.objects.filter(name='test_voting_General').values('id')[0]['id'] data = {'voting_id': voting_id, 'voters': [user_id]} response = self.client.post('/census/', data, format='json') self.assertEqual(response.status_code, 409) self.login(user='******') response = self.client.post('/census/', data, format='json') self.assertEqual(response.status_code, 403) self.logout() response = self.client.post('/census/', data, format='json') self.assertEqual(response.status_code, 401) def test_add_new_voters(self): voters = self.create_voters() voting_id = Voting.objects.filter(name='test_voting_General').values('id')[0]['id'] data = {'voting_id': voting_id, 'voters': voters} response = self.client.post('/census/', data, format='json') self.assertEqual(response.status_code, 201) self.assertEqual(len(data.get('voters')), Census.objects.count() - 1) self.login(user='******') response = self.client.post('/census/', data, format='json') self.assertEqual(response.status_code, 403) self.logout() response = self.client.post('/census/', data, format='json') self.assertEqual(response.status_code, 401) def test_destroy_voter(self): user_id = User.objects.filter(username='******').values('id')[0]['id'] voting_id = Voting.objects.filter(name='test_voting_General').values('id')[0]['id'] data = {'voters': [user_id]} response = self.client.delete('/census/{}/'.format(voting_id), data, format='json') self.assertEqual(response.status_code, 204) self.assertEqual(0, Census.objects.count()) def test_create_census_with_voting_restrictions(self): # username, gender, birthdate, voting_name, voting_gender, voting_min_age, voting_max_age, expected_status_code self.login() test_data = [ ['newuser1', 'Male', '2001-12-08T00:00', 'test_voting1', 'Male', 10, 18, 201], # Positive Test ['newuser2', 'Male', '2001-12-08T00:00', 'test_voting2', 'Female', 10, 18, 400], # Negative Test - Gender ['newuser3', 'Female', '2001-12-08T00:00', 'test_voting3', 'Other', 10, 18, 400], # Negative Test - Gender ['newuser4', 'Other', '2001-12-08T00:00', 'test_voting3', 'Male', 10, 18, 400], # Negative Test - Gender ['newuser5', 'Male', '2010-12-08T00:00', 'test_voting4', 'Male', 10, 18, 400], # Negative Test - min age ['newuser6', 'Male', '1993-12-08T00:00', 'test_voting5', 'Male', 10, 18, 400], # Negative Test - max age ] for data in test_data: self.census_test_voting_restrictions(*data) def census_test_voting_restrictions(self, username, gender, birthdate, voting_name, voting_gender, voting_min_age, voting_max_age, expected_status_code): user_data = {'username': username, 'password1': '1234abcd', 'password2': '1234abcd', 'gender': gender, 'birthdate': birthdate} response = self.client.post('/authentication/signup/', user_data, format='json') self.assertEqual(response.status_code, 201) voting_data = { 'name': voting_name, 'desc': 'Description example', 'question': 'I want a ', 'question_opt': ['cat', 'dog', 'horse'] } response = self.client.post('/voting/', voting_data, format='json') self.assertEqual(response.status_code, 201) user_id = User.objects.filter(username=username).values('id')[0]['id'] voting_id = Voting.objects.filter(name=voting_name).values('id')[0]['id'] voting = Voting.objects.get(id=voting_id) voting.gender = voting_gender voting.min_age = voting_min_age voting.max_age = voting_max_age voting.save() census_data = { 'voting_id': voting_id, 'voters': [user_id] } response = self.client.post('/census/', census_data, format='json') self.assertEqual(response.status_code, expected_status_code)