Index: branches/features/purchaseOrders/test/functional/GebReportingSpecBase.groovy
===================================================================
--- branches/features/purchaseOrders/test/functional/GebReportingSpecBase.groovy	(revision 951)
+++ branches/features/purchaseOrders/test/functional/GebReportingSpecBase.groovy	(revision 952)
@@ -36,3 +36,9 @@
         else loginButton.click(HomePage)
     }
+
+    void logout() {
+        if(logoutButton)
+            logoutButton.click()
+    }
+
 }
Index: branches/features/purchaseOrders/test/functional/LoginSpec.groovy
===================================================================
--- branches/features/purchaseOrders/test/functional/LoginSpec.groovy	(revision 951)
+++ branches/features/purchaseOrders/test/functional/LoginSpec.groovy	(revision 952)
@@ -14,4 +14,5 @@
         then:
         at LoginPage
+        verifyLoggedOut()
     }
 
@@ -22,12 +23,14 @@
         then:
         at HomePage
+        verifyLoggedIn()
     }
 
     def "When we logout, we go to the logout page"() {
         when:
-        logout.click()
+        logout()
 
         then:
         at LogoutPage
+        verifyLoggedOut()
         verifyLogoutMessage()
     }
@@ -40,5 +43,9 @@
         then:
         at LoginPage
+        verifyLoggedOut()
         verifyLoginFailureMessage()
+
+        cleanup:
+        logout()
 
         where:
@@ -59,4 +66,6 @@
         'admin'   | 'pas*'  // Star Wildcard in pattern.
         'admin'   | 'pas%'  // Percentage Wildcard in pattern.
+        'admin'   | 'pas.'  // Dot Wildcard in pattern.
+
         'bogus'   | 'pass'  /* Bogus Username. */
         ''        | 'pass'  // None
@@ -71,7 +80,8 @@
         '*'       | 'pass'  // Star Wildcard.
         '%'       | 'pass'  // Percentage Wildcard.
-        '.'       | 'pass'     // Dot Wildcard.
+        '.'       | 'pass'  // Dot Wildcard.
         'admi*'   | 'pass'  // Star Wildcard in pattern.
         'admi%'   | 'pass'  // Percentage Wildcard in pattern.
+        'admi.'   | 'pass'  // Dot Wildcard in pattern.
     }
 
Index: branches/features/purchaseOrders/test/functional/gnumims/functional/pages/GrailsPage.groovy
===================================================================
--- branches/features/purchaseOrders/test/functional/gnumims/functional/pages/GrailsPage.groovy	(revision 951)
+++ branches/features/purchaseOrders/test/functional/gnumims/functional/pages/GrailsPage.groovy	(revision 952)
@@ -39,4 +39,18 @@
         controllerName { pageId.split('\\.')[0] }
         actionName { pageId.split('\\.')[1] }
+        logoutButton(to:LogoutPage, required: false) { $("a[class=logoutButton]") }
+        message { $("div.body div.message").text() }
+    }
+
+    def verifyLoggedIn() {
+        assert logoutButton
+        return true
+
+    }
+
+    def verifyLoggedOut() {
+        assert !logoutButton
+        return true
+
     }
 
Index: branches/features/purchaseOrders/test/functional/gnumims/functional/pages/HomePage.groovy
===================================================================
--- branches/features/purchaseOrders/test/functional/gnumims/functional/pages/HomePage.groovy	(revision 951)
+++ branches/features/purchaseOrders/test/functional/gnumims/functional/pages/HomePage.groovy	(revision 952)
@@ -6,6 +6,4 @@
 
     static content = {
-        message { $("div.body div.message").text() }
-        logout(to:LogoutPage) { $("a[class=logoutButton]") }
     }
 }
Index: branches/features/purchaseOrders/test/functional/gnumims/functional/pages/LoginPage.groovy
===================================================================
--- branches/features/purchaseOrders/test/functional/gnumims/functional/pages/LoginPage.groovy	(revision 951)
+++ branches/features/purchaseOrders/test/functional/gnumims/functional/pages/LoginPage.groovy	(revision 952)
@@ -13,5 +13,5 @@
 
     def verifyLoginFailureMessage() {
-        assert message.contains("wrong username/password.")
+        assert message.contains("wrong username/password")
         return true
     }
