# -*- 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/',) """