Newer
Older
postorius / tests / tests.py
# -*- coding: utf-8 -*-
# Copyright (C) 1998-2010 by the Free Software Foundation, Inc.
#
# This file is part of GNU Mailman.
#
# GNU Mailman is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# GNU Mailman 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 General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along with
# GNU Mailman.  If not, see <http://www.gnu.org/licenses/>.

"""
==============================
Test suite for the Mailman UI.
==============================

This document both acts as a test for all the functions implemented
in the UI as well as documenting what has been done.


Getting Started
===============

To start the test, import the django test client.

    >>> from django.test.client import Client

Then instantiate a test client.

    >>> c = Client()

Go to the start page listing all lists.

    >>> response = c.get('/',)

Make sure the load was a success by checking the status code.

    >>> response.status_code
    200
    
    
Check that login is required for a couple of pages
=================
Try to access some of the admin Pages. Accessing these pages
redirects to a login page since we need admin authority to view and use them

    >>> response = c.get('/new_domain/')

Check that login required was in the HTML content of what was loaded

    >>> print "Login Required" in response.content
    True

Hence, we log in as an admin on the login page we get as a response 
to our call.    

    >>> response = c.post('/new_domain/',
    ...                   {"addr": "kevin@example.com",
    ...                   "psw": "kevin"})

    >>> print "Add a new Domain" in response.content
    True
    
Create a New Domain
=================
Check the content to see that we came to the create page after 
logging in.

    >>> response = c.post('/new_domain/')

    >>> print "Add a new Domain" in response.content
    True

Now create a new Domain called 'mail.example.com'.

    >>> response = c.post('/new_domain/',
    ...                   {"mail_host": "mail.example.com",
    ...                    "web_host": "example.com",
    ...                    "description": "doctest testing domain"})  

Check that the new Domain exists in the list of existing domains which is above new_domain form

    >>> print "doctest testing domain" in response.content
    True
      

Create a New List
=================

Try to create a new list. 

    >>> response = c.post('/lists/new/')

Check the content to see that we came to the create page after 
logging in.

    >>> print "Create a new list" in response.content
    True
    
Now create a new list called 'new_list'.

    >>> response = c.post('/lists/new/',
    ...                   {"listname": "new_list",
    ...                    "mail_host": "mail.example.com",
    ...                    "list_owner": "kevin@example.com",
    ...                    "list_type": "closed_discussion",
    ...                    "description": "doctest testing domain",
    ...                    "languages": "English (USA)"})    

We should now end up on a success page offering what to do next. 
Let's check that this was the case.

    >>> print "What would you like to do next?" in response.content
    True

Three options appear on this page. The first one is to mass subscribe
users, the second is to go to the settings page of the list just 
created and the third is to create another list. 
We're still logged in so go to the page where the settings can be 
changed (this page also requires admin authority).

    >>> response = c.get('/settings/new_list%40example.com/',)    
"""