Эх сурвалжийг харах

Add shared credential tests

kishikawa katsumi 10 жил өмнө
parent
commit
8e5157b592

+ 4 - 0
Lib/KeychainAccess.xcodeproj/project.pbxproj

@@ -17,6 +17,7 @@
 		142852A71B1CED3500F27BD9 /* KeychainAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 140F19611A49D79400B0016A /* KeychainAccess.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		142EDA851BCB505F00A32149 /* ErrorTypeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 142EDA841BCB505F00A32149 /* ErrorTypeTests.swift */; settings = {ASSET_TAGS = (); }; };
 		142EDA861BCB505F00A32149 /* ErrorTypeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 142EDA841BCB505F00A32149 /* ErrorTypeTests.swift */; settings = {ASSET_TAGS = (); }; };
+		142EDB041BCBB0DD00A32149 /* SharedCredentialTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 142EDB031BCBB0DD00A32149 /* SharedCredentialTests.swift */; settings = {ASSET_TAGS = (); }; };
 		148F9D4A1BCB4118006EDF48 /* EnumTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 148F9D491BCB4118006EDF48 /* EnumTests.swift */; settings = {ASSET_TAGS = (); }; };
 		148F9D4B1BCB4118006EDF48 /* EnumTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 148F9D491BCB4118006EDF48 /* EnumTests.swift */; settings = {ASSET_TAGS = (); }; };
 		14FDD4681B49B9EF00C39FE8 /* KeychainAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 140F19611A49D79400B0016A /* KeychainAccess.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -51,6 +52,7 @@
 		140F196E1A49D79500B0016A /* KeychainAccessTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainAccessTests.swift; sourceTree = "<group>"; };
 		140F197A1A49D89200B0016A /* Keychain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Keychain.swift; sourceTree = "<group>"; };
 		142EDA841BCB505F00A32149 /* ErrorTypeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorTypeTests.swift; sourceTree = "<group>"; };
+		142EDB031BCBB0DD00A32149 /* SharedCredentialTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedCredentialTests.swift; sourceTree = "<group>"; };
 		148F9D491BCB4118006EDF48 /* EnumTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnumTests.swift; sourceTree = "<group>"; };
 		14FDD4601B49B9AD00C39FE8 /* KeychainAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = KeychainAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
@@ -139,6 +141,7 @@
 			isa = PBXGroup;
 			children = (
 				140F196E1A49D79500B0016A /* KeychainAccessTests.swift */,
+				142EDB031BCBB0DD00A32149 /* SharedCredentialTests.swift */,
 				148F9D491BCB4118006EDF48 /* EnumTests.swift */,
 				142EDA841BCB505F00A32149 /* ErrorTypeTests.swift */,
 				140F196C1A49D79500B0016A /* Supporting Files */,
@@ -394,6 +397,7 @@
 				148F9D4A1BCB4118006EDF48 /* EnumTests.swift in Sources */,
 				142EDA851BCB505F00A32149 /* ErrorTypeTests.swift in Sources */,
 				140F196F1A49D79500B0016A /* KeychainAccessTests.swift in Sources */,
+				142EDB041BCBB0DD00A32149 /* SharedCredentialTests.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 5 - 1
Lib/KeychainAccess/Keychain.swift

@@ -735,9 +735,13 @@ public class Keychain {
     #endif
 
     #if os(iOS)
+    /**
+    @abstract Returns a randomly generated password.
+    @return String password in the form xxx-xxx-xxx-xxx where x is taken from the sets "abcdefghkmnopqrstuvwxy", "ABCDEFGHJKLMNPQRSTUVWXYZ", "3456789" with at least one character from each set being present.
+    */
     @available(iOS 8.0, *)
     public class func generatePassword() -> String {
-        return SecCreateSharedWebCredentialPassword() as! String
+        return SecCreateSharedWebCredentialPassword()! as String
     }
     #endif
     

+ 36 - 0
Lib/KeychainAccessTests/SharedCredentialTests.swift

@@ -0,0 +1,36 @@
+//
+//  SharedCredentialTests.swift
+//  KeychainAccessTests
+//
+//  Created by kishikawa katsumi on 10/12/15.
+//  Copyright © 2015 kishikawa katsumi. All rights reserved.
+//
+
+import XCTest
+import KeychainAccess
+
+class SharedCredentialTests: XCTestCase {
+    
+    override func setUp() {
+        super.setUp()
+    }
+
+    override func tearDown() {
+        super.tearDown()
+    }
+
+    func testGeneratePassword() {
+        do {
+            var passwords = Set<String>()
+            for _ in 0...100_000 {
+                let password = Keychain.generatePassword()
+                
+                XCTAssertEqual(password.characters.count, "xxx-xxx-xxx-xxx".characters.count)
+                XCTAssertFalse(passwords.contains(password))
+
+                passwords.insert(password)
+            }
+        }
+
+    }
+}