import CustomDump
import XCTest
@testable import XXClient

final class ChannelDefTests: XCTestCase {
  func testCoding() throws {
    let name = "My broadcast channel"
    let description = "A broadcast channel for me to test things"
    let saltB64 = "gpUqW7N22sffMXsvPLE7BA=="
    let pubKeyB64 = "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1DZ0NJUUN2YkZVckJKRFpqT3Y0Y0MvUHZZdXNvQkFtUTFkb3Znb044aHRuUjA2T3F3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0="
    let jsonString = """
    {
      "Name": "\(name)",
      "Description": "\(description)",
      "Salt": "\(saltB64)",
      "PubKey": "\(pubKeyB64)"
    }
    """
    let jsonData = jsonString.data(using: .utf8)!
    let model = try ChannelDef.decode(jsonData)

    XCTAssertNoDifference(model, ChannelDef(
      name: name,
      description: description,
      salt: Data(base64Encoded: saltB64)!,
      pubKey: Data(base64Encoded: pubKeyB64)!
    ))

    let encodedModel = try model.encode()
    let decodedModel = try ChannelDef.decode(encodedModel)

    XCTAssertNoDifference(decodedModel, model)
  }
}