FBSDKLoginKit/FBSDKLoginKitTests/FBPermissionTests.swift (73 lines of code) (raw):
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*/
@testable import FBSDKLoginKit
import XCTest
final class FBPermissionTests: XCTestCase {
func testInvalidPermissions() {
let rawPermissions = [
"",
"foo bar",
"PUBLIC_PROFILE",
"public profile",
"public-profile",
"123_abc",
]
rawPermissions.forEach { rawPermission in
let permission = FBPermission(string: rawPermission)
XCTAssertNil(permission)
}
}
func testValidPermissions() {
let rawPermissions = [
"email",
"public_profile",
"pages_manage_ads",
]
rawPermissions.forEach { rawPermission in
let permission = FBPermission(string: rawPermission)
XCTAssertEqual(permission?.value, rawPermission)
}
}
func testRawPermissionsFromPermissions() {
let permissions = Set(
[
FBPermission(string: "email"),
FBPermission(string: "public_profile"),
].compactMap { $0 }
)
let rawPermissions = FBPermission.rawPermissions(from: permissions)
let expectedRawPermissions: Set = ["email", "public_profile"]
XCTAssertEqual(rawPermissions, expectedRawPermissions)
}
func testPermissionsFromValidRawPermissions() {
let rawPermissions: Set = ["email", "user_friends"]
let permissions = FBPermission.permissions(fromRawPermissions: rawPermissions)
let expectedPermissions = Set(
[
FBPermission(string: "email"),
FBPermission(string: "user_friends"),
].compactMap { $0 }
)
XCTAssertEqual(permissions, expectedPermissions)
}
func testPermissionsFromInvalidRawPermissions() {
let rawPermissions: Set = ["email", ""]
let permissions = FBPermission.permissions(fromRawPermissions: rawPermissions)
XCTAssertNil(permissions)
}
func testDescription() throws {
let permission = try XCTUnwrap(FBPermission(string: "test_permission"))
XCTAssertEqual(permission.description, permission.value, "A permission's description should be equal to its value")
}
func testEquality() throws {
let permission = try XCTUnwrap(FBPermission(string: "test_permission"))
XCTAssertEqual(permission, permission, "A permission should be equal to itself")
let permission2 = try XCTUnwrap(FBPermission(string: "test_permission"))
XCTAssertEqual(permission, permission2, "Permissions with equal string values should be equal")
let string = permission.value as NSString
XCTAssertNotEqual(permission, string, "Permissions can only be equal to other Permissions")
}
func testInequality() throws {
let permission = try XCTUnwrap(FBPermission(string: "test_permission"))
let permission2 = try XCTUnwrap(FBPermission(string: "different_permission"))
XCTAssertNotEqual(permission, permission2, "Permissions with unequal string values should be unequal")
}
}