configurationengine/source/cone/public/tests/unittest_layer.py
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
equal deleted inserted replaced
2:87cfa131b535 3:e7e0ae78773e
    16 
    16 
    17 """
    17 """
    18 Test the configuration
    18 Test the configuration
    19 """
    19 """
    20 import unittest
    20 import unittest
    21 import string
    21 
    22 import sys,os
    22 
    23 import __init__
    23 from cone.public import api
    24 
       
    25 from cone.public import api,exceptions,utils
       
    26 from cone.storage import stringstorage
    24 from cone.storage import stringstorage
       
    25 
       
    26 class TestFolder(unittest.TestCase):    
       
    27     storage_class = stringstorage.StringStorage
       
    28     def setUp(self):
       
    29         self.store = self.storage_class.open("temp/layertest.pk","w")
       
    30 
       
    31     def test_create_folder(self):
       
    32         folder = api.Folder(self.store, "subfolder")
       
    33         self.assertTrue(folder)
       
    34 
       
    35     def test_get_path(self):
       
    36         folder = api.Folder(self.store, "foo")
       
    37         self.assertEquals(folder.get_current_path(),"foo")
       
    38 
       
    39     def test_open_resource(self):
       
    40         folder = api.Folder(self.store, "foo")
       
    41         res = folder.open_resource("confml/test.confml","w")
       
    42         res.write("foo.conf")
       
    43         res.close()
       
    44         self.assertEquals(folder.list_resources("", recurse=True),["confml/test.confml"])
       
    45         self.assertEquals(self.store.list_resources("", recurse=True),["foo/confml/test.confml"])
       
    46 
       
    47     def test_open_non_existing_resource(self):
       
    48         folder = api.Folder(self.store, "foo")
       
    49         try:
       
    50             folder.open_resource("confml/test.confml","r")
       
    51         except Exception:
       
    52             pass
       
    53         self.assertEquals(folder.storage.curpath, '')
       
    54 
       
    55     def test_create_two_layers_and_open_resource(self):
       
    56         foo_folder = api.Folder(self.store, "foo")
       
    57         bar_folder = api.Folder(self.store, "bar")
       
    58         res = foo_folder.open_resource("confml/test.confml","w")
       
    59         res.write("foo.conf")
       
    60         res.close()
       
    61         res = foo_folder.open_resource("root.confml","w")
       
    62         res.close()
       
    63         res = bar_folder.open_resource("confml/root.confml","w")
       
    64         res.write("foo.conf")
       
    65         res.close()
       
    66         self.assertEquals(foo_folder.list_resources("", recurse=True),[ 'root.confml', 
       
    67                                                                        'confml/test.confml'])
       
    68         self.assertEquals(self.store.list_resources("", recurse=True),['bar/confml/root.confml', 
       
    69                                                                        'foo/root.confml', 
       
    70                                                                        'foo/confml/test.confml'])        
       
    71         foo_folder.delete_resource("confml/test.confml")
       
    72         self.assertEquals(foo_folder.list_resources("", recurse=True),["root.confml"])
       
    73         self.assertEquals(self.store.list_resources("", recurse=True),["bar/confml/root.confml",
       
    74                                                                        "foo/root.confml"])
       
    75 
    27 
    76 
    28 class TestLayer(unittest.TestCase):    
    77 class TestLayer(unittest.TestCase):    
    29     storage_class = stringstorage.StringStorage
    78     storage_class = stringstorage.StringStorage
       
    79     def setUp(self):
       
    80         self.store = self.storage_class.open("temp/layertest.pk","w")
    30 
    81 
    31     def test_create_layer(self):
    82     def test_create_layer(self):
    32         store = self.storage_class.open("temp/layertest.pk","w")
    83         layer = api.Layer(self.store, "foo")
    33         layer = api.Layer(store, "foo")
       
    34         self.assertTrue(layer)
    84         self.assertTrue(layer)
    35 
    85 
    36 #    def test_create_layer_with_kwargs(self):
    86 #    def test_create_layer_with_kwargs(self):
    37 #        store = self.storage_class.open("temp/layertest.pk","w")
    87 #        self.store = self.storage_class.open("temp/layertest.pk","w")
    38 #        layer = api.Layer(store, "foo",confml_path="foobar", implml_path="")
    88 #        layer = api.Layer(self.store, "foo",confml_path="foobar", implml_path="")
    39 #        self.assertTrue(layer)
    89 #        self.assertTrue(layer)
    40 #        self.assertEquals(layer.confml_folder.get_current_path(),"foo/foobar")
    90 #        self.assertEquals(layer.confml_folder.get_current_path(),"foo/foobar")
    41 #        self.assertEquals(layer.implml_folder.get_current_path(),"foo")
    91 #        self.assertEquals(layer.implml_folder.get_current_path(),"foo")
    42 #        layer = api.Layer(store, "foo",confml_path="f", implml_path="test", content_path="data", doc_path="foo")
    92 #        layer = api.Layer(self.store, "foo",confml_path="f", implml_path="test", content_path="data", doc_path="foo")
    43 #        self.assertEquals(layer.confml_folder.get_current_path(),"foo/f")
    93 #        self.assertEquals(layer.confml_folder.get_current_path(),"foo/f")
    44 #        self.assertEquals(layer.implml_folder.get_current_path(),"foo/test")
    94 #        self.assertEquals(layer.implml_folder.get_current_path(),"foo/test")
    45 #        self.assertEquals(layer.content_folder.get_current_path(),"foo/data")
    95 #        self.assertEquals(layer.content_folder.get_current_path(),"foo/data")
    46 #        self.assertEquals(layer.doc_folder.get_current_path(),"foo/foo")
    96 #        self.assertEquals(layer.doc_folder.get_current_path(),"foo/foo")
    47 #        layer = api.Layer(store, "foo")
    97 #        layer = api.Layer(self.store, "foo")
    48 #        self.assertEquals(layer.confml_folder.get_current_path(),"foo/confml")
    98 #        self.assertEquals(layer.confml_folder.get_current_path(),"foo/confml")
    49 #        self.assertEquals(layer.implml_folder.get_current_path(),"foo/implml")
    99 #        self.assertEquals(layer.implml_folder.get_current_path(),"foo/implml")
    50 #        self.assertEquals(layer.content_folder.get_current_path(),"foo/content")
   100 #        self.assertEquals(layer.content_folder.get_current_path(),"foo/content")
    51 #        self.assertEquals(layer.doc_folder.get_current_path(),"foo/doc")
   101 #        self.assertEquals(layer.doc_folder.get_current_path(),"foo/doc")
    52 
   102 
    53     def test_get_path(self):
   103     def test_get_path(self):
    54         store = self.storage_class.open("temp/layertest.pk","w")
   104         layer = api.Layer(self.store, "foo")
    55         layer = api.Layer(store, "foo")
       
    56         self.assertTrue(layer)
   105         self.assertTrue(layer)
    57         self.assertEquals(layer.get_current_path(),"foo")
   106         self.assertEquals(layer.get_current_path(),"foo")
    58 
   107 
    59     def test_open_resource(self):
   108     def test_open_resource(self):
    60         store = self.storage_class.open("temp/layertest.pk","w")
   109         layer = api.Layer(self.store, "foo")
    61         layer = api.Layer(store, "foo")
       
    62         self.assertTrue(layer)
   110         self.assertTrue(layer)
    63         res = layer.open_resource("confml/test.confml","w")
   111         res = layer.open_resource("confml/test.confml","w")
    64         res.write("foo.conf")
   112         res.write("foo.conf")
    65         res.close()
   113         res.close()
    66         self.assertEquals(layer.list_resources("", True),["confml/test.confml"])
   114         self.assertEquals(layer.list_resources("", recurse=True),["confml/test.confml"])
    67         self.assertEquals(store.list_resources("", True),["foo/confml/test.confml"])
   115         self.assertEquals(self.store.list_resources("", recurse=True),["foo/confml/test.confml"])
    68 
   116 
    69     def test_create_two_layers_and_open_resource(self):
   117     def test_create_two_layers_and_open_resource(self):
    70         store = self.storage_class.open("temp/layertest.pk","w")
   118         foo_layer = api.Layer(self.store, "foo")
    71         foo_layer = api.Layer(store, "foo")
   119         bar_layer = api.Layer(self.store, "bar")
    72         bar_layer = api.Layer(store, "bar")
       
    73         res = foo_layer.open_resource("confml/test.confml","w")
   120         res = foo_layer.open_resource("confml/test.confml","w")
    74         res.write("foo.conf")
   121         res.write("foo.conf")
    75         res.close()
   122         res.close()
    76         res = foo_layer.open_resource("root.confml","w")
   123         res = foo_layer.open_resource("root.confml","w")
    77         res.close()
   124         res.close()
    78         res = bar_layer.open_resource("confml/root.confml","w")
   125         res = bar_layer.open_resource("confml/root.confml","w")
    79         res.write("foo.conf")
   126         res.write("foo.conf")
    80         res.close()
   127         res.close()
    81         self.assertEquals(foo_layer.list_resources("", True),['confml/test.confml', 'root.confml'])
   128         self.assertEquals(foo_layer.list_resources("", recurse=True),['root.confml', 'confml/test.confml'])
    82         self.assertEquals(store.list_resources("", True),['bar/confml/root.confml','foo/confml/test.confml','foo/root.confml'])        
   129         self.assertEquals(self.store.list_resources("", recurse=True),['bar/confml/root.confml', 'foo/root.confml', 'foo/confml/test.confml'])        
    83         foo_layer.delete_resource("confml/test.confml")
   130         foo_layer.delete_resource("confml/test.confml")
    84         self.assertEquals(foo_layer.list_resources("", True),["root.confml"])
   131         self.assertEquals(foo_layer.list_resources("", recurse=True),["root.confml"])
    85         self.assertEquals(store.list_resources("", True),["bar/confml/root.confml","foo/root.confml"])
   132         self.assertEquals(self.store.list_resources("", recurse=True),["bar/confml/root.confml","foo/root.confml"])
    86 
   133 
    87     def test_list_confml(self):
   134     def test_list_confml(self):
    88         store = self.storage_class.open("temp/layertest.pk","w")
   135         layer = api.Layer(self.store, "foo")
    89         layer = api.Layer(store, "foo")
       
    90         res = layer.open_resource("confml/test.confml","w")
   136         res = layer.open_resource("confml/test.confml","w")
    91         res.write("foo.conf")
   137         res.write("foo.conf")
    92         res.close()
   138         res.close()
    93         res = layer.open_resource("confml/foo.confml","w")
   139         res = layer.open_resource("confml/foo.confml","w")
    94         res.write("foo.conf")
   140         res.write("foo.conf")
    97         res.write("foo.conf")
   143         res.write("foo.conf")
    98         res.close()
   144         res.close()
    99         self.assertEquals(layer.list_confml(),['confml/foo.confml', 'confml/test.confml'])
   145         self.assertEquals(layer.list_confml(),['confml/foo.confml', 'confml/test.confml'])
   100 
   146 
   101     def test_list_implml(self):
   147     def test_list_implml(self):
   102         store = self.storage_class.open("temp/layertest.pk","w")
   148         layer = api.Layer(self.store, "foo")
   103         layer = api.Layer(store, "foo")
       
   104         res = layer.open_resource("implml/stuff/test.confml","w")
   149         res = layer.open_resource("implml/stuff/test.confml","w")
   105         res.write("foo.conf")
   150         res.write("foo.conf")
   106         res.close()
   151         res.close()
   107         res = layer.open_resource("confml/foo.confml","w")
   152         res = layer.open_resource("confml/foo.confml","w")
   108         res.write("foo.conf")
   153         res.write("foo.conf")
   111         res.write("foo.conf")
   156         res.write("foo.conf")
   112         res.close()
   157         res.close()
   113         self.assertEquals(layer.list_implml(),['implml/stuff/test.confml'])
   158         self.assertEquals(layer.list_implml(),['implml/stuff/test.confml'])
   114 
   159 
   115     def test_list_content(self):
   160     def test_list_content(self):
   116         store = self.storage_class.open("temp/layertest.pk","w")
   161         layer = api.Layer(self.store, "foo")
   117         layer = api.Layer(store, "foo")
       
   118         res = layer.open_resource("content/bar/test.txt","w")
   162         res = layer.open_resource("content/bar/test.txt","w")
   119         res.write("foo.conf")
   163         res.write("foo.conf")
   120         res.close()
   164         res.close()
   121         res = layer.open_resource("content/foo.confml","w")
   165         res = layer.open_resource("content/foo.confml","w")
   122         res.write("foo.conf")
   166         res.write("foo.conf")
   123         res.close()
   167         res.close()
   124         res = layer.open_resource("root.confml","w")
   168         res = layer.open_resource("root.confml","w")
   125         res.write("foo.conf")
   169         res.write("foo.conf")
   126         res.close()
   170         res.close()
   127         self.assertEquals(layer.list_content(),['content/bar/test.txt', 'content/foo.confml'])
   171         self.assertEquals(layer.list_content(),[ 'content/foo.confml', 'content/bar/test.txt'])
   128 
   172 
   129     def test_list_doc(self):
   173     def test_list_doc(self):
   130         store = self.storage_class.open("temp/layertest.pk","w")
   174         layer = api.Layer(self.store, "foo")
   131         layer = api.Layer(store, "foo")
       
   132         res = layer.open_resource("doc/bar/test.txt","w")
   175         res = layer.open_resource("doc/bar/test.txt","w")
   133         res.write("foo.conf")
   176         res.write("foo.conf")
   134         res.close()
   177         res.close()
   135         res = layer.open_resource("doc/foo.confml","w")
   178         res = layer.open_resource("doc/foo.confml","w")
   136         res.write("foo.conf")
   179         res.write("foo.conf")
   137         res.close()
   180         res.close()
   138         res = layer.open_resource("root.confml","w")
   181         res = layer.open_resource("root.confml","w")
   139         res.write("foo.conf")
   182         res.write("foo.conf")
   140         res.close()
   183         res.close()
   141         self.assertEquals(layer.list_doc(),['doc/bar/test.txt', 'doc/foo.confml'])
   184         self.assertEquals(layer.list_doc(),['doc/foo.confml', 'doc/bar/test.txt' ])
   142 
   185 
   143     def test_list_layer_resources(self):
   186     def test_list_layer_resources(self):
   144         store = self.storage_class.open("temp/layertest.pk","w")
   187         layer = api.Layer(self.store, "foo")
   145         layer = api.Layer(store, "foo")
       
   146         res = layer.open_resource("doc/bar/test.txt","w")
   188         res = layer.open_resource("doc/bar/test.txt","w")
   147         res.write("foo.conf")
   189         res.write("foo.conf")
   148         res.close()
   190         res.close()
   149         res = layer.open_resource("confml/foo.confml","w")
   191         res = layer.open_resource("confml/foo.confml","w")
   150         res.write("foo.conf")
   192         res.write("foo.conf")
   162                                                         'confml/foo.confml', 
   204                                                         'confml/foo.confml', 
   163                                                         'content/data/abc.txt', 
   205                                                         'content/data/abc.txt', 
   164                                                         'doc/bar/test.txt'])
   206                                                         'doc/bar/test.txt'])
   165 
   207 
   166     def test_list_layer_with_sublayer(self):
   208     def test_list_layer_with_sublayer(self):
   167         store = self.storage_class.open("temp/layertest.pk","w")
   209         layer = api.Layer(self.store, "foo", layers=[api.Layer(self.store, "bar")])
   168         layer = api.Layer(store, "foo", layers=[api.Layer(store, "bar")])
       
   169         res = layer.open_resource("doc/bar/test.txt","w")
   210         res = layer.open_resource("doc/bar/test.txt","w")
   170         res.write("foo.conf")
   211         res.write("foo.conf")
   171         res.close()
   212         res.close()
   172         res = layer.open_resource("confml/foo.confml","w")
   213         res = layer.open_resource("confml/foo.confml","w")
   173         res.write("foo.conf")
   214         res.write("foo.conf")
   201                                                'confml/foo.confml',
   242                                                'confml/foo.confml',
   202                                                'bar/confml/hooo.confml'])
   243                                                'bar/confml/hooo.confml'])
   203         self.assertEquals(layer.list_content(),['content/data/abc.txt', 'bar/content/barcode.txt'])
   244         self.assertEquals(layer.list_content(),['content/data/abc.txt', 'bar/content/barcode.txt'])
   204         self.assertEquals(layer.list_doc(),['doc/bar/test.txt'])
   245         self.assertEquals(layer.list_doc(),['doc/bar/test.txt'])
   205 
   246 
       
   247     def test_list_all_related(self):
       
   248         layer = api.Layer(self.store, "foo")
       
   249         res = layer.open_resource("doc/bar/test.txt","w")
       
   250         res.write("foo.conf")
       
   251         res.close()
       
   252         res = layer.open_resource("confml/foo.confml","w")
       
   253         res.write("foo.conf")
       
   254         res.close()
       
   255         res = layer.open_resource("confml/bar.confml","w")
       
   256         res.write("foo.conf")
       
   257         res.close()
       
   258         res = layer.open_resource("content/data/abc.txt","w")
       
   259         res.write("foo.conf")
       
   260         res.close()
       
   261         res = layer.open_resource("foo.txt","w")
       
   262         res.write("foo.conf")
       
   263         res.close()
       
   264         
       
   265         self.assertEquals(layer.list_all_related(),['content/data/abc.txt', 'doc/bar/test.txt'])
       
   266 
       
   267     def test_list_all_related_with_filter(self):
       
   268         store = self.storage_class.open("temp/layertest.pk","w")
       
   269         layer = api.Layer(self.store, "foo")
       
   270         res = layer.open_resource("doc/bar/test.txt","w")
       
   271         res.write("foo.conf")
       
   272         res.close()
       
   273         res = layer.open_resource("confml/foo.confml","w")
       
   274         res.write("foo.conf")
       
   275         res.close()
       
   276         res = layer.open_resource("confml/bar.confml","w")
       
   277         res.write("foo.conf")
       
   278         res.close()
       
   279         res = layer.open_resource("content/data/abc.txt","w")
       
   280         res.write("foo.conf")
       
   281         res.close()
       
   282         res = layer.open_resource("foo.txt","w")
       
   283         res.write("foo.conf")
       
   284         res.close()
       
   285         
       
   286         self.assertEquals(layer.list_all_related(exclude_filters={'content':'.*\.txt'}), ['doc/bar/test.txt'])
       
   287         self.assertEquals(layer.list_all_related(exclude_filters={'doc':'.*\.txt'}), ['content/data/abc.txt'])
       
   288 
       
   289 
       
   290 
       
   291 
   206 class TestCompositeLayer(unittest.TestCase):    
   292 class TestCompositeLayer(unittest.TestCase):    
   207     storage_class = stringstorage.StringStorage
   293     storage_class = stringstorage.StringStorage
       
   294     def setUp(self):
       
   295         self.store = self.storage_class.open("temp/layertest.pk","w")
   208 
   296 
   209     def test_create_compositelayer(self):
   297     def test_create_compositelayer(self):
   210         store = self.storage_class.open("temp/layertestcomposite.pk","w")
   298         clayer = api.CompositeLayer(self.store)
   211         clayer = api.CompositeLayer()
       
   212         self.assertTrue(clayer)
   299         self.assertTrue(clayer)
   213 
   300 
   214     def test_create_with_layer(self):
   301     def test_create_with_layer(self):
   215         store = self.storage_class.open("temp/layertestcomposite.pk","w")
   302         clayer = api.CompositeLayer("sub",layers=[api.Layer(self.store,"test"), api.Layer(self.store,"foo/bar")])
   216         clayer = api.CompositeLayer("sub",layers=[api.Layer(store,"test"), api.Layer(store,"foo/bar")])
       
   217         self.assertEquals(clayer.list_layers(),['test', 'foo/bar'])
   303         self.assertEquals(clayer.list_layers(),['test', 'foo/bar'])
   218 
   304 
   219     def test_create_with_layer_and_add(self):
   305     def test_create_with_layer_and_add(self):
   220         store = self.storage_class.open("temp/layertestcomposite.pk","w")
   306         self.store = self.storage_class.open("temp/layertestcomposite.pk","w")
   221         clayer = api.CompositeLayer(layers=[api.Layer(store,"test"), api.Layer(store,"foo/bar")])
   307         clayer = api.CompositeLayer(self.store, layers=[api.Layer(self.store,"test"), api.Layer(self.store,"foo/bar")])
   222         self.assertEquals(clayer.list_layers(),['test', 'foo/bar'])
   308         self.assertEquals(clayer.list_layers(),['test', 'foo/bar'])
   223         clayer.add_layer(api.Layer(store,"res"))
   309         clayer.add_layer(api.Layer(self.store,"res"))
   224         self.assertEquals(clayer.list_layers(),['test', 'foo/bar', 'res'])
   310         self.assertEquals(clayer.list_layers(),['test', 'foo/bar', 'res'])
   225 
   311 
   226     def test_get_layer(self):
   312     def test_get_layer(self):
   227         store = self.storage_class.open("temp/layertestcomposite.pk","w")
   313         clayer = api.CompositeLayer(self.store, layers=[api.Layer(self.store,"test"), api.Layer(self.store,"foo/bar")])
   228         clayer = api.CompositeLayer(layers=[api.Layer(store,"test"), api.Layer(store,"foo/bar")])
       
   229         self.assertEquals(clayer.list_layers(),['test', 'foo/bar'])
   314         self.assertEquals(clayer.list_layers(),['test', 'foo/bar'])
   230         layer = clayer.get_layer('foo/bar')
   315         layer = clayer.get_layer('foo/bar')
   231         self.assertEquals(layer.get_current_path(),'foo/bar')
   316         self.assertEquals(layer.get_current_path(),'foo/bar')
   232 
   317 
   233     def test_create_layers_with_resources_and_list_with_composite(self):
   318     def test_create_layers_with_resources_and_list_with_composite(self):
   234         store = self.storage_class.open("temp/layertest.pk","w")
   319         foolayer = api.Layer(self.store, "foo")
   235         foolayer = api.Layer(store, "foo")
       
   236         res = foolayer.open_resource("doc/bar/test.txt","w")
   320         res = foolayer.open_resource("doc/bar/test.txt","w")
   237         res.write("foo.conf")
   321         res.write("foo.conf")
   238         res.close()
   322         res.close()
   239         res = foolayer.open_resource("implml/foo2.crml","w")
   323         res = foolayer.open_resource("implml/foo2.crml","w")
   240         res.write("foo.conf")
   324         res.write("foo.conf")
   246         res.write("foo.conf")
   330         res.write("foo.conf")
   247         res.close()
   331         res.close()
   248         res = foolayer.open_resource("foo.txt","w")
   332         res = foolayer.open_resource("foo.txt","w")
   249         res.write("foo.conf")
   333         res.write("foo.conf")
   250         res.close()
   334         res.close()
   251         barlayer = api.Layer(store, "bar")
   335         barlayer = api.Layer(self.store, "bar")
   252         res = barlayer.open_resource("doc/bar/test.txt","w")
   336         res = barlayer.open_resource("doc/bar/test.txt","w")
   253         res.write("foo.conf")
   337         res.write("foo.conf")
   254         res.close()
   338         res.close()
   255         res = barlayer.open_resource("implml/foo.crml","w")
   339         res = barlayer.open_resource("implml/foo.crml","w")
   256         res.write("foo.conf")
   340         res.write("foo.conf")