diff --git a/src/postorius/tests/test_utils.py b/src/postorius/tests/test_utils.py
deleted file mode 100644
index 3ebaba4..0000000
--- a/src/postorius/tests/test_utils.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 2012-2016 by the Free Software Foundation, Inc.
-#
-# This file is part of Postorius.
-#
-# Postorius 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.
-# Postorius 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
-# Postorius. If not, see .
-
-"""
-.. testsetup::
-
- >>> from __future__ import absolute_import, unicode_literals
-
- >>> from postorius.tests.utils import *
-
-
-Domains
-=======
-
-``postorius.tests.utils.create_mock_domain`` creates a mock domain object:
-
- >>> properties = dict(contact_address='postmaster@example.org',
- ... description='Example dot Org',
- ... mail_host='example.org',
- ... url_host='www.example.org')
- >>> mock_domain = create_mock_domain(properties)
- >>> print mock_domain
-
- >>> print mock_domain.contact_address
- postmaster@example.org
- >>> print mock_domain.description
- Example dot Org
- >>> print mock_domain.mail_host
- example.org
- >>> print mock_domain.url_host
- www.example.org
-
-
-Mailing Lists
-=============
-
-``postorius.tests.utils.create_mock_list`` creates a mock list object:
-
- >>> properties = dict(fqdn_listname='testlist@example.org',
- ... mail_host='example.org',
- ... list_name='testlist',
- ... display_name='Test List')
- >>> mock_list = create_mock_list(properties)
- >>> print mock_list
-
- >>> print mock_list.fqdn_listname
- testlist@example.org
- >>> print mock_list.mail_host
- example.org
- >>> print mock_list.list_name
- testlist
- >>> print mock_list.display_name
- Test List
-
-
-Memberships
-===========
-
-``postorius.tests.utils.create_mock_list`` creates a mock list object:
-
- >>> properties = dict(fqdn_listname='testlist@example.org',
- ... address='les@example.org',)
- >>> mock_member = create_mock_member(properties)
- >>> print mock_member
-
- >>> print mock_member.fqdn_listname
- testlist@example.org
- >>> print mock_member.address
- les@example.org
-"""
diff --git a/src/postorius/tests/tests.py b/src/postorius/tests/tests.py
deleted file mode 100644
index 5fbe042..0000000
--- a/src/postorius/tests/tests.py
+++ /dev/null
@@ -1,253 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 1998-2016 by the Free Software Foundation, Inc.
-#
-# This file is part of Postorius.
-#
-# Postorius 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.
-#
-# Postorius 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
-# Postorius. If not, see .
-
-"""
-==============================
-Tests Login and Permissions
-==============================
-
-Setup Testobject (starts Mailman3 with an empty Database).
-
- >>> from setup import setup_mm, Testobject, teardown_mm
- >>> testobject = setup_mm(Testobject())
-
- .. note::
- You need to stop all Mailman3 instances before running the tests
-
-Modules needed
- As we can't make sure that you're running the same language as we did we
- made sure that each test below is executed using the exact same translation
- mechanism as we use to Display you Status Messages and other GUI Texts.
-
- Import Translation Module to check success messages
- >>> from django.utils.translation import gettext as _
-
- Import HTTPRedirectObject to check whether a response redirects
- >>> from django.http import HttpResponseRedirect
-
-Import Django test client.
-
- >>> from django.test.client import Client
- >>> c = Client()
-
-
-List index
-==========
-
-Try accessing the list index page.
-
- >>> response = c.get('/lists/',)
- >>> response.status_code
- 200
-
-
-Login Required
-==================================================
-
-As described within the installation instructions we *already* started using
-authentification. The easiest way testing it is that we simply load a page
-which is restricted to some users only.
-This was done using Django's @login_required Decorator in front of the View.
-One of the pages which requires a Login is the Domain Administration, if
-we can load the page without a redirect to the Login page, you're either
-already logged in or something went wrong.
-
- >>> response = c.get('/domains/')
- >>> print type(response) == HttpResponseRedirect
- True
-
-=====
-Pages
-=====
-
-Create a New List
-=================
-
-After creating a Domain you should be able to create new Lists. The Button for
-doing so is shown on the List index Page which should offer a list of all
-available (adverrtised) lists.
-
- >>> response = c.get('/lists/')
- >>> response.status_code
- 200
- >>> "Lists on" in response.content
- True
-
-The new List creation form is opened by clicking on the Button mentioned above
-or accessing the page directly
-
- >>> response = c.get('/lists/new/')
- >>> response.status_code
- 200
- >>> print "Create a new List on" in response.content
- True
-
-Creating a new List we do need to specify at least the below mentioned items.
-Those were entered using some nice GUI Forms which do only show up available
-Values or offer you to choose a name which will be checked during validation.
-We're now submitting the form using a POST request and get redirected to
-the List Index Page
-
- >>> response = c.post('/lists/new/',
- ... {"listname": "new_list1",
- ... "mail_host": "mail.example.com",
- ... "list_owner": "james@example.com",
- ... "description": "doctest testing list",
- ... "advertised": "True",
- ... "languages": "English (USA)"})
- >>> print type(response) == HttpResponseRedirect
- True
-
-As List index is an overview of all advertised Lists and we've choosen to
-do so we should now see our new List within the overview. HTTP_HOST is added
-as META Data for the request because we do only want to see Domains which
-belong to the example.com web_host.
-
- >>> response = c.get('/lists/',HTTP_HOST='example.com')
- >>> response.status_code
- 200
- >>> "New_list1" in response.content
- True
-
-List Summary
-============
-
-List summary is a dashboard for each List. It does have Links to the most
-useful functions which are only related to that Domain. These include the
-Values mentioned below. _(function) is used to Translate these to you local
-language.
-
- >>> response = c.get('/lists/new_list1%40mail.example.com/',)
- >>> response.status_code
- 200
- >>> _("Subscribe") in response.content
- True
- >>> _("Archives") in response.content
- True
- >>> _("Edit Options") in response.content
- True
- >>> _("Unsubscribe") in response.content
- True
-
-Subscriptions
-=============
-
-The Subscriptions form is found on the below URL. Last part of the Url is one
-of [None,'subscribe','unsubscribe']
-
- >>> url = '/subscriptions/new_list1%40mail.example.com/subscribe'
- >>> response = c.get(url)
- >>> response.status_code
- 200
-
-Forms will be prefilled with the Users Email if so. is logged in.
-
- >>> "james@example.com" in response.content
- True
-
-Now we can subscribe James and Katie and check that we get redirected to List
-Summary.
-
- >>> response = c.post(url,
- ... {"email": "james@example.com",
- ... "real_name": "James Watt",
- ... "name": "subscribe",
- ... "fqdn_listname": "new_list1@mail.example.com"})
- >>> response = c.post(url,
- ... {"email": "katie@example.com",
- ... "real_name": "Katie Doe",
- ... "name": "subscribe",
- ... "fqdn_listname": "new_list1@mail.example.com"})
- >>> print (_('Subscribed')+' katie@example.com') in response.content
- True
-
-The logged in user (james@example.com) can now modify his own membership
-using a button which is displayed in list_summary.
-
- >>> response = c.get('/lists/new_list1%40mail.example.com/')
- >>> "mm_membership" in response.content
- True
-
-Using the same subscription page we can unsubscribe as well.
-
- >>> response = c.post('/subscriptions/new_list1%40mail.example.com/unsubscribe',
- ... {"email": "katie@example.com",
- ... "name": "unsubscribe",
- ... "fqdn_listname": "new_list1@mail.example.com"})
- >>> print (_('Unsubscribed')+' katie@example.com') in response.content
- True
-
-Mass Subscribe Users (within settings)
-======================================
-
-Another page related to Mass Subscriptions will be available to List Owners
-as well. This page will allow adding a couple of users to one lists at the
-same time.
-
- >>> url = '/subscriptions/new_list1%40mail.example.com/mass_subscribe/'
- >>> response = c.get(url)
- >>> response.status_code
- 200
-
-Try mass subscribing the users 'liza@example.com' and
-'george@example.com'. Each address should be provided on a separate
-line so add '\\n' between the names to indicate that this was done
-(we're on a Linux machine which is why the letter 'n' was used and
-the double '\\' instead of a single one is to escape the string
-parsing of Python).
-
- >>> url = '/subscriptions/new_list1%40mail.example.com/mass_subscribe/'
- >>> response = c.post(url,
- ... {"emails": "liza@example.com\\ngeorge@example.com"})
-
-If everything was successful, we shall get a positive response from
-the page. We'll check that this was the case.
-
- >>> print _("The mass subscription was successful.") in response.content
- True
-
-Delete the List
-===============
-
-Finally, let's delete the list.
-We start by checking that the list is really there (for reference).
-
- >>> response = c.get('/lists/',HTTP_HOST='example.com')
- >>> print "New_list1" in response.content
- True
-
-Trying to delete the List we have to confirm this action
- >>> response = c.get('/delete_list/new_list1%40mail.example.com/',)
- >>> print "Please confirm" in response.content
- True
-
-Confirmed by pressing the button which requests the same page using POST
- >>> response = c.post('/delete_list/new_list1%40mail.example.com/',)
-
-...and check that it's been deleted.
- >>> response = c.get('/lists/',HTTP_HOST='example.com')
- >>> print "new_list1%40example.com" in response.content
- False
-
-==============
-Finishing Test
-==============
-
-Don't forget to remove the test object after testing all functions
- >>> teardown_mm(testobject)
-"""