calling: support null hostname in turn server info serdes
This commit is contained in:
parent
025b88e35b
commit
2b49b096a2
@ -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 */,
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
55
Signal/test/Calls/TurnServerInfoTest.swift
Normal file
55
Signal/test/Calls/TurnServerInfoTest.swift
Normal 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, [])
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user