def post(self, request): form = CreateUserForm.create_from_request(request) if not form.is_valid(): raise ValidationException(request, form) if not request.user.has_perm('core.add_user'): raise ProblemDetailException(request, _("Insufficient permissions"), status=HTTPStatus.FORBIDDEN) if User.objects.filter(email=form.cleaned_data['email']).exists(): raise ProblemDetailException( request, _("User with same email already exists"), status=HTTPStatus.CONFLICT) user = User() form.populate(user) user.set_password(form.cleaned_data['password']) user.save() return SingleResponse(request, user, serializer=UserSerializer.Base, status=HTTPStatus.CREATED)
class EventTestCase(NycTreesSeleniumTestCase): def setUp(self): super(EventTestCase, self).setUp() # Group admin self.user = User(username='******', email='*****@*****.**', first_name='Turanga', last_name='Leela') self.user.set_password('password') self.user.clean_and_save() # Non-Group admin self.nonadmin_user = User(username='******', email='*****@*****.**', first_name='Zapp', last_name='Brannigan') self.nonadmin_user.set_password('password') self.nonadmin_user.clean_and_save() self.group = Group.objects.create( name='Planet Express', slug='planet-express', description='A simple delivery company', contact_name='Professor Farnseworth', contact_email='*****@*****.**', contact_url='https://planetexpress.nyc', admin=self.user )
def _get_or_create_user(self): if User.objects.filter(username=self.username).exists(): return User.objects.get(username=self.username) user = User(username=self.username, email=self.email) user.set_password(self.password) user.save() return user
def test_email_uniqueness(self): guy = User(username='******', email='*****@*****.**') guy.set_password('password') guy.save() gal = User(username='******', email='*****@*****.**') gal.set_password('password') with self.assertRaises(ValidationError) as ec: gal.clean_and_save() self.assertIn('email', ec.exception.error_dict)
class LoginUITest(NycTreesSeleniumTestCase): def setUp(self): super(LoginUITest, self).setUp() self.user = User(username='******', email='*****@*****.**') self.user.set_password('password') self.user.save() def test_login(self): self.get('/accounts/login/') self.wait_for_textbox_then_type('[name="username"]', self.user.username) self.wait_for_textbox_then_type('[name="password"]', 'password') self.click('form input[type="submit"]')
def post(self, request): form = UserForms.Create.create_from_request(request) if not form.is_valid(): raise ValidationException(request, form) password = form.cleaned_data.get('password') role = form.cleaned_data.get('role') user = User() form.fill(user) user.set_password(password) user.username = user.email assign_role(user, role.name) user.is_active = False user.save() return SingleResponse(request, user, status=HTTPStatus.CREATED, serializer=UserSerializer.Base)
def create(self, validated_data): user = User(**validated_data) user.set_password(validated_data['password']) user.save() return user
class RsvpForEventUITest(EventTestCase): def setUp(self): super(RsvpForEventUITest, self).setUp() self.user2 = User(username='******', email='*****@*****.**', first_name='Bender', last_name='Rodríguez') self.user2.set_password('password') self.user2.clean_and_save() self.event = Event.objects.create(group=self.group, title="The event", slug="the-event", contact_email="*****@*****.**", address="123 Main St", location=CENTRAL_PARK, max_attendees=100, begins_at=now(), ends_at=now()) @property def event_detail_url(self): return self.event.get_absolute_url() def get_event_page(self): self.get(self.event_detail_url) def test_rsvp(self): self.assertEqual(EventRegistration.objects.all().count(), 0) self.login(self.user2.username) self.get_event_page() self.wait_for_text("RSVP") self.click('#rsvp') self.wait_for_text("RSVPed") self.assertEqual(EventRegistration.objects.all().count(), 1) self.assertEqual(EventRegistration.objects.all()[0].user, self.user2) self.assertEqual(EventRegistration.objects.all()[0].event, self.event) def test_cancel_rsvp(self): EventRegistration.objects.create(user=self.user2, event=self.event) self.login(self.user2.username) self.get_event_page() self.wait_for_text("1 / 100") self.click('#rsvp') self.wait_for_text("0 / 100") self.assertEqual(EventRegistration.objects.all().count(), 0) def test_group_admin_sees_admin_button(self): self.login(self.user.username) self.get_event_page() self.wait_for_text("Admin") def test_user_not_logged_in_can_rsvp(self): self.get_event_page() self.wait_for_text("0 / 100") self.click('#rsvp') expected_url = (self.live_server_url + reverse('login') + '?next=' + self.event_detail_url) self.assertEqual(expected_url, self.sel.current_url) self.wait_for_textbox_then_type('[name="username"]', self.user2.username) self.wait_for_textbox_then_type('[name="password"]', 'password') self.click('form input[type="submit"]') expected_url = self.live_server_url + self.event_detail_url self.assertEqual(expected_url, self.sel.current_url) self.wait_for_text("0 / 100") self.click('#rsvp') self.wait_for_text("1 / 100") def test_at_capacity(self): self.event.max_attendees = 1 self.event.save() EventRegistration.objects.create(user=self.user, event=self.event) self.login(self.user2.username) self.get_event_page() self.wait_for_text("At Capacity") self.click('#rsvp') # clicking should do nothing self.wait_for_text("At Capacity") def test_user_not_logged_in_at_capacity(self): self.event.max_attendees = 1 self.event.save() EventRegistration.objects.create(user=self.user, event=self.event) self.get_event_page() self.wait_for_text("At Capacity") self.click('#rsvp') # clicking should do nothing self.wait_for_text("At Capacity")