Ejemplo n.º 1
0
class TestUserManagementViews(TestCase):
    def test_register_index(self):
        resp = self.client.get(reverse('user:register'))
        self.assertEqual(resp.status_code, 200)

    def test_user_creation_and_data_persistence(self):
        # create a user and corresponding profile
        testuser = '******'
        testpw = 'testpw'
        testemail = '*****@*****.**'
        self.user = User.objects.create_user(testuser, testemail, testpw)
        self.user.save()
        self.prof = Profile(user=self.user)
        self.prof.save()

        # create 5 learned concepts and add the previously created user to each concepts learned list
        learned_concepts = ['7yjmqglq', 'dvwtwwnk', '1toqv2qm']
        for learned_concept_id in learned_concepts:
            lc, created = Concepts.objects.get_or_create(id=learned_concept_id)
            lc.learned_uprofs.add(self.prof)

        # check the /user page before authentication
        resp = self.client.get(reverse('user:user_main'))
        self.assertEqual(resp.status_code, 302) # should return a redirect

        # login
        self.client.login(username=testuser, password=testpw)
        resp = self.client.get(reverse('user:user_main'))
        # should not redirect
        self.assertEqual(resp.status_code, 200)
        # learned concepts should contain the added concepts
        self.assertEqual(set([lc['id'] for lc in
                              resp.context['lconcepts']]), set(learned_concepts))
Ejemplo n.º 2
0
    def test_user_creation_and_data_persistence(self):
        # create a user and corresponding profile
        testuser = '******'
        testpw = 'testpw'
        testemail = '*****@*****.**'
        self.user = User.objects.create_user(testuser, testemail, testpw)
        self.user.save()
        self.prof = Profile(user=self.user)
        self.prof.save()

        # create 5 learned concepts and add the previously created user to each concepts learned list
        learned_concepts = ['7yjmqglq', 'dvwtwwnk', '1toqv2qm']
        for learned_concept_id in learned_concepts:
            lc, created = Concepts.objects.get_or_create(id=learned_concept_id)
            lc.learned_uprofs.add(self.prof)

        # check the /user page before authentication
        resp = self.client.get(reverse('user:user_main'))
        self.assertEqual(resp.status_code, 302)  # should return a redirect

        # login
        self.client.login(username=testuser, password=testpw)
        resp = self.client.get(reverse('user:user_main'))
        # should not redirect
        self.assertEqual(resp.status_code, 200)
        # learned concepts should contain the added concepts
        self.assertEqual(set([lc['id'] for lc in resp.context['lconcepts']]),
                         set(learned_concepts))
Ejemplo n.º 3
0
def register(request, redirect_addr="/user"):

    # don't allow logged-in users to register a new account
    if request.user.is_authenticated and not is_lazy_user(request.user):
        return HttpResponseRedirect(redirect_addr)

    if request.method == 'POST':
        form = UserCreateForm(request.POST, instance=request.user)

        if form.is_valid():

            # save lazy or non-lazy acct
            if is_lazy_user(form.instance):
                user = LazyUser.objects.convert(form)
            else:
                user = form.save()

            # create and save corresponding profile
            prof = Profile(user=user)
            prof.save()

            # send basic info email
            uname = form.cleaned_data['username']
            subject, from_email, to = 'Metacademy account successfully created', '*****@*****.**', form.cleaned_data[
                'email']
            text_content = TXT_ACCT_EMAIL % uname

            html_content = HTML_ACCT_EMAIL % uname
            msg = EmailMultiAlternatives(subject, text_content, from_email,
                                         [to])
            msg.attach_alternative(html_content, "text/html")

            try:
                msg.send()
            except:
                # TODO handle incorrect emails better
                print "Unable to send confirmation message to " + to
            login(request, authenticate(**form.get_credentials()))
            return HttpResponseRedirect(redirect_addr)
    else:
        form = UserCreateForm()
    return render(request, "user_management/register.html", {
        'form': form,
    })
