예제 #1
0
    def test_functions(self):
        self.assertIsInstance(Security.SecKeychainItemGetTypeID(), (int, long))

        self.assertResultHasType(Security.SecKeychainItemDelete, objc._C_INT)
        self.assertArgHasType(Security.SecKeychainItemDelete, 0, objc._C_ID)

        self.assertResultHasType(Security.SecKeychainItemCopyKeychain,
                                 objc._C_INT)
        self.assertArgHasType(Security.SecKeychainItemCopyKeychain, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SecKeychainItemCopyKeychain,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ID,
        )
        self.assertArgIsCFRetained(Security.SecKeychainItemCopyKeychain, 1)

        self.assertResultHasType(Security.SecKeychainItemCreateCopy,
                                 objc._C_INT)
        self.assertArgHasType(Security.SecKeychainItemCreateCopy, 0,
                              objc._C_ID)
        self.assertArgHasType(Security.SecKeychainItemCreateCopy, 1,
                              objc._C_ID)
        self.assertArgHasType(Security.SecKeychainItemCreateCopy, 2,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SecKeychainItemCreateCopy,
            3,
            objc._C_OUT + objc._C_PTR + objc._C_ID,
        )
        self.assertArgIsCFRetained(Security.SecKeychainItemCreateCopy, 3)

        self.assertResultHasType(
            Security.SecKeychainItemCreatePersistentReference, objc._C_INT)
        self.assertArgHasType(
            Security.SecKeychainItemCreatePersistentReference, 0, objc._C_ID)
        self.assertArgHasType(
            Security.SecKeychainItemCreatePersistentReference,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ID,
        )
        self.assertArgIsCFRetained(
            Security.SecKeychainItemCreatePersistentReference, 1)

        self.assertResultHasType(
            Security.SecKeychainItemCopyFromPersistentReference, objc._C_INT)
        self.assertArgHasType(
            Security.SecKeychainItemCopyFromPersistentReference, 0, objc._C_ID)
        self.assertArgHasType(
            Security.SecKeychainItemCopyFromPersistentReference,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ID,
        )
        self.assertArgIsCFRetained(
            Security.SecKeychainItemCopyFromPersistentReference, 1)

        self.assertFalse(hasattr(Security, "SecKeychainItemGetDLDBHandle"))
        self.assertFalse(hasattr(Security, "SecKeychainItemGetUniqueRecordID"))

        self.assertResultHasType(Security.SecKeychainItemCopyAccess,
                                 objc._C_INT)
        self.assertArgHasType(Security.SecKeychainItemCopyAccess, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SecKeychainItemCopyAccess,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ID,
        )
        self.assertArgIsCFRetained(Security.SecKeychainItemCopyAccess, 1)

        self.assertResultHasType(Security.SecKeychainItemSetAccess,
                                 objc._C_INT)
        self.assertArgHasType(Security.SecKeychainItemSetAccess, 0, objc._C_ID)
        self.assertArgHasType(Security.SecKeychainItemSetAccess, 1, objc._C_ID)