Example #1
0
def get_default_config_data():
    """
    Generates the default site used to initialize internal
    site structures
    """
    return {
        # General attributes
        'general' : {
            'id' : (None, int, 'Id should be a number'),
            'platform' : (SiteDefaultsManager.get_default_platform(),
                          SiteDefaultsManager.get_platforms().keys(),
                          'Unknown platform'),
            'domain' : (SiteDefaultsManager.get_default_domain(),
                        SiteDefaultsManager.get_domains().keys(),
                        'Unknown domain'),
            'name' : ('', '^[\d\w_-]*$', 'Name should be an alphanumeric string'),
            'description' : ('', None),
            'done' : (False, bool),
            },
        # Repository related attriutes
        'repository' : {
            'enabled' : (False, bool),
            'type' : (SiteDefaultsManager.get_default_repository_type(),
                      SiteDefaultsManager.get_repository_types().keys(),
                      'Unsupported RCS type'),
            'name' : ('', '^[\d\w_-]*$', 'Name should be an alphanumeric string or _, without spaces'),
            'done' : (False, bool)
            },
        # Sites related attributes (for each available platform)
        'website' : {
            'enabled' : (False, bool),
            'access' : (SiteDefaultsManager.get_default_site_access(),
                        SiteDefaultsManager.get_site_accesses().keys(),
                        'Unsupported access'),
            'maintenance' : (False, bool),
            'template' : ('standard',
                          SiteDefaultsManager.get_site_templates().keys(),
                          'Unsupported site template'),
            'done' : (False, bool)
            },
        # Databases related attributes (for each available platform)
        'database' : {
            'enabled' : (False, bool),
            'type' : (SiteDefaultsManager.get_default_database_type(),
                      SiteDefaultsManager.get_database_types().keys(),
                      'Unsupported database type'),
            'name' : ('', '^[a-z0-9_]+$', 'Name should be a simple alphanumeric string without spaces'),
            'username' : ('', '^[a-z0-9_]+$', 'Username should be a simple alphanumeric string without spaces'),
            'password' : ('', None),
            'done' : (False, bool)
            },
        }
    def test_default_site(self):
        """
        Tests that default site builds correctly and that attributes
        work as expected.
        """
        config = SiteConfigurationManager.get_blank_site()

        dnshost = config.dnshost
        self.assertEquals(dnshost.domain,
                          SiteDefaultsManager.get_default_domain())
        self.assertEquals(dnshost.name, u'')
        self.assertEquals(dnshost.platform,
                          SiteDefaultsManager.get_default_platform())
        self.assertTrue(dnshost.platform in \
                       SiteDefaultsManager.get_platforms())
        self.assertEquals(dnshost.description, u'')

        repository = config.repository
        self.assertEquals(repository.enabled, False)
        self.assertEquals(repository.done, False)
        self.assertEquals(repository.name, u'')
        self.assertEquals(repository.type,
                          SiteDefaultsManager.get_default_repository_type())
        self.assertTrue(repository.type in \
                       SiteDefaultsManager.get_repository_types())

        site = config.website
        self.assertEquals(site.enabled, False)
        self.assertEquals(site.done, False)
        self.assertEquals(site.maintenance, False)
        self.assertEquals(site.template,
                          SiteDefaultsManager.get_default_site_template())
        self.assertTrue(site.template in \
                        SiteDefaultsManager.get_site_templates())
        self.assertEquals(site.access,
                          SiteDefaultsManager.get_default_site_access())
        self.assertTrue(site.access in \
                        SiteDefaultsManager.get_site_accesses())

        database = config.database
        self.assertEquals(database.enabled, False)
        self.assertEquals(database.done, False)
        self.assertEquals(database.name, u'')
        self.assertEquals(database.username, u'')
        self.assertEquals(database.password, u'')
        self.assertEquals(database.type,
                          SiteDefaultsManager.get_default_database_type())
        self.assertTrue(database.type in \
                        SiteDefaultsManager.get_database_types())
    def test_set_site(self):
        """
        Tests that site attributes react as expected when setting
        attributes value
        """
        config = SiteConfigurationManager.get_blank_site()

        # DNS Host attributes
        dnshost = config.dnshost
        dnshost.desc = 'desc'
        self.assertEquals(dnshost.desc, 'desc')

        dnshost.name = 'name'
        self.assertEquals(dnshost.name, 'name')
        self.assertRaises(ValidationError, lambda x: setattr(dnshost, 'name', x), "f@ke")

        dnshost.domain = SiteDefaultsManager.get_default_domain()
        self.assertEquals(dnshost.domain, SiteDefaultsManager.get_default_domain())
        self.assertRaises(ValidationError, lambda x: setattr(dnshost, 'domain', x), "fake")

        # Repository related attributes
        repository = config.repository

        repository.name = 'name'
        self.assertEquals(repository.name, 'name')
        self.assertRaises(ValidationError, lambda x: setattr(repository, 'name', x), "f@ke")

        repository.type = SiteDefaultsManager.get_default_repository_type()
        self.assertEquals(repository.type,
                          SiteDefaultsManager.get_default_repository_type())
        self.assertRaises(ValidationError, lambda x: setattr(repository, 'type', x), "fake")

        repository.enabled = True
        self.assertEquals(repository.enabled, True)
        self.assertRaises(ValidationError, lambda x: setattr(repository, 'enabled', x), 'fake')

        repository.done = True
        self.assertEquals(repository.done, True)
        self.assertRaises(ValidationError, lambda x: setattr(repository, 'done', x), 'fake')

        # Web site related attributes
        site = config.website

        site.template = SiteDefaultsManager.get_default_site_template()
        self.assertEquals(site.template,
                          SiteDefaultsManager.get_default_site_template())
        self.assertRaises(ValidationError, lambda x: setattr(repository, 'done', x), "fake")

        site.access = SiteDefaultsManager.get_default_site_access()
        self.assertEquals(site.access,
                          SiteDefaultsManager.get_default_site_access())
        self.assertRaises(ValidationError, lambda x: setattr(repository, 'done', x), "fake")

        site.maintenance = True
        self.assertEquals(site.maintenance, True)
        self.assertRaises(ValidationError, lambda x: setattr(site, 'maintenance', x), 'fake')

        site.enabled = True
        self.assertEquals(site.enabled, True)
        self.assertRaises(ValidationError, lambda x: setattr(site, 'enabled', x), 'fake')

        site.done = True
        self.assertEquals(site.done, True)
        self.assertRaises(ValidationError, lambda x: setattr(site, 'done', x), 'fake')

        # Database related attribute
        database = config.database

        database.type = SiteDefaultsManager.get_default_database_type()
        self.assertEquals(database.type,
                          SiteDefaultsManager.get_default_database_type())
        self.assertRaises(ValidationError, lambda x: setattr(repository, 'done', x), "fake")

        database.name = 'name'
        self.assertEquals(database.name, 'name')
        self.assertRaises(ValidationError, lambda x: setattr(database, 'name', x), "f@ke")

        database.username = '******'
        self.assertEquals(database.username, 'username')
        self.assertRaises(ValidationError, lambda x: setattr(database, 'username', x), "f@ke")

        database.password = '******'
        self.assertEquals(database.password, 'password')

        database.enabled = True
        self.assertEquals(database.enabled, True)
        self.assertRaises(ValidationError, lambda x: setattr(database, 'enabled', x), 'fake')

        database.done = True
        self.assertEquals(database.done, True)
        self.assertRaises(ValidationError, lambda x: setattr(database, 'done', x), 'fake')