PageRenderTime 40ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 1ms

/tests/org/owasp/esapi/UserTest.cfc

http://owasp-esapi-coldfusion.googlecode.com/
ColdFusion CFScript | 274 lines | 200 code | 74 blank | 0 comment | 3 complexity | 383a132bec37ffe97edbf5d4bf8bd96d MD5 | raw file
Possible License(s): CPL-1.0
  1. <cfcomponent output="false" extends="BaseTest">
  2. <cffunction name="setup" access="public" returntype="void" output="false">
  3. <!--- Create a Mock ESAPI object and inject a getLogger method --->
  4. <cfset var mockESAPI = createObject('component','mockObject') />
  5. <cfset var userMethods = createObject('component','UserTestMethods') />
  6. <cfset injectMethod(mockESAPI, userMethods, "getLogger") />
  7. <cfset injectMethod(mockESAPI, userMethods, "randomizer") />
  8. <cfset injectMethod(mockESAPI, userMethods, "setRandomizer") />
  9. <!--- Create the User object that we are testing --->
  10. <cfset user = createObject('component', root & 'cfesapi.org.owasp.esapi.User').init(mockESAPI) />
  11. <!--- Create a mock logger, inject the info() method and put it into the user object --->
  12. <cfset mockLogger = createObject('component','mockObject') />
  13. <cfset injectMethod(mockLogger, userMethods, "info") />
  14. <cfset user.setLogger(mockLogger) />
  15. <!--- Create a mock randomizer --->
  16. <cfset mockRandomizer = createObject('component','mockObject') />
  17. <cfset injectMethod(mockRandomizer, userMethods, "getRandomString") />
  18. <!--- Set Randomizer into mockESAPI --->
  19. <cfset mockESAPI.setRandomizer(mockRandomizer) />
  20. </cffunction>
  21. <cffunction name="UserInitShouldReturnIstelf" access="public" returntype="void" output="false">
  22. <cfset assertSame(user,user) />
  23. <cfset assertIsTypeOf(user,'WEB-INF.cftags.component') />
  24. </cffunction>
  25. <cffunction name="UserShouldAllowAddRole" access="public" returntype="void" output="false">
  26. <!--- Add role to user --->
  27. <cfset user.addRole("roleName") />
  28. <cfset assertTrue(user.isInRole("roleName")) />
  29. <cfset assertFalse(user.isInRole("NotRoleName"))>
  30. </cffunction>
  31. <cffunction name="UserShouldAllowAddRolesFromArray" access="public" returntype="void" output="false">
  32. <!--- Create an array for storing roles --->
  33. <cfset var rolesArray = ArrayNew(1) />
  34. <!--- Add roles to array --->
  35. <cfset rolesArray[1] = "Role1" />
  36. <cfset rolesArray[2] = "Role2" />
  37. <cfset rolesArray[3] = "Role3" />
  38. <cfset rolesArray[4] = "Role4" />
  39. <!--- Add roles to user --->
  40. <cfset user.addRoles(rolesArray) />
  41. <cfset assertTrue(user.isInRole("Role1")) />
  42. <cfset assertTrue(user.isInRole("Role2")) />
  43. <cfset assertTrue(user.isInRole("Role3")) />
  44. <cfset assertTrue(user.isInRole("Role4")) />
  45. <cfset assertFalse(user.isInRole("Role5"))>
  46. <cfset assertFalse(user.isInRole("NotRoleName"))>
  47. </cffunction>
  48. <cffunction name="UserShouldAllowAddRolesFromStruct" access="public" returntype="void" output="false">
  49. <!--- Create an array for storing roles --->
  50. <cfset var rolesStruct = StructNew() />
  51. <!--- Add roles to array --->
  52. <cfset rolesStruct.role1 = "Role1" />
  53. <cfset rolesStruct.role2 = "Role2" />
  54. <cfset rolesStruct.role3 = "Role3" />
  55. <cfset rolesStruct.role4 = "Role4" />
  56. <!--- Add roles to user --->
  57. <cfset user.addRoles(rolesStruct) />
  58. <cfset assertTrue(user.isInRole("Role1")) />
  59. <cfset assertTrue(user.isInRole("Role2")) />
  60. <cfset assertTrue(user.isInRole("Role3")) />
  61. <cfset assertTrue(user.isInRole("Role4")) />
  62. <cfset assertFalse(user.isInRole("Role5"))>
  63. <cfset assertFalse(user.isInRole("NotRoleName"))>
  64. </cffunction>
  65. <cffunction name="UserShouldAllowBeingDisabled" access="public" returntype="void" output="false">
  66. <!--- Enabling first, incase the default value is disabled --->
  67. <cfset user.enable() />
  68. <cfset user.disable() />
  69. <!--- isEnabled() should return false --->
  70. <cfset AssertFalse(user.isEnabled()) />
  71. </cffunction>
  72. <cffunction name="UserShouldAllowBeingEnabled" access="public" returntype="void" output="false">
  73. <!--- Disable first, incase the default value is enabled --->
  74. <cfset user.disable() />
  75. <cfset user.enable() />
  76. <!--- isEnabled() should return true --->
  77. <cfset AssertTrue(user.isEnabled()) />
  78. </cffunction>
  79. <cffunction name="UserShouldAllowSetAndGetUserID" access="public" returntype="void" output="false">
  80. <cfset user.setUserID("fakeUserID") />
  81. <cfset assertEquals(user.getUserID(), "fakeUserID") />
  82. </cffunction>
  83. <cffunction name="UserShouldAllowSetAndGetUsername" access="public" returntype="void" output="false">
  84. <cfset user.setUsername("fakeUsername") />
  85. <cfset assertEquals(user.getUsername(), "fakeUsername") />
  86. </cffunction>
  87. <cffunction name="UserShouldAllowResetAndRetrieveCSRFToken" access="public" returntype="void" output="false">
  88. <!--- Reset the token. The method returns the new token so we can compare --->
  89. <cfset var token = user.resetCSRFToken() />
  90. <!--- Compare the returned token with the one retrieved using the getter --->
  91. <cfset assertEquals(token, user.getCSRFToken()) />
  92. </cffunction>
  93. <cffunction name="UserShouldAllowSetAndGetExpiration" access="public" returntype="void" output="false">
  94. <!--- Set local vars --->
  95. <cfset var returnedExpiration = "">
  96. <!--- Set a new Expiration date/time --->
  97. <cfset user.setExpiration("2/26/2009 13:30:00")>
  98. <!--- Get the Expiration time --->
  99. <cfset returnedExpiration = user.getExpiration() />
  100. <!--- Ensure is Date --->
  101. <cfset assertTrue(isDate(returnedExpiration)) />
  102. <!--- Compare the returned value with the previously set value --->
  103. <cfset assertEquals(returnedExpiration, "2/26/2009 13:30:00")>
  104. </cffunction>
  105. <cffunction name="UserShouldReturnFailedLoginCount" access="public" returntype="void" output="false">
  106. <!--- Check initial count, should be zero --->
  107. <cfset assertEquals(0, user.getFailedLoginCount()) />
  108. <!--- Increment --->
  109. <cfset user.incrementFailedLoginCount() />
  110. <!--- Check again, should be 1 --->
  111. <cfset assertEquals(1, user.getFailedLoginCount()) />
  112. <!--- Increment --->
  113. <cfset user.incrementFailedLoginCount() />
  114. <!--- Final check, should be 2 --->
  115. <cfset assertEquals(2, user.getFailedLoginCount()) />
  116. </cffunction>
  117. <cffunction name="UserShouldReturnLastHostAddress" access="public" returntype="void" output="false">
  118. <!--- Set an initial Host Address, this should be fine because the current is blank --->
  119. <cfset user.setLastHostAddress("192.168.0.1") />
  120. <!--- Check the getter to make sure it returns the previously set value --->
  121. <cfset assertEquals(user.getLastHostAddress(), "192.168.0.1") />
  122. <cftry>
  123. <!--- Set a new Host value, this should throw an exception --->
  124. <cfset AssertFalse(user.setLastHostAddress("192.168.0.2")) />
  125. <!--- Catch the exception and assertTrue so that the test passes --->
  126. <cfcatch type="Any">
  127. <cfset debug(cfcatch.type)>
  128. <cfset assertTrue(cfcatch.type eq "cfesapi.org.owasp.esapi.errors.AuthenticationException") />
  129. </cfcatch>
  130. </cftry>
  131. </cffunction>
  132. <cffunction name="UserShouldReturnLastLoginTime" access="public" returntype="void" output="false">
  133. <cfset user.setLastLoginTime("2006-05-09 12:30:00 PM") />
  134. <cfset assertEquals(user.getLastLoginTime(), "2006-05-09 12:30:00 PM")>
  135. <cfset assertTrue(IsDate(user.getLastLoginTime())) />
  136. </cffunction>
  137. <cffunction name="UserShouldReturnLastPasswordChange" access="public" returntype="void" output="false">
  138. <cfset user.setLastPasswordChange("2006-05-09 12:30:00 PM") />
  139. <cfset assertEquals(user.getLastPasswordChange(), "2006-05-09 12:30:00 PM")>
  140. <cfset assertTrue(IsDate(user.getLastPasswordChange())) />
  141. </cffunction>
  142. <cffunction name="UserShouldReturnRolesStruct" access="public" returntype="void" output="false">
  143. <cfset assertIsStruct(user.getRoles()) />
  144. </cffunction>
  145. <cffunction name="UserShouldAllowSetandGetScreenName" access="public" returntype="void" output="false">
  146. <cfset user.setScreenName("Daffy Duck") />
  147. <cfset assertEquals(user.getScreenName(), "Daffy Duck") />
  148. </cffunction>
  149. <cffunction name="UserShouldReturnIsAnonymous" access="public" returntype="void" output="false">
  150. <cfset user.setLoggedIn(true) />
  151. <cfset assertFalse(user.isAnonymous()) />
  152. <cfset user.setLoggedIn(false) />
  153. <cfset assertTrue(user.isAnonymous()) />
  154. </cffunction>
  155. <cffunction name="UserShouldReturnIsExpired" access="public" returntype="void" output="false">
  156. <cfset user.setLoggedIn(true) />
  157. <cfset user.setExpiration("1999-4-14 12:21 AM") />
  158. <cfset assertTrue(user.IsExpired()) />
  159. <cfset user.setExpiration(DateAdd('d', 1, Now())) />
  160. <cfset assertFalse(user.IsExpired()) />
  161. </cffunction>
  162. <cffunction name="UserShouldReturnIsLocked" access="public" returntype="void" output="false">
  163. <cfset user.lock() />
  164. <cfset assertTrue(user.isLocked()) />
  165. <cfset user.unlock(false) />
  166. <cfset assertFalse(user.isLocked()) />
  167. </cffunction>
  168. <cffunction name="UserShouldReturnIsLoggedIn" access="public" returntype="void" output="false">
  169. <cfset user.setLoggedIn(true) />
  170. <cfset assertTrue(user.isLoggedIn()) />
  171. <cfset user.setLoggedIn(false) />
  172. <cfset assertFalse(user.isLoggedIn()) />
  173. </cffunction>
  174. <cffunction name="UserShouldReturnLastFailedLogin" access="public" returntype="void" output="false">
  175. <cfset user.setLastFailedLogin('2009-5-14 12:00:00 PM') />
  176. <cfset assertEquals(user.getLastFailedLogin(), '2009-5-14 12:00:00 PM') />
  177. </cffunction>
  178. <cffunction name="UserShouldAllowRoleRemoval" access="public" returntype="void" output="false">
  179. <!--- Create an array for storing roles --->
  180. <cfset var rolesArray = ArrayNew(1) />
  181. <!--- Add roles to array --->
  182. <cfset rolesArray[1] = "Role1" />
  183. <cfset rolesArray[2] = "Role2" />
  184. <cfset rolesArray[3] = "Role3" />
  185. <cfset rolesArray[4] = "Role4" />
  186. <cfset rolesArray[5] = "Role5" />
  187. <!--- Add roles to user --->
  188. <cfset user.addRoles(rolesArray) />
  189. <cfset assertTrue(user.isInRole("Role1")) />
  190. <cfset assertTrue(user.isInRole("Role2")) />
  191. <!--- Remove a role --->
  192. <cfset user.removeRole("Role3") />
  193. <cfset assertFalse(user.isInRole("Role3")) />
  194. <cfset assertTrue(user.isInRole("Role4")) />
  195. <!--- Remove another --->
  196. <cfset user.removeRole("ROLE5") />
  197. <cfset assertFalse(user.isInRole("Role5"))>
  198. <cfset assertFalse(user.isInRole("NotRoleName"))>
  199. </cffunction>
  200. </cfcomponent>