KeychainSwiftTests.swift 3.0 KB

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