EnumTests.swift 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. //
  2. // EnumTests.swift
  3. // KeychainAccessTests
  4. //
  5. // Created by kishikawa katsumi on 10/12/15.
  6. // Copyright © 2015 kishikawa katsumi. All rights reserved.
  7. //
  8. // Permission is hereby granted, free of charge, to any person obtaining a copy
  9. // of this software and associated documentation files (the "Software"), to deal
  10. // in the Software without restriction, including without limitation the rights
  11. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  12. // copies of the Software, and to permit persons to whom the Software is
  13. // furnished to do so, subject to the following conditions:
  14. //
  15. // The above copyright notice and this permission notice shall be included in
  16. // all copies or substantial portions of the Software.
  17. //
  18. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  19. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  21. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  22. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  23. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  24. // THE SOFTWARE.
  25. import XCTest
  26. import KeychainAccess
  27. class EnumTests: XCTestCase {
  28. override func setUp() {
  29. super.setUp()
  30. }
  31. override func tearDown() {
  32. super.tearDown()
  33. }
  34. func testItemClass() {
  35. do {
  36. let itemClass = ItemClass(rawValue: kSecClassGenericPassword as String)
  37. XCTAssertEqual(itemClass, .GenericPassword)
  38. XCTAssertEqual(itemClass?.description, "GenericPassword")
  39. }
  40. do {
  41. let itemClass = ItemClass(rawValue: kSecClassInternetPassword as String)
  42. XCTAssertEqual(itemClass, .InternetPassword)
  43. XCTAssertEqual(itemClass?.description, "InternetPassword")
  44. }
  45. do {
  46. let itemClass = ItemClass(rawValue: kSecClassCertificate as String)
  47. XCTAssertNil(itemClass)
  48. }
  49. do {
  50. let itemClass = ItemClass(rawValue: kSecClassKey as String)
  51. XCTAssertNil(itemClass)
  52. }
  53. do {
  54. let itemClass = ItemClass(rawValue: kSecClassIdentity as String)
  55. XCTAssertNil(itemClass)
  56. }
  57. }
  58. func testProtocolType() {
  59. do {
  60. let protocolType = ProtocolType(rawValue: kSecAttrProtocolFTP as String)
  61. XCTAssertEqual(protocolType, .FTP)
  62. XCTAssertEqual(protocolType?.description, "FTP")
  63. }
  64. do {
  65. let protocolType = ProtocolType(rawValue: kSecAttrProtocolFTPAccount as String)
  66. XCTAssertEqual(protocolType, .FTPAccount)
  67. XCTAssertEqual(protocolType?.description, "FTPAccount")
  68. }
  69. do {
  70. let protocolType = ProtocolType(rawValue: kSecAttrProtocolHTTP as String)
  71. XCTAssertEqual(protocolType, .HTTP)
  72. XCTAssertEqual(protocolType?.description, "HTTP")
  73. }
  74. do {
  75. let protocolType = ProtocolType(rawValue: kSecAttrProtocolIRC as String)
  76. XCTAssertEqual(protocolType, .IRC)
  77. XCTAssertEqual(protocolType?.description, "IRC")
  78. }
  79. do {
  80. let protocolType = ProtocolType(rawValue: kSecAttrProtocolNNTP as String)
  81. XCTAssertEqual(protocolType, .NNTP)
  82. XCTAssertEqual(protocolType?.description, "NNTP")
  83. }
  84. do {
  85. let protocolType = ProtocolType(rawValue: kSecAttrProtocolPOP3 as String)
  86. XCTAssertEqual(protocolType, .POP3)
  87. XCTAssertEqual(protocolType?.description, "POP3")
  88. }
  89. do {
  90. let protocolType = ProtocolType(rawValue: kSecAttrProtocolSMTP as String)
  91. XCTAssertEqual(protocolType, .SMTP)
  92. XCTAssertEqual(protocolType?.description, "SMTP")
  93. }
  94. do {
  95. let protocolType = ProtocolType(rawValue: kSecAttrProtocolSOCKS as String)
  96. XCTAssertEqual(protocolType, .SOCKS)
  97. XCTAssertEqual(protocolType?.description, "SOCKS")
  98. }
  99. do {
  100. let protocolType = ProtocolType(rawValue: kSecAttrProtocolIMAP as String)
  101. XCTAssertEqual(protocolType, .IMAP)
  102. XCTAssertEqual(protocolType?.description, "IMAP")
  103. }
  104. do {
  105. let protocolType = ProtocolType(rawValue: kSecAttrProtocolLDAP as String)
  106. XCTAssertEqual(protocolType, .LDAP)
  107. XCTAssertEqual(protocolType?.description, "LDAP")
  108. }
  109. do {
  110. let protocolType = ProtocolType(rawValue: kSecAttrProtocolAppleTalk as String)
  111. XCTAssertEqual(protocolType, .AppleTalk)
  112. XCTAssertEqual(protocolType?.description, "AppleTalk")
  113. }
  114. do {
  115. let protocolType = ProtocolType(rawValue: kSecAttrProtocolAFP as String)
  116. XCTAssertEqual(protocolType, .AFP)
  117. XCTAssertEqual(protocolType?.description, "AFP")
  118. }
  119. do {
  120. let protocolType = ProtocolType(rawValue: kSecAttrProtocolTelnet as String)
  121. XCTAssertEqual(protocolType, .Telnet)
  122. XCTAssertEqual(protocolType?.description, "Telnet")
  123. }
  124. do {
  125. let protocolType = ProtocolType(rawValue: kSecAttrProtocolSSH as String)
  126. XCTAssertEqual(protocolType, .SSH)
  127. XCTAssertEqual(protocolType?.description, "SSH")
  128. }
  129. do {
  130. let protocolType = ProtocolType(rawValue: kSecAttrProtocolFTPS as String)
  131. XCTAssertEqual(protocolType, .FTPS)
  132. XCTAssertEqual(protocolType?.description, "FTPS")
  133. }
  134. do {
  135. let protocolType = ProtocolType(rawValue: kSecAttrProtocolHTTPS as String)
  136. XCTAssertEqual(protocolType, .HTTPS)
  137. XCTAssertEqual(protocolType?.description, "HTTPS")
  138. }
  139. do {
  140. let protocolType = ProtocolType(rawValue: kSecAttrProtocolHTTPProxy as String)
  141. XCTAssertEqual(protocolType, .HTTPProxy)
  142. XCTAssertEqual(protocolType?.description, "HTTPProxy")
  143. }
  144. do {
  145. let protocolType = ProtocolType(rawValue: kSecAttrProtocolHTTPSProxy as String)
  146. XCTAssertEqual(protocolType, .HTTPSProxy)
  147. XCTAssertEqual(protocolType?.description, "HTTPSProxy")
  148. }
  149. do {
  150. let protocolType = ProtocolType(rawValue: kSecAttrProtocolFTPProxy as String)
  151. XCTAssertEqual(protocolType, .FTPProxy)
  152. XCTAssertEqual(protocolType?.description, "FTPProxy")
  153. }
  154. do {
  155. let protocolType = ProtocolType(rawValue: kSecAttrProtocolSMB as String)
  156. XCTAssertEqual(protocolType, .SMB)
  157. XCTAssertEqual(protocolType?.description, "SMB")
  158. }
  159. do {
  160. let protocolType = ProtocolType(rawValue: kSecAttrProtocolRTSP as String)
  161. XCTAssertEqual(protocolType, .RTSP)
  162. XCTAssertEqual(protocolType?.description, "RTSP")
  163. }
  164. do {
  165. let protocolType = ProtocolType(rawValue: kSecAttrProtocolRTSPProxy as String)
  166. XCTAssertEqual(protocolType, .RTSPProxy)
  167. XCTAssertEqual(protocolType?.description, "RTSPProxy")
  168. }
  169. do {
  170. let protocolType = ProtocolType(rawValue: kSecAttrProtocolDAAP as String)
  171. XCTAssertEqual(protocolType, .DAAP)
  172. XCTAssertEqual(protocolType?.description, "DAAP")
  173. }
  174. do {
  175. let protocolType = ProtocolType(rawValue: kSecAttrProtocolEPPC as String)
  176. XCTAssertEqual(protocolType, .EPPC)
  177. XCTAssertEqual(protocolType?.description, "EPPC")
  178. }
  179. do {
  180. let protocolType = ProtocolType(rawValue: kSecAttrProtocolIPP as String)
  181. XCTAssertEqual(protocolType, .IPP)
  182. XCTAssertEqual(protocolType?.description, "IPP")
  183. }
  184. do {
  185. let protocolType = ProtocolType(rawValue: kSecAttrProtocolNNTPS as String)
  186. XCTAssertEqual(protocolType, .NNTPS)
  187. XCTAssertEqual(protocolType?.description, "NNTPS")
  188. }
  189. do {
  190. let protocolType = ProtocolType(rawValue: kSecAttrProtocolLDAPS as String)
  191. XCTAssertEqual(protocolType, .LDAPS)
  192. XCTAssertEqual(protocolType?.description, "LDAPS")
  193. }
  194. do {
  195. let protocolType = ProtocolType(rawValue: kSecAttrProtocolTelnetS as String)
  196. XCTAssertEqual(protocolType, .TelnetS)
  197. XCTAssertEqual(protocolType?.description, "TelnetS")
  198. }
  199. do {
  200. let protocolType = ProtocolType(rawValue: kSecAttrProtocolIMAPS as String)
  201. XCTAssertEqual(protocolType, .IMAPS)
  202. XCTAssertEqual(protocolType?.description, "IMAPS")
  203. }
  204. do {
  205. let protocolType = ProtocolType(rawValue: kSecAttrProtocolIRCS as String)
  206. XCTAssertEqual(protocolType, .IRCS)
  207. XCTAssertEqual(protocolType?.description, "IRCS")
  208. }
  209. do {
  210. let protocolType = ProtocolType(rawValue: kSecAttrProtocolPOP3S as String)
  211. XCTAssertEqual(protocolType, .POP3S)
  212. XCTAssertEqual(protocolType?.description, "POP3S")
  213. }
  214. }
  215. func testAuthenticationType() {
  216. do {
  217. let authenticationType = AuthenticationType(rawValue: kSecAttrAuthenticationTypeNTLM as String)
  218. XCTAssertEqual(authenticationType, .NTLM)
  219. XCTAssertEqual(authenticationType?.description, "NTLM")
  220. }
  221. do {
  222. let authenticationType = AuthenticationType(rawValue: kSecAttrAuthenticationTypeMSN as String)
  223. XCTAssertEqual(authenticationType, .MSN)
  224. XCTAssertEqual(authenticationType?.description, "MSN")
  225. }
  226. do {
  227. let authenticationType = AuthenticationType(rawValue: kSecAttrAuthenticationTypeDPA as String)
  228. XCTAssertEqual(authenticationType, .DPA)
  229. XCTAssertEqual(authenticationType?.description, "DPA")
  230. }
  231. do {
  232. let authenticationType = AuthenticationType(rawValue: kSecAttrAuthenticationTypeRPA as String)
  233. XCTAssertEqual(authenticationType, .RPA)
  234. XCTAssertEqual(authenticationType?.description, "RPA")
  235. }
  236. do {
  237. let authenticationType = AuthenticationType(rawValue: kSecAttrAuthenticationTypeHTTPBasic as String)
  238. XCTAssertEqual(authenticationType, .HTTPBasic)
  239. XCTAssertEqual(authenticationType?.description, "HTTPBasic")
  240. }
  241. do {
  242. let authenticationType = AuthenticationType(rawValue: kSecAttrAuthenticationTypeHTTPDigest as String)
  243. XCTAssertEqual(authenticationType, .HTTPDigest)
  244. XCTAssertEqual(authenticationType?.description, "HTTPDigest")
  245. }
  246. do {
  247. let authenticationType = AuthenticationType(rawValue: kSecAttrAuthenticationTypeHTMLForm as String)
  248. XCTAssertEqual(authenticationType, .HTMLForm)
  249. XCTAssertEqual(authenticationType?.description, "HTMLForm")
  250. }
  251. do {
  252. let authenticationType = AuthenticationType(rawValue: kSecAttrAuthenticationTypeDefault as String)
  253. XCTAssertEqual(authenticationType, .Default)
  254. XCTAssertEqual(authenticationType?.description, "Default")
  255. }
  256. }
  257. func testAccessibility() {
  258. guard #available(OSX 10.10, *) else {
  259. return
  260. }
  261. do {
  262. let accessibility = Accessibility(rawValue: kSecAttrAccessibleWhenUnlocked as String)
  263. XCTAssertEqual(accessibility, .WhenUnlocked)
  264. XCTAssertEqual(accessibility?.description, "WhenUnlocked")
  265. }
  266. do {
  267. let accessibility = Accessibility(rawValue: kSecAttrAccessibleAfterFirstUnlock as String)
  268. XCTAssertEqual(accessibility, .AfterFirstUnlock)
  269. XCTAssertEqual(accessibility?.description, "AfterFirstUnlock")
  270. }
  271. do {
  272. let accessibility = Accessibility(rawValue: kSecAttrAccessibleAlways as String)
  273. XCTAssertEqual(accessibility, .Always)
  274. XCTAssertEqual(accessibility?.description, "Always")
  275. }
  276. do {
  277. let accessibility = Accessibility(rawValue: kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly as String)
  278. XCTAssertEqual(accessibility, .WhenPasscodeSetThisDeviceOnly)
  279. XCTAssertEqual(accessibility?.description, "WhenPasscodeSetThisDeviceOnly")
  280. }
  281. do {
  282. let accessibility = Accessibility(rawValue: kSecAttrAccessibleWhenUnlockedThisDeviceOnly as String)
  283. XCTAssertEqual(accessibility, .WhenUnlockedThisDeviceOnly)
  284. XCTAssertEqual(accessibility?.description, "WhenUnlockedThisDeviceOnly")
  285. }
  286. do {
  287. let accessibility = Accessibility(rawValue: kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly as String)
  288. XCTAssertEqual(accessibility, .AfterFirstUnlockThisDeviceOnly)
  289. XCTAssertEqual(accessibility?.description, "AfterFirstUnlockThisDeviceOnly")
  290. }
  291. do {
  292. let accessibility = Accessibility(rawValue: kSecAttrAccessibleAlwaysThisDeviceOnly as String)
  293. XCTAssertEqual(accessibility, .AlwaysThisDeviceOnly)
  294. XCTAssertEqual(accessibility?.description, "AlwaysThisDeviceOnly")
  295. }
  296. }
  297. }