## $Id: tests.py 10340 2013-06-22 13:19:37Z henrik $
##
## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
## This program 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 2 of the License, or
## (at your option) any later version.
##
## This program 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 this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##
import tempfile
import shutil
from zope.testbrowser.testing import Browser
from zope.component.hooks import setSite, clearSite
from zope.security.interfaces import Unauthorized
from waeup.kofa.testing import FunctionalTestCase
from waeup.imostate.testing import FunctionalLayer
from waeup.kofa.app import University

class CustomPackageBrowserTests(FunctionalTestCase):

    layer = FunctionalLayer

    def setUp(self):
        super(CustomPackageBrowserTests, self).setUp()

        # Setup a sample site for each test
        app = University()
        self.dc_root = tempfile.mkdtemp()
        app['datacenter'].setStoragePath(self.dc_root)

        # Put the prepopulated site into test ZODB and prepare test
        # browser
        self.getRootFolder()['app'] = app
        setSite(app)
        self.browser = Browser()
        self.browser.handleErrors = False

    def tearDown(self):
        super(CustomPackageBrowserTests, self).tearDown()
        clearSite()
        shutil.rmtree(self.dc_root)

    def test_custom_theme(self):
        self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
        self.browser.open('http://localhost/app/configuration')
        self.assertMatches('...ImoState Theme...', self.browser.contents)
        self.browser.getControl(name="form.skin").value = ['custom theme']
        self.browser.getControl("Save").click()
        self.browser.open('http://localhost/app/configuration')
        return

    def test_access_live_url(self):
        # We can't access the system with basic authentication
        self.browser.addHeader('Authorization', 'Basic grok:grok')
        self.assertRaises(
            Unauthorized, self.browser.open, 'https://imostate-kofa.waeup.org')
        return