diff --git a/Sources/OpenAPIRuntime/Base/EncodableBodyContent.swift b/Sources/OpenAPIRuntime/Base/EncodableBodyContent.swift deleted file mode 100644 index f4995314..00000000 --- a/Sources/OpenAPIRuntime/Base/EncodableBodyContent.swift +++ /dev/null @@ -1,36 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// This source file is part of the SwiftOpenAPIGenerator open source project -// -// Copyright (c) 2023 Apple Inc. and the SwiftOpenAPIGenerator project authors -// Licensed under Apache License v2.0 -// -// See LICENSE.txt for license information -// See CONTRIBUTORS.txt for the list of SwiftOpenAPIGenerator project authors -// -// SPDX-License-Identifier: Apache-2.0 -// -//===----------------------------------------------------------------------===// - -/// A wrapper of a body value with its content type. -@_spi(Generated) -public struct EncodableBodyContent: Equatable { - - /// An encodable body value. - public var value: T - - /// The header value of the content type, for example `application/json`. - public var contentType: String - - /// Creates a new content wrapper. - /// - Parameters: - /// - value: An encodable body value. - /// - contentType: The header value of the content type. - public init( - value: T, - contentType: String - ) { - self.value = value - self.contentType = contentType - } -} diff --git a/Sources/OpenAPIRuntime/Conversion/Converter+Client.swift b/Sources/OpenAPIRuntime/Conversion/Converter+Client.swift index 300b0cb0..2dd4d89c 100644 --- a/Sources/OpenAPIRuntime/Conversion/Converter+Client.swift +++ b/Sources/OpenAPIRuntime/Conversion/Converter+Client.swift @@ -90,113 +90,113 @@ extension Converter { } // | client | set | request body | text | string-convertible | optional | setOptionalRequestBodyAsText | - public func setOptionalRequestBodyAsText( - _ value: C?, + public func setOptionalRequestBodyAsText( + _ value: T?, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data? { try setOptionalRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertStringConvertibleToTextData ) } // | client | set | request body | text | string-convertible | required | setRequiredRequestBodyAsText | - public func setRequiredRequestBodyAsText( - _ value: C, + public func setRequiredRequestBodyAsText( + _ value: T, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data { try setRequiredRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertStringConvertibleToTextData ) } // | client | set | request body | text | date | optional | setOptionalRequestBodyAsText | - public func setOptionalRequestBodyAsText( - _ value: C?, + public func setOptionalRequestBodyAsText( + _ value: Date?, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data? { try setOptionalRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertDateToTextData ) } // | client | set | request body | text | date | required | setRequiredRequestBodyAsText | - public func setRequiredRequestBodyAsText( - _ value: C, + public func setRequiredRequestBodyAsText( + _ value: Date, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data { try setRequiredRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertDateToTextData ) } // | client | set | request body | JSON | codable | optional | setOptionalRequestBodyAsJSON | - public func setOptionalRequestBodyAsJSON( - _ value: C?, + public func setOptionalRequestBodyAsJSON( + _ value: T?, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data? { try setOptionalRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertBodyCodableToJSON ) } // | client | set | request body | JSON | codable | required | setRequiredRequestBodyAsJSON | - public func setRequiredRequestBodyAsJSON( - _ value: C, + public func setRequiredRequestBodyAsJSON( + _ value: T, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data { try setRequiredRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertBodyCodableToJSON ) } // | client | set | request body | binary | data | optional | setOptionalRequestBodyAsBinary | - public func setOptionalRequestBodyAsBinary( - _ value: C?, + public func setOptionalRequestBodyAsBinary( + _ value: Data?, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data? { try setOptionalRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertDataToBinary ) } // | client | set | request body | binary | data | required | setRequiredRequestBodyAsBinary | - public func setRequiredRequestBodyAsBinary( - _ value: C, + public func setRequiredRequestBodyAsBinary( + _ value: Data, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data { try setRequiredRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertDataToBinary ) } diff --git a/Sources/OpenAPIRuntime/Conversion/Converter+Server.swift b/Sources/OpenAPIRuntime/Conversion/Converter+Server.swift index cd8ad196..d709382d 100644 --- a/Sources/OpenAPIRuntime/Conversion/Converter+Server.swift +++ b/Sources/OpenAPIRuntime/Conversion/Converter+Server.swift @@ -296,57 +296,57 @@ public extension Converter { } // | server | set | response body | text | string-convertible | required | setResponseBodyAsText | - func setResponseBodyAsText( - _ value: C, + func setResponseBodyAsText( + _ value: T, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data { try setResponseBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertStringConvertibleToTextData ) } // | server | set | response body | text | date | required | setResponseBodyAsText | - func setResponseBodyAsText( - _ value: C, + func setResponseBodyAsText( + _ value: Date, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data { try setResponseBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertDateToTextData ) } // | server | set | response body | JSON | codable | required | setResponseBodyAsJSON | - func setResponseBodyAsJSON( - _ value: C, + func setResponseBodyAsJSON( + _ value: T, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data { try setResponseBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertBodyCodableToJSON ) } // | server | set | response body | binary | data | required | setResponseBodyAsBinary | - func setResponseBodyAsBinary( - _ value: C, + func setResponseBodyAsBinary( + _ value: Data, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent + contentType: String ) throws -> Data { try setResponseBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convertDataToBinary ) } diff --git a/Sources/OpenAPIRuntime/Conversion/CurrencyExtensions.swift b/Sources/OpenAPIRuntime/Conversion/CurrencyExtensions.swift index f5daf54f..4859ea1f 100644 --- a/Sources/OpenAPIRuntime/Conversion/CurrencyExtensions.swift +++ b/Sources/OpenAPIRuntime/Conversion/CurrencyExtensions.swift @@ -347,22 +347,20 @@ extension Converter { return values } - func setRequiredRequestBody( - _ value: C, + func setRequiredRequestBody( + _ value: T, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent, + contentType: String, convert: (T) throws -> Data ) throws -> Data { - let body = transform(value) - headerFields.add(name: "content-type", value: body.contentType) - let convertibleValue = body.value - return try convert(convertibleValue) + headerFields.add(name: "content-type", value: contentType) + return try convert(value) } - func setOptionalRequestBody( - _ value: C?, + func setOptionalRequestBody( + _ value: T?, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent, + contentType: String, convert: (T) throws -> Data ) throws -> Data? { guard let value else { @@ -371,7 +369,7 @@ extension Converter { return try setRequiredRequestBody( value, headerFields: &headerFields, - transforming: transform, + contentType: contentType, convert: convert ) } @@ -419,16 +417,14 @@ extension Converter { return transformedValue } - func setResponseBody( - _ value: C, + func setResponseBody( + _ value: T, headerFields: inout [HeaderField], - transforming transform: (C) -> EncodableBodyContent, + contentType: String, convert: (T) throws -> Data ) throws -> Data { - let body = transform(value) - headerFields.add(name: "content-type", value: body.contentType) - let convertibleValue = body.value - return try convert(convertibleValue) + headerFields.add(name: "content-type", value: contentType) + return try convert(value) } func convertBinaryToData( diff --git a/Sources/OpenAPIRuntime/Deprecated/Deprecated.swift b/Sources/OpenAPIRuntime/Deprecated/Deprecated.swift index f702eb2c..70b27ca8 100644 --- a/Sources/OpenAPIRuntime/Deprecated/Deprecated.swift +++ b/Sources/OpenAPIRuntime/Deprecated/Deprecated.swift @@ -15,6 +15,30 @@ import Foundation // MARK: - Functionality to be removed in the future +/// A wrapper of a body value with its content type. +@available(*, deprecated) +@_spi(Generated) +public struct EncodableBodyContent: Equatable { + + /// An encodable body value. + public var value: T + + /// The header value of the content type, for example `application/json`. + public var contentType: String + + /// Creates a new content wrapper. + /// - Parameters: + /// - value: An encodable body value. + /// - contentType: The header value of the content type. + public init( + value: T, + contentType: String + ) { + self.value = value + self.contentType = contentType + } +} + extension Converter { /// Gets a deserialized value from body data. /// - Parameters: @@ -702,3 +726,230 @@ extension Converter { return typedValue } } + +extension Converter { + + // | client | set | request body | text | string-convertible | optional | setOptionalRequestBodyAsText | + @available(*, deprecated) + public func setOptionalRequestBodyAsText( + _ value: C?, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data? { + try setOptionalRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertStringConvertibleToTextData + ) + } + + // | client | set | request body | text | string-convertible | required | setRequiredRequestBodyAsText | + @available(*, deprecated) + public func setRequiredRequestBodyAsText( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data { + try setRequiredRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertStringConvertibleToTextData + ) + } + + // | client | set | request body | text | date | optional | setOptionalRequestBodyAsText | + @available(*, deprecated) + public func setOptionalRequestBodyAsText( + _ value: C?, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data? { + try setOptionalRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertDateToTextData + ) + } + + // | client | set | request body | text | date | required | setRequiredRequestBodyAsText | + @available(*, deprecated) + public func setRequiredRequestBodyAsText( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data { + try setRequiredRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertDateToTextData + ) + } + + // | client | set | request body | JSON | codable | optional | setOptionalRequestBodyAsJSON | + @available(*, deprecated) + public func setOptionalRequestBodyAsJSON( + _ value: C?, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data? { + try setOptionalRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertBodyCodableToJSON + ) + } + + // | client | set | request body | JSON | codable | required | setRequiredRequestBodyAsJSON | + @available(*, deprecated) + public func setRequiredRequestBodyAsJSON( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data { + try setRequiredRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertBodyCodableToJSON + ) + } + + // | client | set | request body | binary | data | optional | setOptionalRequestBodyAsBinary | + @available(*, deprecated) + public func setOptionalRequestBodyAsBinary( + _ value: C?, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data? { + try setOptionalRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertDataToBinary + ) + } + + // | client | set | request body | binary | data | required | setRequiredRequestBodyAsBinary | + @available(*, deprecated) + public func setRequiredRequestBodyAsBinary( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data { + try setRequiredRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertDataToBinary + ) + } + + // | server | set | response body | text | string-convertible | required | setResponseBodyAsText | + @available(*, deprecated) + public func setResponseBodyAsText( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data { + try setResponseBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertStringConvertibleToTextData + ) + } + + // | server | set | response body | text | date | required | setResponseBodyAsText | + @available(*, deprecated) + public func setResponseBodyAsText( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data { + try setResponseBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertDateToTextData + ) + } + + // | server | set | response body | JSON | codable | required | setResponseBodyAsJSON | + @available(*, deprecated) + public func setResponseBodyAsJSON( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data { + try setResponseBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertBodyCodableToJSON + ) + } + + // | server | set | response body | binary | data | required | setResponseBodyAsBinary | + @available(*, deprecated) + public func setResponseBodyAsBinary( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent + ) throws -> Data { + try setResponseBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convertDataToBinary + ) + } + + @available(*, deprecated) + public func setRequiredRequestBody( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent, + convert: (T) throws -> Data + ) throws -> Data { + let body = transform(value) + headerFields.add(name: "content-type", value: body.contentType) + let convertibleValue = body.value + return try convert(convertibleValue) + } + + @available(*, deprecated) + public func setOptionalRequestBody( + _ value: C?, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent, + convert: (T) throws -> Data + ) throws -> Data? { + guard let value else { + return nil + } + return try setRequiredRequestBody( + value, + headerFields: &headerFields, + transforming: transform, + convert: convert + ) + } + + @available(*, deprecated) + public func setResponseBody( + _ value: C, + headerFields: inout [HeaderField], + transforming transform: (C) -> EncodableBodyContent, + convert: (T) throws -> Data + ) throws -> Data { + let body = transform(value) + headerFields.add(name: "content-type", value: body.contentType) + let convertibleValue = body.value + return try convert(convertibleValue) + } +} diff --git a/Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Client.swift b/Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Client.swift index 09a28f19..aefd7b30 100644 --- a/Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Client.swift +++ b/Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Client.swift @@ -90,12 +90,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setOptionalRequestBodyAsText( testString, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "text/plain" - ) - } + contentType: "text/plain" ) XCTAssertEqual(body, testStringData) XCTAssertEqual( @@ -112,12 +107,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setRequiredRequestBodyAsText( testString, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "text/plain" - ) - } + contentType: "text/plain" ) XCTAssertEqual(body, testStringData) XCTAssertEqual( @@ -134,12 +124,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setOptionalRequestBodyAsText( testDate, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "text/plain" - ) - } + contentType: "text/plain" ) XCTAssertEqual(body, testDateStringData) XCTAssertEqual( @@ -156,12 +141,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setRequiredRequestBodyAsText( testDate, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "text/plain" - ) - } + contentType: "text/plain" ) XCTAssertEqual(body, testDateStringData) XCTAssertEqual( @@ -178,12 +158,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setOptionalRequestBodyAsJSON( testStruct, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "application/json" - ) - } + contentType: "application/json" ) XCTAssertEqual(body, testStructPrettyData) XCTAssertEqual( @@ -199,12 +174,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setOptionalRequestBodyAsJSON( testString, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "application/json" - ) - } + contentType: "application/json" ) XCTAssertEqual(body, testQuotedStringData) XCTAssertEqual( @@ -221,12 +191,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setRequiredRequestBodyAsJSON( testStruct, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "application/json" - ) - } + contentType: "application/json" ) XCTAssertEqual(body, testStructPrettyData) XCTAssertEqual( @@ -243,12 +208,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setOptionalRequestBodyAsBinary( testStringData, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "application/octet-stream" - ) - } + contentType: "application/octet-stream" ) XCTAssertEqual(body, testStringData) XCTAssertEqual( @@ -265,12 +225,7 @@ final class Test_ClientConverterExtensions: Test_Runtime { let body = try converter.setRequiredRequestBodyAsBinary( testStringData, headerFields: &headerFields, - transforming: { value in - .init( - value: value, - contentType: "application/octet-stream" - ) - } + contentType: "application/octet-stream" ) XCTAssertEqual(body, testStringData) XCTAssertEqual( diff --git a/Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Server.swift b/Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Server.swift index f35b94b7..03f80d8a 100644 --- a/Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Server.swift +++ b/Tests/OpenAPIRuntimeTests/Conversion/Test_Converter+Server.swift @@ -319,12 +319,7 @@ final class Test_ServerConverterExtensions: Test_Runtime { let data = try converter.setResponseBodyAsText( testString, headerFields: &headers, - transforming: { - .init( - value: $0, - contentType: "text/plain" - ) - } + contentType: "text/plain" ) XCTAssertEqual(data, testStringData) XCTAssertEqual( @@ -341,12 +336,7 @@ final class Test_ServerConverterExtensions: Test_Runtime { let data = try converter.setResponseBodyAsText( testDate, headerFields: &headers, - transforming: { - .init( - value: $0, - contentType: "text/plain" - ) - } + contentType: "text/plain" ) XCTAssertEqual(data, testDateStringData) XCTAssertEqual( @@ -363,12 +353,7 @@ final class Test_ServerConverterExtensions: Test_Runtime { let data = try converter.setResponseBodyAsJSON( testStruct, headerFields: &headers, - transforming: { - .init( - value: $0, - contentType: "application/json" - ) - } + contentType: "application/json" ) XCTAssertEqual(data, testStructPrettyData) XCTAssertEqual( @@ -385,12 +370,7 @@ final class Test_ServerConverterExtensions: Test_Runtime { let data = try converter.setResponseBodyAsBinary( testStringData, headerFields: &headers, - transforming: { - .init( - value: $0, - contentType: "application/octet-stream" - ) - } + contentType: "application/octet-stream" ) XCTAssertEqual(data, testStringData) XCTAssertEqual( diff --git a/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift b/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift new file mode 100644 index 00000000..3f1bdfa0 --- /dev/null +++ b/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift @@ -0,0 +1,317 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the SwiftOpenAPIGenerator open source project +// +// Copyright (c) 2023 Apple Inc. and the SwiftOpenAPIGenerator project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of SwiftOpenAPIGenerator project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// +import XCTest +@_spi(Generated)@testable import OpenAPIRuntime + +final class Test_Deprecated: Test_Runtime { + + // | client | set | request body | text | string-convertible | optional | setOptionalRequestBodyAsText | + @available(*, deprecated) + func test_deprecated_setOptionalRequestBodyAsText_stringConvertible() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setOptionalRequestBodyAsText( + testString, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "text/plain" + ) + } + ) + XCTAssertEqual(body, testStringData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "text/plain") + ] + ) + } + + // | client | set | request body | text | string-convertible | required | setRequiredRequestBodyAsText | + @available(*, deprecated) + func test_deprecated_setRequiredRequestBodyAsText_stringConvertible() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setRequiredRequestBodyAsText( + testString, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "text/plain" + ) + } + ) + XCTAssertEqual(body, testStringData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "text/plain") + ] + ) + } + + // | client | set | request body | text | date | optional | setOptionalRequestBodyAsText | + @available(*, deprecated) + func test_deprecated_setOptionalRequestBodyAsText_date() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setOptionalRequestBodyAsText( + testDate, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "text/plain" + ) + } + ) + XCTAssertEqual(body, testDateStringData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "text/plain") + ] + ) + } + + // | client | set | request body | text | date | required | setRequiredRequestBodyAsText | + @available(*, deprecated) + func test_deprecated_setRequiredRequestBodyAsText_date() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setRequiredRequestBodyAsText( + testDate, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "text/plain" + ) + } + ) + XCTAssertEqual(body, testDateStringData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "text/plain") + ] + ) + } + + // | client | set | request body | JSON | codable | optional | setOptionalRequestBodyAsJSON | + @available(*, deprecated) + func test_deprecated_setOptionalRequestBodyAsJSON_codable() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setOptionalRequestBodyAsJSON( + testStruct, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "application/json" + ) + } + ) + XCTAssertEqual(body, testStructPrettyData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "application/json") + ] + ) + } + + @available(*, deprecated) + func test_deprecated_setOptionalRequestBodyAsJSON_codable_string() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setOptionalRequestBodyAsJSON( + testString, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "application/json" + ) + } + ) + XCTAssertEqual(body, testQuotedStringData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "application/json") + ] + ) + } + + // | client | set | request body | JSON | codable | required | setRequiredRequestBodyAsJSON | + @available(*, deprecated) + func test_deprecated_setRequiredRequestBodyAsJSON_codable() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setRequiredRequestBodyAsJSON( + testStruct, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "application/json" + ) + } + ) + XCTAssertEqual(body, testStructPrettyData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "application/json") + ] + ) + } + + // | client | set | request body | binary | data | optional | setOptionalRequestBodyAsBinary | + @available(*, deprecated) + func test_deprecated_setOptionalRequestBodyAsBinary_data() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setOptionalRequestBodyAsBinary( + testStringData, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "application/octet-stream" + ) + } + ) + XCTAssertEqual(body, testStringData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "application/octet-stream") + ] + ) + } + + // | client | set | request body | binary | data | required | setRequiredRequestBodyAsBinary | + @available(*, deprecated) + func test_deprecated_setRequiredRequestBodyAsBinary_data() throws { + var headerFields: [HeaderField] = [] + let body = try converter.setRequiredRequestBodyAsBinary( + testStringData, + headerFields: &headerFields, + transforming: { value in + .init( + value: value, + contentType: "application/octet-stream" + ) + } + ) + XCTAssertEqual(body, testStringData) + XCTAssertEqual( + headerFields, + [ + .init(name: "content-type", value: "application/octet-stream") + ] + ) + } + + // | server | set | response body | text | string-convertible | required | setResponseBodyAsText | + @available(*, deprecated) + func test_deprecated_setResponseBodyAsText_stringConvertible() throws { + var headers: [HeaderField] = [] + let data = try converter.setResponseBodyAsText( + testString, + headerFields: &headers, + transforming: { + .init( + value: $0, + contentType: "text/plain" + ) + } + ) + XCTAssertEqual(data, testStringData) + XCTAssertEqual( + headers, + [ + .init(name: "content-type", value: "text/plain") + ] + ) + } + + // | server | set | response body | text | date | required | setResponseBodyAsText | + @available(*, deprecated) + func test_deprecated_setResponseBodyAsText_date() throws { + var headers: [HeaderField] = [] + let data = try converter.setResponseBodyAsText( + testDate, + headerFields: &headers, + transforming: { + .init( + value: $0, + contentType: "text/plain" + ) + } + ) + XCTAssertEqual(data, testDateStringData) + XCTAssertEqual( + headers, + [ + .init(name: "content-type", value: "text/plain") + ] + ) + } + + // | server | set | response body | JSON | codable | required | setResponseBodyAsJSON | + @available(*, deprecated) + func test_deprecated_setResponseBodyAsJSON_codable() throws { + var headers: [HeaderField] = [] + let data = try converter.setResponseBodyAsJSON( + testStruct, + headerFields: &headers, + transforming: { + .init( + value: $0, + contentType: "application/json" + ) + } + ) + XCTAssertEqual(data, testStructPrettyData) + XCTAssertEqual( + headers, + [ + .init(name: "content-type", value: "application/json") + ] + ) + } + + // | server | set | response body | binary | data | required | setResponseBodyAsBinary | + @available(*, deprecated) + func test_deprecated_setResponseBodyAsBinary_data() throws { + var headers: [HeaderField] = [] + let data = try converter.setResponseBodyAsBinary( + testStringData, + headerFields: &headers, + transforming: { + .init( + value: $0, + contentType: "application/octet-stream" + ) + } + ) + XCTAssertEqual(data, testStringData) + XCTAssertEqual( + headers, + [ + .init(name: "content-type", value: "application/octet-stream") + ] + ) + } + +}