view savane/svmain/tests.py @ 206:e58b71703438

Manage 'homepage' and 'download' project links
author Sylvain Beucler <beuc@beuc.net>
date Fri, 30 Jul 2010 15:54:41 +0200
parents c21bd7148223
children 6fef32fad596
line wrap: on
line source

# Tests
# Copyright (C) 2010  Sylvain Beucler
#
# This file is part of Savane.
# 
# Savane is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
# 
# Savane is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from django.core import mail
from django.test import TestCase
from django.core.urlresolvers import reverse
import django.contrib.auth.models as auth_models
import savane.svmain.models as svmain_models
import re

class SimpleTest(TestCase):
    fixtures = [
        'license.yaml',
        'developmentstatus.yaml',
        ]

    def test_010_user_new(self):
        """
        Creates a new user (and tests templates)

        Sample long scenario.
        """
        response = self.client.get(reverse('registration_register'))
        self.assertEqual(response.status_code, 200)
        response = self.client.post(reverse('registration_register'),
                                    {'username': 'test', 'email': 'test@test.tld',
                                     'password1': 'test', 'password2': 'test'})
        self.assertRedirects(response, reverse('registration_complete'))
        self.assertEqual(len(mail.outbox), 1)
        m = re.search(r'/([a-f0-9]{40})/', mail.outbox[0].body)
        self.assertTrue(m != None)
        hash = m.groups()[0]
        mail.outbox = []
        
        response = self.client.get(reverse('registration_activate', args=[hash]))
        self.assertRedirects(response, reverse('registration_activation_complete'))
        self.assertTrue(self.client.login(username='test', password='test'))

    def test_020_group_url(self):
        """
        Create a new group and check the page menu
        """
        conf = svmain_models.GroupConfiguration(name='testconf',
                                                url_homepage='http://www.test.tld/homepage/%PROJECT/',
                                                url_download='http://www.test.tld/download/%PROJECT/')
        conf.save()
        
        group = auth_models.Group(name='test')
        group.save()
        # Work-around AutoOneToOneField bug
        group.svgroupinfo
        group.svgroupinfo.type = conf
        group.svgroupinfo.save()

        response = self.client.get(reverse('savane:svmain:group_detail', args=[group.name]))
        self.assertContains(response, 'http://www.test.tld/homepage/test/')
        self.assertContains(response, 'http://www.test.tld/homepage/test/')

        group.svgroupinfo.url_homepage = 'http://www.mysite.tld/%PROJECT/'
        group.svgroupinfo.save()
        response = self.client.get(reverse('savane:svmain:group_detail', args=[group.name]))
        self.assertContains(response, 'http://www.mysite.tld/%PROJECT/')