diff --git a/Sources/ElixxirDAppsSDK/Models/BackupReport.swift b/Sources/ElixxirDAppsSDK/Models/BackupReport.swift new file mode 100644 index 0000000000000000000000000000000000000000..3ee3dca91518e3379279c28af174b5abe252c660 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Models/BackupReport.swift @@ -0,0 +1,29 @@ +import Foundation + +public struct BackupReport: Equatable { + public init( + ids: Data, + params: Data + ) { + self.ids = ids + self.params = params + } + + public var ids: Data + public var params: Data +} + +extension BackupReport: Codable { + enum CodingKeys: String, CodingKey { + case ids = "BackupIdListJson" + case params = "BackupParams" + } + + public static func decode(_ data: Data) throws -> Self { + try JSONDecoder().decode(Self.self, from: data) + } + + public func encode() throws -> Data { + try JSONEncoder().encode(self) + } +} diff --git a/Tests/ElixxirDAppsSDKTests/Models/BackupReportTests.swift b/Tests/ElixxirDAppsSDKTests/Models/BackupReportTests.swift new file mode 100644 index 0000000000000000000000000000000000000000..93ef4f65d49f0387dc282cb9f8364dcb1120729d --- /dev/null +++ b/Tests/ElixxirDAppsSDKTests/Models/BackupReportTests.swift @@ -0,0 +1,28 @@ +import CustomDump +import XCTest +@testable import ElixxirDAppsSDK + +final class BackupReportTests: XCTestCase { + func testCoding() throws { + let idsB64 = "WyJPRHRRTTA4ZERpV3lXaE0wWUhjanRHWnZQcHRSa1JOZ1pHR2FkTG10dE9BRCJd" + let paramsB64 = "cGFyYW1z" + let jsonString = """ + { + "BackupIdListJson": "\(idsB64)", + "BackupParams": "\(paramsB64)" + } + """ + let jsonData = jsonString.data(using: .utf8)! + let model = try BackupReport.decode(jsonData) + + XCTAssertNoDifference(model, BackupReport( + ids: Data(base64Encoded: idsB64)!, + params: Data(base64Encoded: paramsB64)! + )) + + let encodedModel = try model.encode() + let decodedModel = try BackupReport.decode(encodedModel) + + XCTAssertNoDifference(decodedModel, model) + } +}