func testDecoding()

in FBSDKCoreKit/FBSDKCoreKitTests/Internal/ServerConfiguration/ServerConfigurationTests.swift [582:659]


  func testDecoding() throws {
    let decoder = TestCoder()
    config = try XCTUnwrap(ServerConfiguration(coder: decoder))

    let dialogFlowsClasses = NSSet(array: [
      NSDictionary.self,
      NSNumber.self,
      NSString.self,
    ])

    let dictionaryClasses = NSSet(array: [
      NSArray.self,
      NSData.self,
      NSDictionary.self,
      NSNumber.self,
      NSString.self,
    ])

    XCTAssertTrue(decoder.decodedObject["appID"] is NSString.Type)
    XCTAssertTrue(decoder.decodedObject["appName"] is NSString.Type)
    XCTAssertEqual(
      decoder.decodedObject["loginTooltipEnabled"] as? String,
      "decodeBoolForKey",
      "Should decode loginTooltipEnabled as a Bool"
    )
    XCTAssertTrue(decoder.decodedObject["loginTooltipText"] is NSString.Type)
    XCTAssertTrue(decoder.decodedObject["defaultShareMode"] is NSString.Type)
    XCTAssertEqual(
      decoder.decodedObject["advertisingIDEnabled"] as? String,
      "decodeBoolForKey",
      "Should decode advertisingIDEnabled as a Bool"
    )
    XCTAssertEqual(
      decoder.decodedObject["implicitLoggingEnabled"] as? String,
      "decodeBoolForKey",
      "Should decode implicitLoggingEnabled as a Bool"
    )
    XCTAssertEqual(
      decoder.decodedObject["implicitPurchaseLoggingEnabled"] as? String,
      "decodeBoolForKey",
      "Should decode implicitPurchaseLoggingEnabled as a Bool"
    )
    XCTAssertEqual(
      decoder.decodedObject["codelessEventsEnabled"] as? String,
      "decodeBoolForKey",
      "Should decode codelessEventsEnabled as a Bool"
    )
    XCTAssertEqual(
      decoder.decodedObject["trackAppUninstallEnabled"] as? String,
      "decodeBoolForKey",
      "Should decode trackAppUninstallEnabled as a Bool"
    )
    XCTAssertEqual(decoder.decodedObject["dialogFlows"] as? NSSet, dialogFlowsClasses)
    XCTAssertTrue(decoder.decodedObject["timestamp"] is NSDate.Type)
    XCTAssertTrue(decoder.decodedObject["errorConfigs"] is ErrorConfiguration.Type)
    XCTAssertEqual(
      decoder.decodedObject["sessionTimeoutInterval"] as? String,
      "decodeDoubleForKey",
      "Should decode implicitLoggingEnabled as a Double"
    )
    XCTAssertNil(
      decoder.decodedObject["defaults"],
      "Should not encode whether default values were used to create server configuration"
    )
    XCTAssertTrue(decoder.decodedObject["loggingToken"] is NSString.Type)
    XCTAssertEqual(
      decoder.decodedObject["smartLoginEnabled"] as? String,
      "decodeIntegerForKey",
      "Should decode smartLoginEnabled as an integer"
    )
    XCTAssertTrue(decoder.decodedObject["smarstLoginBookmarkIconURL"] is NSURL.Type)
    XCTAssertTrue(decoder.decodedObject["smarstLoginBookmarkMenuURL"] is NSURL.Type)
    XCTAssertTrue(decoder.decodedObject["SDKUpdateMessage"] is NSString.Type)
    XCTAssertTrue(decoder.decodedObject["eventBindings"] is NSArray.Type)
    XCTAssertEqual(decoder.decodedObject["restrictiveParams"] as? NSSet, dictionaryClasses)
    XCTAssertEqual(decoder.decodedObject["AAMRules"] as? NSSet, dictionaryClasses)
    XCTAssertEqual(decoder.decodedObject["suggestedEventsSetting"] as? NSSet, dictionaryClasses)
  }