KeychainSwiftTests.swift 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import XCTest
  2. class KeychainSwiftTests: XCTestCase {
  3. var obj: KeychainSwift!
  4. override func setUp() {
  5. super.setUp()
  6. obj = KeychainSwift()
  7. obj.clear()
  8. obj.lastQueryParameters = nil
  9. }
  10. // MARK: - Set text
  11. // -----------------------
  12. func testSet() {
  13. XCTAssertTrue(obj.set("hello :)", forKey: "key 1"))
  14. XCTAssertEqual("hello :)", obj.get("key 1")!)
  15. }
  16. func testSet_usesAccessibleWhenUnlockedByDefault() {
  17. XCTAssertTrue(obj.set("hello :)", forKey: "key 1"))
  18. let accessValue = obj.lastQueryParameters?[KeychainSwiftConstants.accessible] as? String
  19. XCTAssertEqual(KeychainSwiftAccessOptions.accessibleWhenUnlocked.value, accessValue!)
  20. }
  21. func testSetWithAccessOption() {
  22. obj.set("hello :)", forKey: "key 1", withAccess: .accessibleAfterFirstUnlock)
  23. let accessValue = obj.lastQueryParameters?[KeychainSwiftConstants.accessible] as? String
  24. XCTAssertEqual(KeychainSwiftAccessOptions.accessibleAfterFirstUnlock.value, accessValue!)
  25. }
  26. // MARK: - Set data
  27. // -----------------------
  28. func testSetData() {
  29. let data = "hello world".data(using: String.Encoding.utf8)!
  30. XCTAssertTrue(obj.set(data, forKey: "key 123"))
  31. let dataFromKeychain = obj.getData("key 123")!
  32. let textFromKeychain = String(data: dataFromKeychain, encoding:String.Encoding.utf8)!
  33. XCTAssertEqual("hello world", textFromKeychain)
  34. }
  35. func testSetData_usesAccessibleWhenUnlockedByDefault() {
  36. let data = "hello world".data(using: String.Encoding.utf8)!
  37. obj.set(data, forKey: "key 123")
  38. let accessValue = obj.lastQueryParameters?[KeychainSwiftConstants.accessible] as? String
  39. XCTAssertEqual(KeychainSwiftAccessOptions.accessibleWhenUnlocked.value, accessValue!)
  40. }
  41. // MARK: - Set bool
  42. // -----------------------
  43. func testSetBool() {
  44. XCTAssertTrue(obj.set(true, forKey: "key bool"))
  45. XCTAssertTrue(obj.getBool("key bool")!)
  46. XCTAssertTrue(obj.set(false, forKey: "key bool"))
  47. XCTAssertFalse(obj.getBool("key bool")!)
  48. }
  49. func testSetBool_usesAccessibleWhenUnlockedByDefault() {
  50. XCTAssertTrue(obj.set(false, forKey: "key bool"))
  51. let accessValue = obj.lastQueryParameters?[KeychainSwiftConstants.accessible] as? String
  52. XCTAssertEqual(KeychainSwiftAccessOptions.accessibleWhenUnlocked.value, accessValue!)
  53. }
  54. // MARK: - Get
  55. // -----------------------
  56. func testGet_returnNilWhenValueNotSet() {
  57. XCTAssert(obj.get("key 1") == nil)
  58. }
  59. // MARK: - Get bool
  60. // -----------------------
  61. func testGetBool_returnNilWhenValueNotSet() {
  62. XCTAssert(obj.getBool("some bool key") == nil)
  63. }
  64. // MARK: - Delete
  65. // -----------------------
  66. func testDelete() {
  67. obj.set("hello :)", forKey: "key 1")
  68. obj.delete("key 1")
  69. XCTAssert(obj.get("key 1") == nil)
  70. }
  71. func testDelete_deleteOnSingleKey() {
  72. obj.set("hello :)", forKey: "key 1")
  73. obj.set("hello two", forKey: "key 2")
  74. obj.delete("key 1")
  75. XCTAssertEqual("hello two", obj.get("key 2")!)
  76. }
  77. }