collective.cdn.multiplehostnames
=================================

First some initial setup code::

    >>> from zope.component import getUtility
    >>> from Products.CMFCore.interfaces import IPropertiesTool
    >>> from Products.Five.testbrowser import Browser
    >>> ptool = getUtility(IPropertiesTool)
    >>> self.failIf(ptool.cdn_properties.enable_cdn_css)
    >>> self.failIf(ptool.cdn_properties.enable_cdn_js)
    >>> self.failIf(ptool.cdn_properties.enable_cdn_kss)
    >>> hostnames =  ['foobar','barfoo','barbar']
    >>> ptool.cdn_properties.cdn_hostname = hostnames

Login as portal manager::

    >>> self.loginAsManager()

Our manager will use admBrowser::

    >>> admBrowser = self.browser

Multiple Hostname Support
--------------------------

Access the portal home and count the occurrences of 'portal_javascripts', 
'portal_css' and 'portal_kss'::

    >>> anonBrowser = Browser()
    >>> anonBrowser.handleErrors = False
    >>> anonBrowser.open('http://nohost/plone/')
    >>> pJsCount = anonBrowser.contents.count('http://nohost/plone/portal_javascripts')
    >>> pCssCount = anonBrowser.contents.count('http://nohost/plone/portal_css')
    >>> pKssCount = anonBrowser.contents.count('http://nohost/plone/portal_kss')

Now we will enable support for deploying skin objects from alternate hostnames, 
so we access the control panel and enable the cdn support::
    
    >>> admBrowser.open('http://nohost/plone/@@cdn-controlpanel')
    >>> self.failUnless(admBrowser.url.endswith('cdn-controlpanel'))
    >>> admBrowser.getControl(name='form.enable_cdn_css').value = True
    >>> admBrowser.getControl(name='form.enable_cdn_js').value = True
    >>> admBrowser.getControl(name='form.enable_cdn_kss').value = True

Choose 'MultipleHostnames' as our CDN provider::

    >>> admBrowser.getControl(name='form.cdn_provider').value = ['MultipleHostnames',]

Values for this alternate hostname::
    
    >>> admBrowser.getControl(name='form.cdn_port').value = '80'
    >>> admBrowser.getControl(name='form.cdn_path').value = 'longpath'
    
And click the save button::

    >>> admBrowser.getControl(name="form.actions.save").click()
    >>> self.failUnless(admBrowser.url.endswith('cdn-controlpanel'))
    >>> self.failUnless('Changes saved.' in admBrowser.contents)

Make sure the changes have been applied correctly to the tool::

    >>> self.failUnless(ptool.cdn_properties.enable_cdn_css == True)
    >>> self.failUnless(ptool.cdn_properties.enable_cdn_js == True)
    >>> self.failUnless(ptool.cdn_properties.enable_cdn_kss == True)
    >>> self.failUnless(ptool.cdn_properties.cdn_provider == 'MultipleHostnames')
    >>> self.failUnless(ptool.cdn_properties.cdn_hostname == hostnames)
    >>> self.failUnless(ptool.cdn_properties.cdn_port == 80)
    >>> self.failUnless(ptool.cdn_properties.cdn_path == 'longpath')

Now we, again, access the portal home and changes must have been applied. To
be certain we will count the occurrences of 'portal_javascripts', 'portal_css'
 and 'portal_kss' and these numbers should match the ones we measured before ::

    >>> otherAnonBrowser = Browser()
    >>> otherAnonBrowser.handleErrors = False
    >>> otherAnonBrowser.open('http://nohost/plone/')
    >>> pJsCDNCount = pCssCDNCount = pKssCDNCount = 0
    >>> for hostname in hostnames:
    ...     pJsCDNCount += otherAnonBrowser.contents.count('http://%s/longpath/plone/portal_javascripts' % hostname)
    ...     pCssCDNCount += otherAnonBrowser.contents.count('http://%s/longpath/plone/portal_css' % hostname)
    ...     pKssCDNCount += otherAnonBrowser.contents.count('http://%s/longpath/plone/portal_kss' % hostname)
    >>> self.failUnless(pJsCount == pJsCDNCount)
    >>> self.failUnless(pCssCount == pCssCDNCount)
    >>> self.failUnless(pKssCount == pKssCDNCount)

Let's turn everything back to factory settings by disabling 
MultipleHostnames caching::

    >>> admBrowser.open('http://nohost/plone/@@cdn-controlpanel')
    >>> self.failUnless(admBrowser.url.endswith('cdn-controlpanel'))
    >>> admBrowser.getControl(name='form.enable_cdn_css').value = False
    >>> admBrowser.getControl(name='form.enable_cdn_js').value = False
    >>> admBrowser.getControl(name='form.enable_cdn_kss').value = False
    >>> admBrowser.getControl(name='form.cdn_provider').value = ['MultipleHostnames',]
    >>> admBrowser.getControl(name="form.actions.save").click()
    >>> self.failUnless(admBrowser.url.endswith('cdn-controlpanel'))
    >>> self.failUnless('Changes saved.' in admBrowser.contents)

