calling: support null hostname in turn server info serdes

This commit is contained in:
adel-signal 2024-05-03 14:24:04 -07:00 committed by GitHub
parent 025b88e35b
commit 2b49b096a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 64 additions and 2 deletions

View File

@ -1873,6 +1873,7 @@
F0B872B8269D079B00D26481 /* ContextMenuConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0B872B7269D079B00D26481 /* ContextMenuConfiguration.swift */; };
F0EE4DB626A7AC18001DE4ED /* ContextMenuReactionBarAccessory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE4DB526A7AC18001DE4ED /* ContextMenuReactionBarAccessory.swift */; };
F0FB6B20269E625A00AC2A41 /* ContextMenuController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0FB6B1F269E625A00AC2A41 /* ContextMenuController.swift */; };
F5C80FA22BE3F29F0028F76D /* TurnServerInfoTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5C80FA12BE3F29F0028F76D /* TurnServerInfoTest.swift */; };
F900F2DD27F25AB400431E09 /* DonationReceiptViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F900F2DC27F25AB300431E09 /* DonationReceiptViewController.swift */; };
F903C29B28EC7AE60035B42B /* RegistrationIdGeneratorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F903C29A28EC7AE60035B42B /* RegistrationIdGeneratorTest.swift */; };
F905DFEB29A534F200BAD034 /* RegistrationPhoneNumberDiscoverabilityViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F905DFEA29A534F200BAD034 /* RegistrationPhoneNumberDiscoverabilityViewController.swift */; };
@ -4789,6 +4790,7 @@
F0C124B626D4788A0031C96F /* NSE-Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "NSE-Images.xcassets"; sourceTree = "<group>"; };
F0EE4DB526A7AC18001DE4ED /* ContextMenuReactionBarAccessory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuReactionBarAccessory.swift; sourceTree = "<group>"; };
F0FB6B1F269E625A00AC2A41 /* ContextMenuController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuController.swift; sourceTree = "<group>"; };
F5C80FA12BE3F29F0028F76D /* TurnServerInfoTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TurnServerInfoTest.swift; sourceTree = "<group>"; };
F70CAD4E12CCE311EC60A2C9 /* Pods-SignalServiceKitTests.profiling.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalServiceKitTests.profiling.xcconfig"; path = "Target Support Files/Pods-SignalServiceKitTests/Pods-SignalServiceKitTests.profiling.xcconfig"; sourceTree = "<group>"; };
F900F2DC27F25AB300431E09 /* DonationReceiptViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DonationReceiptViewController.swift; sourceTree = "<group>"; };
F903C29A28EC7AE60035B42B /* RegistrationIdGeneratorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegistrationIdGeneratorTest.swift; sourceTree = "<group>"; };
@ -6902,6 +6904,7 @@
50552C302BAC079A00815474 /* CallLinkTest.swift */,
E1D827D82BDC1F6B0022C1AF /* ReactionBurstManagerTests.swift */,
E16B440D2BBF242C00D2583E /* ReactionsModelTest.swift */,
F5C80FA12BE3F29F0028F76D /* TurnServerInfoTest.swift */,
);
path = Calls;
sourceTree = "<group>";
@ -13359,6 +13362,7 @@
8803FF6628EF89B50023574A /* StorySharingTests.swift in Sources */,
452D1AF12081059C00A67F7F /* StringAdditionsTest.swift in Sources */,
E75DD3E02810CDBD00E32C36 /* SubscriptionManagerTest.swift in Sources */,
F5C80FA22BE3F29F0028F76D /* TurnServerInfoTest.swift in Sources */,
5033D47329DCB3FF007FEADA /* UrlOpenerTest.swift in Sources */,
45A3579827DAAC6A0051CE8B /* UserProfileTest.swift in Sources */,
5042EAA3287F96FB00C9B19F /* VisibleBadgeResolverTest.swift in Sources */,

View File

@ -44,9 +44,12 @@ struct TurnServerInfo {
return nil
}
if let hostnameAttribute = attributes["hostname"] as? String {
switch attributes["hostname"] {
case let hostnameAttribute as String:
hostname = hostnameAttribute
} else {
case is NSNull:
hostname = ""
default:
return nil
}
}

View File

@ -0,0 +1,55 @@
//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
import XCTest
@testable import Signal
final class TurnServerInfoTest: XCTestCase {
private func turnServerInfo() -> [String: AnyObject] {
return [
"username": "user",
"password": "pass",
"hostname": "host",
"urlsWithIps": ["123.123.123.123"],
"urls": ["turn:example.com"],
] as [String: AnyObject]
}
func testNullable() {
var infoMap = turnServerInfo()
var info = TurnServerInfo(attributes: infoMap)!
XCTAssertEqual(info.username, "user")
XCTAssertEqual(info.password, "pass")
XCTAssertEqual(info.hostname, "host")
XCTAssertEqual(info.urls, ["turn:example.com"])
XCTAssertEqual(info.urlsWithIps, ["123.123.123.123"])
infoMap["urls"] = NSNull()
info = TurnServerInfo(attributes: infoMap)!
XCTAssertEqual(info.username, "user")
XCTAssertEqual(info.password, "pass")
XCTAssertEqual(info.hostname, "host")
XCTAssertEqual(info.urls, [])
XCTAssertEqual(info.urlsWithIps, ["123.123.123.123"])
infoMap["urlsWithIps"] = NSNull()
info = TurnServerInfo(attributes: infoMap)!
XCTAssertEqual(info.username, "user")
XCTAssertEqual(info.password, "pass")
XCTAssertEqual(info.hostname, "host")
XCTAssertEqual(info.urls, [])
XCTAssertEqual(info.urlsWithIps, [])
infoMap["hostname"] = NSNull()
info = TurnServerInfo(attributes: infoMap)!
XCTAssertEqual(info.username, "user")
XCTAssertEqual(info.password, "pass")
XCTAssertEqual(info.hostname, "")
XCTAssertEqual(info.urls, [])
XCTAssertEqual(info.urlsWithIps, [])
}
}