SharedCredentialTests.swift 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //
  2. // SharedCredentialTests.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 SharedCredentialTests: XCTestCase {
  28. override func setUp() {
  29. super.setUp()
  30. }
  31. override func tearDown() {
  32. super.tearDown()
  33. }
  34. func testGetSharedPassword() {
  35. do {
  36. let expectation = self.expectation(description: "getSharedPassword")
  37. let keychain = Keychain(server: "https://kishikawakatsumi.com", protocolType: .https)
  38. keychain.getSharedPassword("kishikawakatsumi") { (password, error) -> () in
  39. XCTAssertNil(password)
  40. XCTAssertNotNil(error)
  41. expectation.fulfill()
  42. }
  43. waitForExpectations(timeout: 10.0, handler: nil)
  44. }
  45. do {
  46. let expectation = self.expectation(description: "getSharedPassword")
  47. let keychain = Keychain(server: "https://kishikawakatsumi.com", protocolType: .https)
  48. keychain.getSharedPassword { (account, password, error) -> () in
  49. XCTAssertNil(account)
  50. XCTAssertNil(password)
  51. XCTAssertNotNil(error)
  52. expectation.fulfill()
  53. }
  54. waitForExpectations(timeout: 10.0, handler: nil)
  55. }
  56. }
  57. func testGeneratePassword() {
  58. do {
  59. var passwords = Set<String>()
  60. for _ in 0...100_000 {
  61. let password = Keychain.generatePassword()
  62. #if swift(>=4.2)
  63. XCTAssertEqual(password.count, "xxx-xxx-xxx-xxx".count)
  64. #else
  65. XCTAssertEqual(password.characters.count, "xxx-xxx-xxx-xxx".characters.count)
  66. #endif
  67. XCTAssertFalse(passwords.contains(password))
  68. passwords.insert(password)
  69. }
  70. }
  71. }
  72. }