summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2013-06-30 09:01:10 +0200
committerMichal Minar <miminar@redhat.com>2013-07-03 18:28:46 +0200
commit9db810ebb1d7d4c7b80cb71d94b4efb942ff4725 (patch)
tree42b0fcb812444beaf43ad290d707aa3df0e14cad /src
parent9385cf6d59be89d81bb137d77907c7bb4699bdf6 (diff)
downloadopenlmi-providers-9db810ebb1d7d4c7b80cb71d94b4efb942ff4725.tar.gz
openlmi-providers-9db810ebb1d7d4c7b80cb71d94b4efb942ff4725.tar.xz
openlmi-providers-9db810ebb1d7d4c7b80cb71d94b4efb942ff4725.zip
added tests for SoftwareIdentityChecks
Diffstat (limited to 'src')
-rwxr-xr-xsrc/software/test/test_software_identity_checks.py144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/software/test/test_software_identity_checks.py b/src/software/test/test_software_identity_checks.py
new file mode 100755
index 0000000..9ebd7ff
--- /dev/null
+++ b/src/software/test/test_software_identity_checks.py
@@ -0,0 +1,144 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2012-2013 Red Hat, Inc. All rights reserved.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Authors: Michal Minar <miminar@redhat.com>
+#
+"""
+Unit tests for LMI_SoftwareIdentityChecks provider.
+"""
+
+import pywbem
+import socket
+import unittest
+
+import base
+import rpmcache
+
+class TestSoftwareIdentityChecks(base.SoftwareBaseTestCase):
+ """
+ Basic cim operations test.
+ """
+
+ CLASS_NAME = "LMI_SoftwareIdentityChecks"
+ KEYS = ("Check", "Element")
+
+ @classmethod
+ def needs_pkgdb_files(cls):
+ return True
+
+ def make_op(self, pkg, filepath, newer=True):
+ """
+ @return object path of SoftwareIdentityChecks association
+ """
+ objpath = self.objpath.copy()
+ objpath["Check"] = pywbem.CIMInstanceName(
+ classname="LMI_SoftwareIdentityFileCheck",
+ namespace="root/cimv2",
+ keybindings=pywbem.NocaseDict({
+ "CheckID" : 'LMI:LMI_SoftwareIdentityFileCheck',
+ "Name" : filepath,
+ "SoftwareElementID" : pkg.get_nevra(
+ newer=newer, with_epoch="ALWAYS"),
+ "SoftwareElementState" : pywbem.Uint16(2), #Executable
+ "TargetOperatingSystem" : pywbem.Uint16(36), #LINUX
+ "Version" : getattr(pkg, 'up_evra' if newer else 'evra')
+ }))
+ objpath["Element"] = pywbem.CIMInstanceName(
+ classname="LMI_SoftwareIdentity",
+ namespace="root/cimv2",
+ keybindings=pywbem.NocaseDict({
+ "InstanceID" : 'LMI:LMI_SoftwareIdentity:'
+ + pkg.get_nevra(newer=newer, with_epoch="ALWAYS")
+ }))
+ return objpath
+
+ def test_get_instance(self):
+ """
+ Tests GetInstance call on packages from our rpm cache.
+ """
+ for pkg in self.safe_pkgs:
+ for filepath in self.pkgdb_files[pkg.name]:
+ objpath = self.make_op(pkg, filepath)
+ inst = self.conn.GetInstance(InstanceName=objpath)
+ self.assertEqual(inst.path, objpath,
+ "Object paths should match for package %s"%pkg)
+ for key in self.KEYS:
+ self.assertTrue(inst.properties.has_key(key),
+ "OP is missing \"%s\" key for package %s"%(key, pkg))
+ self.assertEqual(inst[key], inst.path[key])
+ self.assertEqual(objpath, inst.path,
+ "Object paths should match for package %s"%pkg)
+
+ def test_enum_instance_names(self):
+ """
+ Tests EnumInstances call on identity checks - should not be supported.
+ """
+ self.assertRaisesCIM(pywbem.CIM_ERR_NOT_SUPPORTED,
+ self.conn.EnumerateInstanceNames, ClassName=self.CLASS_NAME)
+
+ def test_get_identity_referents(self):
+ """
+ Test AssociatorNames for Element(SoftwareIdentity).
+ """
+ for pkg in self.safe_pkgs:
+ files = self.pkgdb_files[pkg.name]
+ objpath = self.make_op(pkg, files[0])
+ refs = self.conn.AssociatorNames(
+ Role="Element",
+ ObjectName=objpath["Element"],
+ ResultRole="Check",
+ ResultClass="LMI_SoftwareIdentityFileCheck")
+ srefs = set(refs)
+ for ref in refs:
+ self.assertIsInstance(ref, pywbem.CIMInstanceName)
+ self.assertEqual(ref.namespace, 'root/cimv2')
+ self.assertEqual(ref.classname,
+ "LMI_SoftwareIdentityFileCheck")
+ self.assertIn(ref["Name"], set(r["Name"] for r in refs))
+ self.assertEqual(sorted(ref.keys()),
+ ["CheckID", "Name", "SoftwareElementID",
+ "SoftwareElementState",
+ "TargetOperatingSystem", "Version"])
+ self.assertEqual(
+ pkg.get_nevra(newer=True, with_epoch='ALWAYS'),
+ ref["SoftwareElementID"])
+
+ def test_get_check_referents(self):
+ """
+ Test AssociatorNames for Check(SoftwareIdentityFileCheck).
+ """
+ for pkg in self.safe_pkgs:
+ files = self.pkgdb_files[pkg.name]
+ for filepath in files:
+ objpath = self.make_op(pkg, filepath)
+ refs = self.conn.AssociatorNames(
+ ObjectName=objpath["Check"],
+ Role="Check",
+ ResultRole="Element",
+ ResultClass="LMI_SoftwareIdentity")
+ self.assertEqual(len(refs), 1)
+ ref = refs[0]
+ self.assertEqual(objpath["Element"], ref)
+
+def suite():
+ """For unittest loaders."""
+ return unittest.TestLoader().loadTestsFromTestCase(
+ TestSoftwareIdentityChecks)
+
+if __name__ == '__main__':
+ unittest.main()