class ActivateTests(TestCase):
	def setUp(self):
		self.factory = RequestFactory()
		self.req = self.factory.get('/accouts/register')
		SessionMiddleware().process_request(self.req)
		self.b = EmailOnlySignupBackend()
		self.u = self.b.register(self.req, email='*****@*****.**')
		self.activation_key = user_to_activation_key(self.u)
	def test_activate(self):
		self.assertFalse(self.u.has_usable_password())
		u = self.b.activate(self.req, self.activation_key, 'username', 'pass')
		u = User.objects.get(username='******')
		self.assertTrue(u.has_usable_password())
	def setUp(self):
		self.factory = RequestFactory()
		self.req = self.factory.get('/accouts/register')
		SessionMiddleware().process_request(self.req)
		self.b = EmailOnlySignupBackend()
		self.u = self.b.register(self.req, email='*****@*****.**')
		self.activation_key = user_to_activation_key(self.u)
class RegisterTests(TestCase):
	def setUp(self):
		self.factory = RequestFactory()
		self.req = self.factory.get('/accouts/register')
		SessionMiddleware().process_request(self.req)
		self.b = EmailOnlySignupBackend()
	def test_register_no_email(self):
		with self.assertRaises(ValueError):
			self.b.register(self.req)
	def test_colliding_username_hashes(self):
		pass
		# mock out hash function
		def silly_username_creation(request, user):
			user.username = '******'
			return user
		#with self.setings(REGISTRATION_EMAIL_ONLY_USERNAME_CREATOR=
	def test_unusable_password(self):
		u = self.b.register(self.req, email='*****@*****.**')
		self.assertFalse(u.has_usable_password())
	def test_signal_sent(self):
		signal_user = set()
		def user_registered_signal_handler(sender, request, user, **kwargs):
			signal_user.add(user)
		registration.signals.user_registered.connect(
			user_registered_signal_handler)
		u = self.b.register(self.req, email='*****@*****.**')
		self.assertIn(u, signal_user)
	def test_logged_in(self):
		signal_user = set()
		def login_signal_handler(sender, request, user, **kwargs):
			signal_user.add(user)
		user_logged_in.connect(login_signal_handler)
		u = self.b.register(self.req, email='*****@*****.**')
		self.assertIn(u, signal_user)
	def test_email_sent(self):
		self.b.register(self.req, email='*****@*****.**')
		self.assertEqual(len(mail.outbox), 1)
	def setUp(self):
		self.factory = RequestFactory()
		self.req = self.factory.get('/accouts/register')
		SessionMiddleware().process_request(self.req)
		self.b = EmailOnlySignupBackend()