configurationengine/source/cone/storage/tests/unittest_metadata.py
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
equal deleted inserted replaced
-1:000000000000 0:2e8eeb919028
       
     1 #
       
     2 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 # All rights reserved.
       
     4 # This component and the accompanying materials are made available
       
     5 # under the terms of "Eclipse Public License v1.0"
       
     6 # which accompanies this distribution, and is available
       
     7 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 #
       
     9 # Initial Contributors:
       
    10 # Nokia Corporation - initial contribution.
       
    11 #
       
    12 # Contributors:
       
    13 #
       
    14 # Description: 
       
    15 #
       
    16 
       
    17 
       
    18 """
       
    19 Test the CPF metadata file parsing routines
       
    20 """
       
    21 import os, sys, unittest
       
    22 try:
       
    23     from cElementTree import ElementTree
       
    24 except ImportError:
       
    25     try:    
       
    26         from elementtree import ElementTree
       
    27     except ImportError:
       
    28         try:
       
    29             from xml.etree import cElementTree as ElementTree
       
    30         except ImportError:
       
    31             from xml.etree import ElementTree
       
    32 
       
    33 import __init__
       
    34 
       
    35 from cone.public import utils, exceptions, api
       
    36 from cone.storage import metadata, stringstorage
       
    37 ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
       
    38 emptytestdata  = '<?xml version="1.0" encoding="ASCII"?>'\
       
    39 '<metadata xmlns="http://www.nokia.com/xml/ns/confml-core/metadata-2.0"/>'
       
    40 
       
    41 
       
    42 testdata  = \
       
    43 '<metadata xmlns="http://www.nokia.com/xml/ns/confml-core/metadata-2.0">'\
       
    44 '  <property name="cpf.name" value="test"/>'\
       
    45 '  <property name="cpf.description" value="just testing"/>'\
       
    46 '  <property name="cpf.viewId" value="Sample View"/>'\
       
    47 '  <property name="cpf.rootFile" value="root.confml"/>'\
       
    48 '  <property name="cpf.dataFile"/>'\
       
    49 '  <property name="cpf.author"/>'\
       
    50 '  <property name="cpf.version"/>'\
       
    51 '  <property name="cpf.product"/>'\
       
    52 '  <property name="cpf.customer"/>'\
       
    53 '  <property name="cpf.platform"/>'\
       
    54 '  <property name="cpf.release"/>'\
       
    55 '  <property name="cpf.date"/>'\
       
    56 '  <property name="cpf.owner"/>'\
       
    57 '</metadata>'\
       
    58 
       
    59 class TestMetadataReader(unittest.TestCase):
       
    60     def setUp(self):
       
    61         pass
       
    62     
       
    63     def test_create_meta_fromstring(self):
       
    64         m = metadata.MetadataReader().fromstring(testdata)
       
    65         self.assertTrue(m)
       
    66         
       
    67     def test_create_meta_fromstring(self):
       
    68         m = metadata.MetadataReader().fromstring(testdata)
       
    69         self.assertTrue(m.data.has_key('cpf.name'))
       
    70         self.assertTrue(m.data.has_key('cpf.description'))
       
    71         self.assertTrue(m.data.has_key('cpf.viewId'))
       
    72         self.assertTrue(m.data.has_key('cpf.rootFile'))
       
    73         self.assertEquals(m.data['cpf.name'], 'test')
       
    74         self.assertEquals(m.data['cpf.description'], 'just testing')
       
    75         self.assertEquals(m.data['cpf.viewId'], 'Sample View')
       
    76         self.assertEquals(m.data['cpf.rootFile'], 'root.confml')
       
    77 
       
    78     def test_str_to_meta_and_back(self):
       
    79         meta = metadata.MetadataReader().fromstring(testdata)
       
    80         str = metadata.MetadataWriter().tostring(meta,False)
       
    81         self.assertTrue(str.find('cpf.name'))
       
    82         
       
    83     def test_get_property(self):
       
    84         etree = ElementTree.fromstring('<property name="test" value="test"/>')
       
    85         (key,value) = metadata.MetadataReader().get_property(etree)
       
    86         self.assertEquals(key,'test')
       
    87         self.assertEquals(value,'test')
       
    88         
       
    89     def test_get_property_with_only_key(self):
       
    90         etree = ElementTree.fromstring('<property name="test"/>')
       
    91         (key,value) = metadata.MetadataReader().get_property(etree)
       
    92         self.assertEquals(key,'test')
       
    93         self.assertEquals(value,'')
       
    94 
       
    95 class TestMetadataWriter(unittest.TestCase):
       
    96     def setUp(self):
       
    97         pass
       
    98 
       
    99     def test_metadata_tostring(self):
       
   100         meta = metadata.Metadata()
       
   101         str = metadata.MetadataWriter().tostring(meta)
       
   102         self.assertTrue(str,emptytestdata)
       
   103 
       
   104     def test_metadata_with_values_tostring(self):
       
   105         meta = metadata.Metadata()
       
   106         meta.data['cpf.name'] = 'testing ss'
       
   107         meta.data['cpf.description'] = 'foo faa'
       
   108         str = metadata.MetadataWriter().tostring(meta)
       
   109         self.assertTrue(str,'<metadata xmlns="http://www.nokia.com/xml/ns/confml-core/metadata-2.0"><property name="cpf.name" value="testing ss" /><property name="cpf.description" value="foo faa" /></metadata>')
       
   110 
       
   111     def test_metadata_with_values_to_resource(self):
       
   112         meta = metadata.Metadata()
       
   113         meta.data['cpf.name'] = 'testing ss'
       
   114         meta.data['cpf.description'] = 'foo faa'
       
   115         storage = stringstorage.StringStorage("")
       
   116         res = storage.open_resource(".metadata","w")
       
   117         metadata.MetadataWriter().toresource(meta,res)
       
   118         self.assertTrue(res.getvalue(),'<metadata xmlns="http://www.nokia.com/xml/ns/confml-core/metadata-2.0"><property name="cpf.name" value="testing ss" /><property name="cpf.description" value="foo faa" /></metadata>')
       
   119 
       
   120     def test_metadata_from_meta_to_str_and_back(self):
       
   121         meta = metadata.Metadata()
       
   122         meta.data['cpf.name'] = 'testing ss'
       
   123         meta.data['cpf.description'] = 'foo faa'
       
   124         str = metadata.MetadataWriter().tostring(meta)
       
   125         meta2 = metadata.MetadataReader().fromstring(str)
       
   126         self.assertEqual(meta.data,meta2.data)
       
   127 
       
   128     def test_incorrect_class_fails(self):
       
   129         try:
       
   130             class dummy:
       
   131                 pass 
       
   132             str = metadata.MetadataWriter().tostring(dummy())
       
   133             self.fail("Writing dummy class succeeds!")
       
   134         except exceptions.IncorrectClassError,e:
       
   135             pass
       
   136         
       
   137         
       
   138     def test_set_property(self):
       
   139         elem = ElementTree.Element('property')
       
   140         prop = metadata.MetadataWriter().set_property(elem,'test','foof')
       
   141         self.assertTrue(prop.get('name'),'test')
       
   142         self.assertTrue(prop.get('value'),'foof')
       
   143 
       
   144     def test_set_property_with_only_key(self):
       
   145         elem = ElementTree.Element('property')
       
   146         prop = metadata.MetadataWriter().set_property(elem,'test','')
       
   147         self.assertEquals(prop.get('name'),'test')
       
   148         self.assertEquals(prop.get('value'),None)
       
   149 
       
   150 
       
   151 if __name__ == '__main__':
       
   152     unittest.main()
       
   153