diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 92310bb8b..947fd900b 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -432,7 +432,7 @@ 4C20B2B720CA0034001BAC90 /* ThreadViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4542DF51208B82E9007B4E76 /* ThreadViewModel.swift */; }; 4C20B2B920CA10DE001BAC90 /* ConversationSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C20B2B820CA10DE001BAC90 /* ConversationSearchViewController.swift */; }; 4C3EF7FD2107DDEE0007EBF7 /* ParamParserTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EF7FC2107DDEE0007EBF7 /* ParamParserTest.swift */; }; - 4C3EF802210918740007EBF7 /* SSKEnvelopeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EF801210918740007EBF7 /* SSKEnvelopeTest.swift */; }; + 4C3EF802210918740007EBF7 /* SSKProtoEnvelopeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EF801210918740007EBF7 /* SSKProtoEnvelopeTest.swift */; }; 4C4AEC4520EC343B0020E72B /* DismissableTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4AEC4420EC343B0020E72B /* DismissableTextField.swift */; }; 4C4BC6C32102D697004040C9 /* ContactDiscoveryOperationTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4BC6C22102D697004040C9 /* ContactDiscoveryOperationTest.swift */; }; 4C63CC00210A620B003AE45C /* SignalTSan.supp in Resources */ = {isa = PBXBuildFile; fileRef = 4C63CBFF210A620B003AE45C /* SignalTSan.supp */; }; @@ -1114,7 +1114,7 @@ 4C13C9F520E57BA30089A98B /* ColorPickerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerViewController.swift; sourceTree = ""; }; 4C20B2B820CA10DE001BAC90 /* ConversationSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationSearchViewController.swift; sourceTree = ""; }; 4C3EF7FC2107DDEE0007EBF7 /* ParamParserTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParamParserTest.swift; sourceTree = ""; }; - 4C3EF801210918740007EBF7 /* SSKEnvelopeTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSKEnvelopeTest.swift; sourceTree = ""; }; + 4C3EF801210918740007EBF7 /* SSKProtoEnvelopeTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSKProtoEnvelopeTest.swift; sourceTree = ""; }; 4C4AEC4420EC343B0020E72B /* DismissableTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DismissableTextField.swift; sourceTree = ""; }; 4C4BC6C22102D697004040C9 /* ContactDiscoveryOperationTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ContactDiscoveryOperationTest.swift; path = contact/ContactDiscoveryOperationTest.swift; sourceTree = ""; }; 4C63CBFF210A620B003AE45C /* SignalTSan.supp */ = {isa = PBXFileReference; lastKnownFileType = text; path = SignalTSan.supp; sourceTree = ""; }; @@ -2124,7 +2124,7 @@ isa = PBXGroup; children = ( 4C3EF7FC2107DDEE0007EBF7 /* ParamParserTest.swift */, - 4C3EF801210918740007EBF7 /* SSKEnvelopeTest.swift */, + 4C3EF801210918740007EBF7 /* SSKProtoEnvelopeTest.swift */, ); path = SSKTests; sourceTree = ""; @@ -3481,7 +3481,7 @@ 4C3EF7FD2107DDEE0007EBF7 /* ParamParserTest.swift in Sources */, B660F6DB1C29868000687D6E /* FunctionalUtilTest.m in Sources */, 45E7A6A81E71CA7E00D44FB5 /* DisplayableTextFilterTest.swift in Sources */, - 4C3EF802210918740007EBF7 /* SSKEnvelopeTest.swift in Sources */, + 4C3EF802210918740007EBF7 /* SSKProtoEnvelopeTest.swift in Sources */, 452D1AF12081059C00A67F7F /* StringAdditionsTest.swift in Sources */, 4C4BC6C32102D697004040C9 /* ContactDiscoveryOperationTest.swift in Sources */, B660F6BB1C29868000687D6E /* OWSContactsManagerTest.m in Sources */, diff --git a/Signal/test/SSKTests/SSKEnvelopeTest.swift b/Signal/test/SSKTests/SSKProtoEnvelopeTest.swift similarity index 59% rename from Signal/test/SSKTests/SSKEnvelopeTest.swift rename to Signal/test/SSKTests/SSKProtoEnvelopeTest.swift index 056a64b29..58206520a 100644 --- a/Signal/test/SSKTests/SSKEnvelopeTest.swift +++ b/Signal/test/SSKTests/SSKProtoEnvelopeTest.swift @@ -65,4 +65,53 @@ class SSKProtoEnvelopeTest: XCTestCase { } } } + + func testParse_buildVsRequired() { + let builder = SSKProtoEnvelope.SSKProtoEnvelopeBuilder() + + XCTAssertThrowsError(try builder.build()) { (error) -> Void in + switch error { + case SSKProtoError.invalidProtobuf: + break + default: + XCTFail("unexpected error: \(error)") + } + } + } + + func testParse_roundtrip() { + let builder = SSKProtoEnvelope.SSKProtoEnvelopeBuilder() + + let phonyContent = "phony data".data(using: .utf8)! + + builder.setType(SSKProtoEnvelope.SSKProtoEnvelopeType.prekeyBundle) + builder.setTimestamp(123) + builder.setSource("+13213214321") + builder.setSourceDevice(1) + builder.setContent(phonyContent) + + var envelopeData: Data + do { + envelopeData = try builder.buildSerializedData() + } catch { + XCTFail("Couldn't serialize data.") + return + } + + var envelope: SSKProtoEnvelope + do { + envelope = try SSKProtoEnvelope.parseData(envelopeData) + } catch { + XCTFail("Couldn't serialize data.") + return + } + + XCTAssertEqual(envelope.type, SSKProtoEnvelope.SSKProtoEnvelopeType.prekeyBundle) + XCTAssertEqual(envelope.timestamp, 123) + XCTAssertEqual(envelope.source, "+13213214321") + XCTAssertEqual(envelope.sourceDevice, 1) + XCTAssertTrue(envelope.hasContent) + XCTAssertEqual(envelope.content, phonyContent) + XCTAssertFalse(envelope.hasLegacyMessage) + } } diff --git a/Signal/test/call/PeerConnectionClientTest.swift b/Signal/test/call/PeerConnectionClientTest.swift index a2f5d44ff..a092df808 100644 --- a/Signal/test/call/PeerConnectionClientTest.swift +++ b/Signal/test/call/PeerConnectionClientTest.swift @@ -115,8 +115,14 @@ class PeerConnectionClientTest: XCTestCase { func testDataChannelMessage() { XCTAssertEqual(0, clientDelegate.dataChannelMessages.count) - let hangup = DataChannelMessage.forHangup(callId: 123) - let hangupBuffer = RTCDataBuffer(data: hangup.asData(), isBinary: false) + let hangupBuilder = WebRTCProtoHangup.WebRTCProtoHangupBuilder() + hangupBuilder.setId(123) + let hangup = try! hangupBuilder.build() + + let dataBuilder = WebRTCProtoData.WebRTCProtoDataBuilder() + dataBuilder.setHangup(hangup) + let hangupData = try! dataBuilder.buildSerializedData() + let hangupBuffer = RTCDataBuffer(data: hangupData, isBinary: false) client.dataChannel(dataChannel, didReceiveMessageWith: hangupBuffer) waitForPeerConnectionClient() @@ -124,7 +130,7 @@ class PeerConnectionClientTest: XCTestCase { XCTAssertEqual(1, clientDelegate.dataChannelMessages.count) let dataChannelMessageProto = clientDelegate.dataChannelMessages[0] - XCTAssert(dataChannelMessageProto.hasHangup()) + XCTAssert(dataChannelMessageProto.hasHangup) let hangupProto = dataChannelMessageProto.hangup! XCTAssertEqual(123, hangupProto.id)