Ejemplo n.º 4
0
def register(request, redirect_addr="/user"):

    # don't allow logged-in users to register a new account
    if request.user.is_authenticated and not is_lazy_user(request.user):
        return HttpResponseRedirect(redirect_addr)
        
    if request.method == 'POST':
        form = UserCreateForm(request.POST, instance=request.user)

        if form.is_valid():

            # save lazy or non-lazy acct
            if is_lazy_user(form.instance):
                user = LazyUser.objects.convert(form) 
            else:
                user = form.save()

            # create and save corresponding profile
            prof = Profile(user=user)
            prof.save()

            # send basic info email
            uname = form.cleaned_data['username']
            subject, from_email, to = 'Metacademy account successfully created', '*****@*****.**', form.cleaned_data['email']
            text_content = TXT_ACCT_EMAIL % uname
            
            html_content = HTML_ACCT_EMAIL % uname
            msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
            msg.attach_alternative(html_content, "text/html")
            
            try:
                msg.send()
            except:
                # TODO handle incorrect emails better
                print "Unable to send confirmation message to " + to
            login(request, authenticate(**form.get_credentials()))
            return HttpResponseRedirect(redirect_addr)
    else:
        form = UserCreateForm()
    return render(request, "user_management/register.html", {
        'form': form,
    })
Ejemplo n.º 5
0
class TestUserManagementViews(TestCase):
    # TODO divide this test into better units (user creation, saving concepts, loading concepts)
    def test_register_index(self):
        resp = self.client.get(reverse('user:register'))
        self.assertEqual(resp.status_code, 200)

    def test_user_creation_and_data_persistence(self):
        # create a user and corresponding profile
        testuser = '******'
        testpw = 'testpw'
        testemail = '*****@*****.**'
        self.user = User.objects.create_user(testuser, testemail, testpw)
        self.user.save()
        self.prof = Profile(user=self.user)
        self.prof.save()

        # create 3 learned concepts and add the previously created user to each concepts learned list
        learned_concepts = ['7yjmqglq', 'dvwtwwnk', '1toqv2qm']
        for learned_concept_id in learned_concepts:
            lc, created = Concepts.objects.get_or_create(id=learned_concept_id)
            lc.learned_uprofs.add(self.prof)
            Concept.objects.get_or_create(id=learned_concept_id,
                                          tag=learned_concept_id)

        # check the /user page before authentication
        resp = self.client.get(reverse('user:user_main'))
        self.assertEqual(resp.status_code, 302)  # should return a redirect

        # login
        self.client.login(username=testuser, password=testpw)
        resp = self.client.get(reverse('user:user_main'))
        # should not redirect
        self.assertEqual(resp.status_code, 200)
        # learned concepts should contain the added concepts
        self.assertEqual(set([ilc.id for ilc in resp.context['lconcepts']]),
                         set(learned_concepts))
Ejemplo n.º 6
0
    def setUp(self):
        super(BaseResourceTest, self).setUp()

        # Create a normal user.
        self.username = '******'  # use un as pw
        user = User.objects.create_user(self.username, '*****@*****.**',
                                        self.username)
        prof = Profile(user=user)
        prof.save()
        user.save()

        # create a super user
        self.super_username = '******'  # use un as pw
        suser = User.objects.create_superuser(
            self.super_username, self.super_username + "@test.com",
            self.super_username)
        suser.save()
        sprof = Profile(user=suser)
        sprof.save()

        self.populate_initial_graph()
Ejemplo n.º 7
0
    def setUp(self):
        super(BaseResourceTest, self).setUp()

        # Create a normal user.
        self.username = '******'  # use un as pw
        user = User.objects.create_user(self.username, '*****@*****.**', self.username)
        prof = Profile(user=user)
        prof.save()
        user.save()

        # create a super user
        self.super_username = '******'  # use un as pw
        suser = User.objects.create_superuser(self.super_username, self.super_username + "@test.com", self.super_username)
        suser.save()
        sprof = Profile(user=suser)
        sprof.save()

        self.populate_initial_graph()