my-files-sample/Libraries/Tests/APIServiceTests/Cases/Endpoints/UploadFileEndpoint+InitTests.swift

93 lines
3.1 KiB
Swift
Raw Normal View History

//
// UploadFileEndpoint+InitTests.swift
// APIServiceTests
//
// Created by Javier Cicchelli on 04/12/2022.
// Copyright © 2022 Röck+Cöde. All rights reserved.
//
import Foundation
import XCTest
@testable import APIService
final class UploadFileEndpoint_InitTests: XCTestCase {
// MARK: Properties
private let itemId = UUID().uuidString
private var endpoint: UploadFileEndpoint!
private var fileName: String!
private var fileData: Data!
private var username: String!
private var password: String!
// MARK: Test cases
func test_withItemId_someFileNameAndData_andProperUsernameAndPassword() throws {
// GIVEN
fileName = "some-filename.txt"
fileData = "This is some raw text data for testing...".data(using: .utf8)
username = "username"
password = "password"
// WHEN
endpoint = .init(
itemId: itemId,
fileName: fileName,
fileData: fileData,
username: username,
password: password
)
// THEN
XCTAssertEqual(endpoint.scheme, .Schemes.http)
XCTAssertEqual(endpoint.host, .Hosts.default)
XCTAssertEqual(endpoint.port, .Ports.default)
XCTAssertEqual(endpoint.path, "/items/\(itemId)")
XCTAssertEqual(endpoint.method, .post)
XCTAssertEqual(endpoint.credentials.username, username)
XCTAssertEqual(endpoint.credentials.password, password)
XCTAssertEqual(endpoint.headers, [
.Header.Keys.contentType: .Header.Values.contentTypeOctet,
.Header.Keys.contentDisposition: "attachment;filename*=utf-8''" + fileName
])
XCTAssertEqual(endpoint.authorizationHeader, [.Header.Keys.authorization: "Basic dXNlcm5hbWU6cGFzc3dvcmQ="])
XCTAssertEqual(endpoint.body, fileData)
}
func test_withItemId_someFileNameAndData_andEmptyUsernameOrPassword() throws {
// GIVEN
fileName = "some-filename.txt"
fileData = "This is some raw text data for testing...".data(using: .utf8)
username = "username"
password = ""
// WHEN
endpoint = .init(
itemId: itemId,
fileName: fileName,
fileData: fileData,
username: username,
password: password
)
// THEN
XCTAssertEqual(endpoint.scheme, .Schemes.http)
XCTAssertEqual(endpoint.host, .Hosts.default)
XCTAssertEqual(endpoint.port, .Ports.default)
XCTAssertEqual(endpoint.path, "/items/\(itemId)")
XCTAssertEqual(endpoint.method, .post)
XCTAssertEqual(endpoint.credentials.username, username)
XCTAssertEqual(endpoint.credentials.password, password)
XCTAssertEqual(endpoint.headers, [
.Header.Keys.contentType: .Header.Values.contentTypeOctet,
.Header.Keys.contentDisposition: "attachment;filename*=utf-8''" + fileName
])
XCTAssertEqual(endpoint.authorizationHeader, [:])
XCTAssertEqual(endpoint.body, fileData)
}
}