Пример #1
0
 def setUp(self):
     self.geoupload = GeoUpload(url, username, password, style_dir, workspace)
     self.geoupload.cat.create_workspace(workspace, workspace)
     self.layers = []
     self.layer_groups = []
     self.resource_files = []
     self.styles = []
Пример #2
0
class Test(unittest.TestCase):

    def setUp(self):
        self.geoupload = GeoUpload(url, username, password, style_dir, workspace)
        self.geoupload.cat.create_workspace(workspace, workspace)
        self.layers = []
        self.layer_groups = []
        self.resource_files = []
        self.styles = []

    def tearDown(self):
        self.cleanup()

    def cleanup(self):
        self.geoupload.deleteWorkspace()
        self.removeResourceFiles()

    def removeResourceFiles(self):
        for f in self.resource_files:
            if os.path.exists(f):
                try: os.remove(f)
                except Exception: pass

    def register(self, af):
        """
        Register layers, layer_groups, styles etc contained in aptofile
        for posttest deletion.
        """
        manifest = af.getManifest()
        asset_dict = manifest['asset']
        for layer_key, layer_dict in asset_dict['layers'].iteritems():
            layer_name = layer_dict['name'].replace(' ','_')
            if self.geoupload.workspace:
                layer_name = ':'.join([self.geoupload.workspace,layer_name])
            self.layers.append(layer_name)
            for fn in layer_dict['style']['data']:
                fn = stripFileName(fn)
                style_name = getStyleName(fn)
                if self.geoupload.workspace:
                    style_name = '_'.join([self.geoupload.workspace,style_name])
                if not self.geoupload.cat.get_style(style_name):
                    self.styles.append(style_name)

            try: resources = layer_dict['resources']['data']
            except KeyError: resources = []
            for fn in resources:
                fn = stripFileName(fn)
                basename = os.path.basename(fn)
                full_path = os.path.join(style_dir,'icons',basename)
                self.resource_files.append(full_path)

        for group_key, group_dict in asset_dict['groups'].iteritems():
            grp_name = group_dict['name']
            if self.geoupload.workspace:
                grp_name = '_'.join([self.geoupload.workspace,grp_name])
            self.layer_groups.append(grp_name)

    def checkUploads(self, layers=True, layer_groups = True,
                     styles = True, resources = True):
        """Check that everything is in place"""
        cat = self.geoupload.cat
        if layers:
            for layer in self.layers:
                self.assertIsNotNone(cat.get_layer(layer),
                                "Layer %s not found on server"%layer)
        if layer_groups:
            for layer_group in self.layer_groups:
                self.assertIsNotNone(cat.get_layergroup(layer_group),
                                "Layergroup %s not found on server"%layer_group)
        if styles:
            for style in self.styles:
                self.assertIsNotNone(cat.get_style(style),
                                "Style %s not found on server"%style)
        if resources:
            for resource in self.resource_files:
                self.assertTrue(os.path.exists(resource),
                                "Resource file %s not found on server"%resource)

    def checkRemoved(self, layers=True, layer_groups = True,
                     styles = True, resources = True):
        """Check that everything is in place"""
        cat = self.geoupload.cat
        if layers:
            for layer in self.layers:
                self.assertIsNone(cat.get_layer(layer),
                                "Layer %s not found on server"%layer)
        if layer_groups:
            for layer_group in self.layer_groups:
                self.assertIsNone(cat.get_layergroup(layer_group),
                                "Layergroup %s not found on server"%layer_group)
        if styles:
            for style in self.styles:
                self.assertIsNone(cat.get_style(style),
                                "Style %s not found on server"%style)
        if resources:
            for resource in self.resource_files:
                self.assertFalse(os.path.exists(resource),
                                "Resource file %s not found on server"%resource)


    def testUpload(self):
        with Aptofile.open(testfile) as af:
            if not af.validate():
                raise Exception(str(af.getFailedTests()))

            self.register(af)
            self.geoupload.uploadToStore(af)

        self.checkUploads()
        self.cleanup()
        self.checkRemoved()

    def testDeleteFile(self):
        with Aptofile.open(testfile) as af:
            if not af.validate():
                raise Exception(str(af.getFailedTests()))

            self.register(af)
            self.geoupload.uploadToStore(af)
            self.geoupload.deleteFile(af)

        self.checkRemoved(resources=False)