TM-SGNL-iOS/SignalServiceKit/tests/Network/API/AccountDataReportTest.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

40 lines
1.4 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import XCTest
import SignalServiceKit
final class AccountDataReportTest: XCTestCase {
func testWithValidData() throws {
let rawData = "{\"foo\":\"bar\", \"text\": \"baz\"}".data(using: .ascii)!
let report = try XCTUnwrap(AccountDataReport(rawData: rawData))
let parsedJson = try {
let jsonValue = try JSONSerialization.jsonObject(with: report.formattedJsonData)
return jsonValue as! [String: String]
}()
XCTAssertEqual(parsedJson, ["foo": "bar", "text": "baz"])
XCTAssertEqual(report.textData, "baz".data(using: .ascii)!)
}
func testWithInvalidData() {
let rawDatas: [Data] = [
Data(),
Data([1, 2, 3]),
"\"not an object\"".data(using: .ascii)!,
"[\"not an object\"]".data(using: .ascii)!,
"{ \"foo\":".data(using: .ascii)!,
"{}".data(using: .ascii)!,
"{\"missing\": \"text field\"}".data(using: .ascii)!,
"{\"text\": null}".data(using: .ascii)!,
"{\"text\": 123}".data(using: .ascii)!,
"{\"TEXT\": \"should be ignored\"}".data(using: .ascii)!
]
for rawData in rawDatas {
XCTAssertThrowsError(try AccountDataReport(rawData: rawData))
}
}
}