diff --git a/storm/tests/test_flavors.py b/storm/tests/test_flavors.py
index cdac903..a4fa2f3 100644
--- a/storm/tests/test_flavors.py
+++ b/storm/tests/test_flavors.py
@@ -15,7 +15,7 @@
 
     @attr(type='smoke')
     def test_list_flavors(self):
-        """ List of all flavors should contain the expected flavor """
+        """List of all flavors should contain the expected flavor"""
         resp, body = self.client.list_flavors()
         flavors = body['flavors']
 
@@ -26,7 +26,7 @@
 
     @attr(type='smoke')
     def test_list_flavors_with_detail(self):
-        """ Detailed list of all flavors should contain the expected flavor """
+        """Detailed list of all flavors should contain the expected flavor"""
         resp, body = self.client.list_flavors_with_detail()
         flavors = body['flavors']
         resp, flavor = self.client.get_flavor_details(self.flavor_id)
@@ -34,6 +34,6 @@
 
     @attr(type='smoke')
     def test_get_flavor(self):
-        """ The expected flavor details should be returned """
+        """The expected flavor details should be returned"""
         resp, flavor = self.client.get_flavor_details(self.flavor_id)
         self.assertEqual(self.flavor_id, flavor['id'])
diff --git a/storm/tests/test_server_actions.py b/storm/tests/test_server_actions.py
index e93ed2b..d6ff11c 100644
--- a/storm/tests/test_server_actions.py
+++ b/storm/tests/test_server_actions.py
@@ -30,7 +30,7 @@
 
     @attr(type='smoke')
     def test_change_server_password(self):
-        """ The server's password should be set to the provided password """
+        """The server's password should be set to the provided password"""
         resp, body = self.client.change_password(self.id, 'newpass')
         self.client.wait_for_server_status(self.id, 'ACTIVE')
         #TODO: SSH in to verify the new password works
@@ -45,7 +45,7 @@
 
     @attr(type='smoke')
     def test_reboot_server_soft(self):
-        """ The server should be signaled to reboot gracefully """
+        """The server should be signaled to reboot gracefully"""
         #TODO: Add validation the server has been rebooted
 
         resp, body = self.client.reboot(self.id, 'SOFT')
@@ -53,7 +53,7 @@
 
     @attr(type='smoke')
     def test_rebuild_server(self):
-        """ The server should be rebuilt using the provided image """
+        """The server should be rebuilt using the provided image"""
 
         self.client.rebuild(self.id, self.image_ref_alt, name='rebuiltserver')
         self.client.wait_for_server_status(self.id, 'ACTIVE')
diff --git a/storm/tests/test_server_details.py b/storm/tests/test_server_details.py
new file mode 100644
index 0000000..a27d838
--- /dev/null
+++ b/storm/tests/test_server_details.py
@@ -0,0 +1,99 @@
+from nose.plugins.attrib import attr
+from storm import openstack
+from storm.common.utils.data_utils import rand_name
+import unittest2 as unittest
+import storm.config
+
+
+class ServerDetailsTest(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.os = openstack.Manager()
+        cls.client = cls.os.servers_client
+        cls.config = storm.config.StormConfig()
+        cls.image_ref = cls.config.env.image_ref
+        cls.flavor_ref = cls.config.env.flavor_ref
+        cls.image_ref_alt = cls.config.env.image_ref_alt
+        cls.flavor_ref_alt = cls.config.env.flavor_ref_alt
+
+        cls.s1_name = rand_name('server')
+        resp, server = cls.client.create_server(cls.s1_name, cls.image_ref,
+                                                cls.flavor_ref)
+        cls.client.wait_for_server_status(server['id'], 'ACTIVE')
+        resp, cls.s1 = cls.client.get_server(server['id'])
+
+        cls.s2_name = rand_name('server')
+        resp, server = cls.client.create_server(cls.s2_name, cls.image_ref_alt,
+                                                cls.flavor_ref)
+        cls.client.wait_for_server_status(server['id'], 'ACTIVE')
+        resp, cls.s2 = cls.client.get_server(server['id'])
+
+        cls.s3_name = rand_name('server')
+        resp, server = cls.client.create_server(cls.s3_name, cls.image_ref,
+                                                cls.flavor_ref_alt)
+        cls.client.wait_for_server_status(server['id'], 'ACTIVE')
+        resp, cls.s3 = cls.client.get_server(server['id'])
+
+    @classmethod
+    def tearDownClass(cls):
+        cls.client.delete_server(cls.s1['id'])
+        cls.client.delete_server(cls.s2['id'])
+        cls.client.delete_server(cls.s3['id'])
+
+    def test_list_servers_with_detail(self):
+        """ Return a detailed list of all servers """
+        resp, body = self.client.list_servers_with_detail()
+        servers = body['servers']
+
+        self.assertTrue(self.s1 in servers)
+        self.assertTrue(self.s2 in servers)
+        self.assertTrue(self.s3 in servers)
+
+    def test_list_servers_detailed_filter_by_image(self):
+        """Filter the detailed list of servers by image"""
+        params = {'image': self.image_ref}
+        resp, body = self.client.list_servers_with_detail(params)
+        servers = body['servers']
+
+        self.assertTrue(self.s1 in servers)
+        self.assertTrue(self.s2 not in servers)
+        self.assertTrue(self.s3 in servers)
+
+    def test_list_servers_detailed_filter_by_flavor(self):
+        """Filter the detailed list of servers by flavor"""
+        params = {'flavor': self.flavor_ref_alt}
+        resp, body = self.client.list_servers_with_detail(params)
+        servers = body['servers']
+
+        self.assertTrue(self.s1 not in servers)
+        self.assertTrue(self.s2 not in servers)
+        self.assertTrue(self.s3 in servers)
+
+    def test_list_servers_detailed_filter_by_server_name(self):
+        """Filter the detailed list of servers by server name"""
+        params = {'name': self.s1_name}
+        resp, body = self.client.list_servers_with_detail(params)
+        servers = body['servers']
+
+        self.assertTrue(self.s1 in servers)
+        self.assertTrue(self.s2 not in servers)
+        self.assertTrue(self.s3 not in servers)
+
+    def test_list_servers_detailed_filter_by_server_status(self):
+        """Filter the detailed list of servers by server status"""
+        params = {'status': 'active'}
+        resp, body = self.client.list_servers_with_detail(params)
+        servers = body['servers']
+
+        self.assertTrue(self.s1 in servers)
+        self.assertTrue(self.s2 in servers)
+        self.assertTrue(self.s3 in servers)
+
+    def test_get_server_details(self):
+        """Return the full details of a single server"""
+        resp, server = self.client.get_server(self.s1['id'])
+
+        self.assertEqual(self.s1_name, server['name'])
+        self.assertEqual(self.image_ref, server['image']['id'])
+        self.assertEqual(str(self.flavor_ref), server['flavor']['id'])
diff --git a/storm/tests/test_servers.py b/storm/tests/test_servers.py
index 958da69..8f4bae7 100644
--- a/storm/tests/test_servers.py
+++ b/storm/tests/test_servers.py
@@ -77,7 +77,7 @@
 
     @attr(type='smoke')
     def test_update_server_name(self):
-        """ The server name should be changed to the the provided value """
+        """The server name should be changed to the the provided value"""
         name = rand_name('server')
         resp, server = self.client.create_server(name, self.image_ref,
                                                  self.flavor_ref)
