def testUpdateUserLastName(self): User.add("user1", "passwd", '*****@*****.**', 'User1', 'One') u = User.getByUsername("user1") self.assertEqual(u.lastname, 'One') u.updateUserLastname('Two') u = User.getByUsername("user1") self.assertEqual(u.lastname, 'Two')
def basic(self, email="*****@*****.**", commit=False): username = email.split("@")[0] user = User(username=username, email=email) if commit: Profile.objects.create(user=user) user.save() return user
def PasswordRecoverView(request): if request.method == 'GET': # GET METHOD: Aca envio el formulario de recuperacion de contrasenia cookie = request.get_signed_cookie(key='lpwd_ok', default=None) if cookie is None: return render_to_response('passwd_recover.html',{},RequestContext(request)) else: information = {} information['username'] = cookie.split('|')[0] information['email'] = cookie.split('|')[1] return render_to_response('passwd_recover_confirm.html',information,RequestContext(request)) elif request.method == 'POST': information = {} information['username'] = request.POST.get('username', None) if not User.isValidUsername(information['username']): information['error'] = 'Por favor ingrese el nombre de usuario correctamente' else: user = User.getByUsername(information['username']) if user is None: information['error'] = 'El nombre de usuario especificado no existe' else: information['email'] = user.email; response = redirect('/passwd_recover') #Redirect to confirmation Crypt.set_secure_cookie(response,'lpwd_ok',information['username']+ '|' + information['email'] , expires=False, time=7200) sendRecoveryEmail(user); return response return render_to_response('passwd_recover.html',information,RequestContext(request)) else: raise PermissionDenied
def testUsersCreation(self): u = User.add("user1", "passwd", '*****@*****.**') U = User.objects.filter(username="******").get() self.assertEqual(u, U) u2 = User.add("user2", 'passwd', '*****@*****.**') U = User.objects.filter(username="******").get() self.assertEqual(u2, U)
def testUsersCreation(self): u = User.add("user1","passwd",'*****@*****.**') U = User.objects.filter(username = "******").get() self.assertEqual(u, U) u2 = User.add("user2", 'passwd','*****@*****.**') U = User.objects.filter(username = "******").get() self.assertEqual(u2, U)
def testUpdateUserLastName(self): User.add("user1","passwd",'*****@*****.**','User1','One') u = User.getByUsername("user1") self.assertEqual(u.lastname, 'One') u.updateUserLastname('Two') u = User.getByUsername("user1") self.assertEqual(u.lastname, 'Two')
def testUpdateUserEmail(self): User.add("user1","passwd",'*****@*****.**','User1','One') u = User.getByUsername("user1") self.assertEqual(u.email, '*****@*****.**') u.updateUserEmail('*****@*****.**') u = User.getByUsername("user1") self.assertEqual(u.email, '*****@*****.**')
def testUpdateUserEmail(self): User.add("user1", "passwd", '*****@*****.**', 'User1', 'One') u = User.getByUsername("user1") self.assertEqual(u.email, '*****@*****.**') u.updateUserEmail('*****@*****.**') u = User.getByUsername("user1") self.assertEqual(u.email, '*****@*****.**')
def send_xlm_vault_transaction(user, destination, amount): from stellar_base.transaction import Transaction wallet = VaultWallet.objects.get(username=user, name="xlm") User = Keypair.from_seed(wallet.private) horizon = horizon_testnet() asset = Asset.native() op = Payment({ 'destination': destination, 'asset': asset, 'amount': amount }) msg = TextMemo('From test net !') sequence = horizon.account(User.address().decode('utf-8')).get('sequence') tx = Transaction( source=User.address().decode(), opts={ 'sequence': sequence, 'memo': msg, 'operations': [ op, ], }, ) try: envelope = Te(tx=tx, opts={"network_id": "TESTNET"}) envelope.sign(User) xdr = envelope.xdr() response = horizon.submit(xdr) return response['hash'] except: return {"error": ""}
def SignUpView(request): if request.method == 'GET': # GET METHOD: Aca envio el formulario de creacion de usuario return render_to_response('signup.html',{},RequestContext(request)) elif request.method == 'POST': # POST METHOD: Aca valido la informacion de creacion de usuario information = {} valid = True # Obtengo la informacon ingresada information['username'] = request.POST.get('username', '') password = request.POST.get('password', '') vpassword = request.POST.get('vpassword', '') information['email'] = request.POST.get('email', '') information['name'] = request.POST.get('name', '') information['lastname'] = request.POST.get('lastname', '') information['country'] = request.POST.get('country', '') leave_open = request.POST.get('remember',None) # Valido los datos. if not User.isValidUsername(information['username']): # Marco el error de username invaludo valid = False information['username_error'] = 'El nombre de usuario no es valido' elif not User.isValidPassword(password): # Marco el error de password invaludo valid = False information['password'] = '' information['password_error'] = 'La clave no es valida' elif password != vpassword: # Marco el error de passwords distintas valid = False information['vpassword'] = '' information['password_error'] = 'Las claves no coinciden' elif not User.isValidEmail(information['email']): # Marco el error de password invaludo valid = False information['email_error'] = 'El email ingresado no es valido' else: user = User.add(information['username'],password,information['email'],information['name'], information['lastname']); if user == None: # Marco el error de usuario ya existente valid = False information['username_error'] = 'El usuario ya existe. Ingrese otro' if valid == False: # Hubo un error al crear el usuario. Vuelvo a enviar el formulario de creacion con los errores respectivos return render_to_response('signup.html',information ,RequestContext(request)) else: # Se creo un usuario, redirijo pero seteo la cookie para identificar response = redirect('/') response.set_signed_cookie('user_id', information['username']) return response else: raise PermissionDenied
def SignUpAPI(request): if request.method == 'GET': # GET METHOD: Aca envio el formulario de creacion de usuario return render_to_response('signup.html',{},RequestContext(request)) elif request.method == 'POST': # POST METHOD: Aca valido la informacion de creacion de usuario information = {} # Obtengo la informacon ingresada information['username'] = request.POST.get('username', '') password = request.POST.get('password', '') vpassword = request.POST.get('vpassword', '') information['email'] = request.POST.get('email', '') information['name'] = request.POST.get('name', '') information['lastname'] = request.POST.get('lastname', '') information['country'] = request.POST.get('country', '') information['error_code'] = 0 # NO ERROR! leave_open = request.POST.get('remember',None) # Valido los datos. if not User.isValidUsername(information['username']): information['error_code'] = 1 # ERROR NOMBRE DE USUARIO INVALIDO information['error_description'] = 'El nombre de usuario no es valido' elif not User.isValidPassword(password): # Marco el error de password invaludo information['error_code'] = 2 # ERROR CLAVE INVALIDA information['error_description'] = 'La clave no es valida' elif password != vpassword: # Marco el error de passwords distintas information['error_code'] = 3 # ERROR CLAVES NO SON IDENTICAS information['error_description'] = 'Las claves no coinciden' elif not User.isValidEmail(information['email']): # Marco el error de password invaludo information['error_code'] = 4 # ERROR EMAIL INVALIDO information['error_description'] = 'El email ingresado no es valido' else: user = User.add(information['username'],password,information['email'],information['name'], information['lastname']); if user == None: # Marco el error de usuario ya existente information['error_code'] = 5 # ERROR USUARIO YA EXISTE information['error_description'] = 'El usuario ya existe. Ingrese otro' if information['error_code'] != 0: # Hubo un error al crear el usuario. Envio el diccionario en formato json return api.render_to_json(information); else: # Se creo un usuario, redirijo pero seteo la cookie para identificar response = redirect('/') response.set_signed_cookie('user_id', information['username']) return response else: raise PermissionDenied
def PasswordRecoverFormView(request, username): # GET METHOD: Aca envio el formulario para el cambio de la contrasenia if request.method == 'GET': cookie = request.get_signed_cookie(key='lpwd_ok', default=None) if cookie is None: return redirect('/') else: # Encontro una cookie valida. Renderiza el formulario de cambio de clave information = {} information['username'] = cookie.split('|')[0] information['email'] = cookie.split('|')[1] if username != information['username']: return redirect('/') else: return render_to_response('passwd_recover_form.html',information,RequestContext(request)) elif request.method == 'POST': # POST METHOD: Realizo la validacion de los datos ingresados y cambio la contrasenia cookie = request.get_signed_cookie(key='lpwd_ok', default=None) if cookie is None: return redirect('/') else: information = {} information['username'] = cookie.split('|')[0] password = request.POST.get('password', '') vpassword = request.POST.get('vpassword', '') valid = True if not User.isValidPassword(password): # Marco el error de password invaludo valid = False information['error'] = 'La clave no es valida' elif password != vpassword: # Marco el error de passwords distintas valid = False information['error'] = 'Las claves no coinciden' user = User.getByUsername(information['username']) if user is None: # Marco el error de usuario inexistente valid = False information['error'] = 'El usuario no existe' if not valid: # Hubo errores return render_to_response('passwd_recover_form.html',information,RequestContext(request)) else: # TODO OK!! user.updateUserPassword(password) response = redirect('/signup') response.delete_cookie('lpwd_ok') return response else: raise PermissionDenied
def testUsernameValidation(self): self.assertTrue(User.isValidUsername('abcdef12345_ghijk678')) #Normal characters self.assertTrue(User.isValidUsername('abcdef12345-ghijk678')) #Normal characters self.assertTrue(User.isValidUsername('abcdef1_345_ghijk678')) #Two Undercords self.assertTrue(User.isValidUsername('abcdef1-345-ghijk678')) #Two cords self.assertTrue(User.isValidUsername('123')) #ThreeChars self.assertTrue(User.isValidUsername('12345678901234567890')) #TwentyChars self.assertFalse(User.isValidUsername('')) #Empty self.assertFalse(User.isValidUsername('12')) #TwoChars self.assertFalse(User.isValidUsername('123456789012345678901')) #TwentyOneChars self.assertFalse(User.isValidUsername('randomchars++=?')) #Rare Characters
def test_update_leaderboard_game(status_mock): game = game_factory.basic() snakes = snake_factory.basic(n=8, commit=True) user_snakes = [UserSnake(snake=s, user=User()) for s in snakes] for s in user_snakes: s.save() UserSnakeLeaderboard.objects.get_or_create(user_snake=s) game.engine_id = str(uuid.uuid4()) game.snakes = [{'id': snake.id, 'name': snake.name, 'url': snake.url} for snake in snakes] game.is_leaderboard_game = True game.create() game_snakes = GameSnake.objects.filter(game_id=game.id) snakes_dict = {snake.id: {'death': 'starvation', 'turn': random.randint(1, 100)} for snake in game_snakes} snakes_dict[game_snakes[0].id]['death'] = '' snakes_dict[game_snakes[0].id]['turn'] = 125 snakes_dict[game_snakes[1].id]['turn'] = 125 status_mock.return_value = { 'status': Game.Status.COMPLETE, 'turn': 125, 'snakes': snakes_dict } GameStatusJob().run() lb = UserSnakeLeaderboard.objects.all()[0] assert lb.mu is not None assert lb.sigma is not None
def testUserValidation(self): User.add("user1","passwd",'*****@*****.**') User.add("user2","passwd2",'*****@*****.**') result = User.isValidLogin("user1","passwd") self.assertEqual(result, True) result = User.isValidLogin("user1","passwd2") self.assertEqual(result, False) result = User.isValidLogin("user2","passwd") self.assertEqual(result, False) result = User.isValidLogin("user2","passwd2") self.assertEqual(result, True) result = User.isValidLogin("user","passwd5") self.assertEqual(result, False)
def testUserValidation(self): User.add("user1", "passwd", '*****@*****.**') User.add("user2", "passwd2", '*****@*****.**') result = User.isValidLogin("user1", "passwd") self.assertEqual(result, True) result = User.isValidLogin("user1", "passwd2") self.assertEqual(result, False) result = User.isValidLogin("user2", "passwd") self.assertEqual(result, False) result = User.isValidLogin("user2", "passwd2") self.assertEqual(result, True) result = User.isValidLogin("user", "passwd5") self.assertEqual(result, False)
def testUsernameValidation(self): self.assertTrue( User.isValidUsername('abcdef12345_ghijk678')) #Normal characters self.assertTrue( User.isValidUsername('abcdef12345-ghijk678')) #Normal characters self.assertTrue( User.isValidUsername('abcdef1_345_ghijk678')) #Two Undercords self.assertTrue( User.isValidUsername('abcdef1-345-ghijk678')) #Two cords self.assertTrue(User.isValidUsername('123')) #ThreeChars self.assertTrue( User.isValidUsername('12345678901234567890')) #TwentyChars self.assertFalse(User.isValidUsername('')) #Empty self.assertFalse(User.isValidUsername('12')) #TwoChars self.assertFalse( User.isValidUsername('123456789012345678901')) #TwentyOneChars self.assertFalse( User.isValidUsername('randomchars++=?')) #Rare Characters
def BaseView(request): if request.method == 'GET': information = {} information['login'] = True username = request.get_signed_cookie('user_id','') information['user'] = User.getByUsername(username) if information['user'] is None: information['login'] = False return render_to_response('index.html',information,RequestContext(request)) else: pass # TODO POST METHOD
def create(self, validated_data): password2 = validated_data.pop('password2') user = User(**validated_data) user.set_password(validated_data['password']) user.save() return user
def testUsersRawCreation(self): u = User(username="******", hashedID="123452", email="*****@*****.**") u2 = User(username="******", hashedID="123452", email="*****@*****.**") u.save() U = User.objects.filter(username="******").get() self.assertEqual(u.username, U.username) self.assertNotEqual(u2.username, U.username) U = User.objects.filter(username="******") self.assertEqual(0, U.count()) u2.save() U = User.objects.filter(username="******") self.assertEqual(1, U.count())
def testEmailValidation(self): self.assertTrue(User.isValidEmail('*****@*****.**')) #Normal mail self.assertFalse(User.isValidEmail('unstring@otrostring')) #Mail without.com self.assertFalse(User.isValidEmail('unstring@otrostring.')) #Mail without com self.assertFalse(User.isValidEmail('unstring.com')) #Mail without @ self.assertFalse(User.isValidEmail('@otrostring.com')) #Mail without name self.assertFalse(User.isValidEmail('otrostring')) #Normal string
def testCompleteFields(self): User.add("user1", "passwd", '*****@*****.**', 'User1', 'One') User.add("user2", "passwd2", '*****@*****.**', 'User2', 'Two') u = User.getByUsername("user1") self.assertEqual(u.firstname, 'User1') self.assertEqual(u.lastname, 'One') u2 = User.getByUsername("user2") self.assertEqual(u2.firstname, 'User2') self.assertEqual(u2.lastname, 'Two')
def testCompleteFields(self): User.add("user1","passwd",'*****@*****.**','User1','One') User.add("user2","passwd2",'*****@*****.**','User2', 'Two') u = User.getByUsername("user1") self.assertEqual(u.firstname, 'User1') self.assertEqual(u.lastname, 'One') u2 = User.getByUsername("user2") self.assertEqual(u2.firstname, 'User2') self.assertEqual(u2.lastname, 'Two')
def testUsersRawCreation(self): u = User(username = "******", hashedID = "123452", email = "*****@*****.**") u2 = User(username = "******", hashedID = "123452", email = "*****@*****.**") u.save() U = User.objects.filter(username = "******").get(); self.assertEqual(u.username, U.username) self.assertNotEqual(u2.username, U.username) U = User.objects.filter(username = "******"); self.assertEqual(0, U.count()) u2.save() U = User.objects.filter(username = "******"); self.assertEqual(1, U.count())
def testEmailValidation(self): self.assertTrue( User.isValidEmail('*****@*****.**')) #Normal mail self.assertFalse( User.isValidEmail('unstring@otrostring')) #Mail without.com self.assertFalse( User.isValidEmail('unstring@otrostring.')) #Mail without com self.assertFalse(User.isValidEmail('unstring.com')) #Mail without @ self.assertFalse( User.isValidEmail('@otrostring.com')) #Mail without name self.assertFalse(User.isValidEmail('otrostring')) #Normal string
def test_update_leaderboard_game(run_mock, status_mock): run_mock.return_value = str(uuid.uuid4()) snakes = snake_factory.basic(n=4, commit=True) user_snakes = [UserSnake(snake=s, user=User()) for s in snakes] for s in user_snakes: s.save() UserSnakeLeaderboard.objects.get_or_create(user_snake=s) MatchStarter().run() game_snakes = GameSnake.objects.all() snakes_dict = { snake.id: { 'death': 'starvation', 'turn': random.randint(1, 100) } for snake in game_snakes } snakes_dict[game_snakes[0].id]['death'] = '' snakes_dict[game_snakes[0].id]['turn'] = 125 snakes_dict[game_snakes[1].id]['turn'] = 125 status_mock.return_value = { 'status': Game.Status.COMPLETE, 'turn': 125, 'snakes': snakes_dict } GameStatusJob().run() lb = UserSnakeLeaderboard.objects.all()[0] assert lb.mu is not None assert lb.sigma is not None result = LeaderboardResult.objects.get(snake=lb) assert result is not None assert result.mu_change is not None assert result.sigma_change is not None
def create(self, validated_data): try: user = User.objects.filter(email=validated_data.get('email')).get() if user.is_active: raise CustomException(ErrorCode.account_has_exist) except User.DoesNotExist: user = User( email=validated_data.get('email'), username=validated_data.get('username'), gender=validated_data.get('gender'), birthday=validated_data.get('birthday'), company=validated_data.get('company', None), ) user.set_password(validated_data.get('password')) user.save() return user
def SignInAPI(request): if request.method == 'GET': # GET METHOD: Aca envio el formulario de logueo de usuario return render_to_response('signin.html',{},RequestContext(request)) elif request.method == 'POST': # POST METHOD: Aca valido la informacion de inicio de sesion information = {} information['username'] = request.POST.get('username', '') password = request.POST.get('password', '') leave_open = request.POST.get('remember',None) valid = User.isValidLogin(information['username'], password) if not valid: information['error'] = "No existe el nombre de usuario especificado o la clave no es correcta" return render_to_response('signin.html',information,RequestContext(request)) else: response = redirect('/') if leave_open is None: Crypt.set_secure_cookie(response,'user_id',information['username'],expires=True) # Expira al cerrar el navegador else: Crypt.set_secure_cookie(response,'user_id',information['username'],expires=False) # No expira la cookie return response else: raise PermissionDenied
def create(self, validated_data: OrderedDict) -> User: """ Creates new User instance when calling serializer.save() method. Parameters: ---------- validated_data: Serializer property created while user_serializer.is_valid() method calling. Returns: ---------- User instance. """ user_instance = User( name=validated_data["name"], username=validated_data["name"], email=validated_data["email"], ) user_instance.set_password(validated_data["password"]) user_instance.save() return user_instance
def testUpdateUserPassword(self): u = User.add("user1", "passwd", '*****@*****.**') self.assertTrue(User.isValidLogin("user1", "passwd")) u.updateUserPassword("newpasswd") self.assertFalse(User.isValidLogin("user1", "passwd")) self.assertTrue(User.isValidLogin("user1", "newpasswd"))
def test_add_user_wrong_email(self): with self.assertRaises(Exception): user = User(username='******', email='testuser_at_somemail.com', password='******') user.full_clean()
def test_add_user_with_all_fields(self): user = User(username='******', email='*****@*****.**', password='******') user.full_clean() user.save()
def test_cant_create_duplicate(self): User.objects.create_user(username='******', password='******') with self.assertRaises(ValidationError): user = User(username='******', password='******') user.full_clean()
def testUpdateUserPassword(self): u = User.add("user1","passwd",'*****@*****.**') self.assertTrue(User.isValidLogin("user1","passwd")) u.updateUserPassword("newpasswd") self.assertFalse(User.isValidLogin("user1","passwd")) self.assertTrue(User.isValidLogin("user1","newpasswd"))
def register(request): log = logging.getLogger(__name__) if request.user.is_authenticated: messages.error( request, _("Registrering av ny konto krever at du er logget ut.")) return HttpResponseRedirect("/") else: if request.method == "POST": form = RegisterForm(request.POST) if form.is_valid(): cleaned = form.cleaned_data # Create user user = User( username=cleaned["username"], first_name=cleaned["first_name"].title(), last_name=cleaned["last_name"].title(), ) # Set remaining fields user.phone_number = cleaned["phone"] user.address = cleaned["address"].title() user.zip_code = cleaned["zip_code"] # Store password properly user.set_password(cleaned["password"]) # Users need to be manually activated user.is_active = False user.save() # Set email address email = Email(user=user, email=cleaned["email"].lower()) email.primary = True email.save() # Create the registration token token = uuid.uuid4().hex try: rt = RegisterToken(user=user, email=email.email, token=token) rt.save() log.info("Successfully registered token for %s" % request.user) except IntegrityError as ie: log.error('Failed to register token for "%s" due to "%s"' % (request.user, ie)) email_context = {} verify_url = reverse("auth_verify", args=(token, )) email_context["verify_url"] = request.build_absolute_uri( verify_url) message = render_to_string("auth/email/welcome_tpl.txt", email_context) try: send_mail( _("Verifiser din konto"), message, settings.DEFAULT_FROM_EMAIL, [email.email], ) except SMTPException: messages.error( request, "Det oppstod en kritisk feil, epostadressen er ugyldig!", ) return redirect("home") messages.success( request, _("Registreringen var vellykket. Se tilsendt epost for verifiseringsinstrukser." ), ) return HttpResponseRedirect("/") else: form = RegisterForm(request.POST, auto_id=True) else: form = RegisterForm() return render(request, "auth/register.html", {"form": form})
def testUserGetByUsername(self): self.assertEqual(User.getByUsername("user1"), None) u = User.add("user1", "passwd", '*****@*****.**') self.assertEqual(User.getByUsername("user1"), u) self.assertEqual(User.getByUsername("user2"), None)
def testUserGetByUsername(self): self.assertEqual(User.getByUsername("user1"), None) u = User.add("user1","passwd",'*****@*****.**') self.assertEqual(User.getByUsername("user1"), u) self.assertEqual(User.getByUsername("user2"), None)
def testTwoEqualUsersCreation(self): u = User.add("user1","passwd",'*****@*****.**') u2 = User.add("user1","passwd",'*****@*****.**') self.assertIsNone(u2) u2 = User.add("user1","passwd", "*****@*****.**") self.assertIsNone(u2)
def testTwoEqualUsersCreation(self): u = User.add("user1", "passwd", '*****@*****.**') u2 = User.add("user1", "passwd", '*****@*****.**') self.assertIsNone(u2) u2 = User.add("user1", "passwd", "*****@*****.**") self.assertIsNone(u2)
def register(request): log = logging.getLogger(__name__) if request.user.is_authenticated: messages.error( request, _('Registrering av ny konto krever at du er logget ut.')) return HttpResponseRedirect('/') else: if request.method == 'POST': form = RegisterForm(request.POST) if form.is_valid(): cleaned = form.cleaned_data # Create user user = User( username=cleaned['username'], first_name=cleaned['first_name'].title(), last_name=cleaned['last_name'].title(), ) # Set remaining fields user.phone_number = cleaned['phone'] user.address = cleaned['address'].title() user.zip_code = cleaned['zip_code'] # Store password properly user.set_password(cleaned['password']) # Users need to be manually activated user.is_active = False user.save() # Set email address email = Email( user=user, email=cleaned['email'].lower(), ) email.primary = True email.save() # Create the registration token token = uuid.uuid4().hex try: rt = RegisterToken(user=user, email=email.email, token=token) rt.save() log.info('Successfully registered token for %s' % request.user) except IntegrityError as ie: log.error('Failed to register token for "%s" due to "%s"' % (request.user, ie)) email_context = {} verify_url = reverse('auth_verify', args=(token, )) email_context['verify_url'] = request.build_absolute_uri( verify_url) message = render_to_string('auth/email/welcome_tpl.txt', email_context) try: send_mail(_('Verifiser din konto'), message, settings.DEFAULT_FROM_EMAIL, [ email.email, ]) except SMTPException: messages.error( request, 'Det oppstod en kritisk feil, epostadressen er ugyldig!' ) return redirect('home') messages.success( request, _('Registreringen var vellykket. Se tilsendt epost for verifiseringsinstrukser.' )) return HttpResponseRedirect('/') else: form = RegisterForm(request.POST, auto_id=True) else: form = RegisterForm() return render(request, 'auth/register.html', { 'form': form, })
def basic(self, email="*****@*****.**", commit=False): username = email.split("@")[0] user = User(username=username, email=email) if commit: user.save() return user