Implemented the GetMeEndpoint endpoint.
This commit is contained in:
parent
8a6940ee8d
commit
bfb47ea0f8
33
Libraries/Sources/APIService/Endpoints/GetMeEndpoint.swift
Normal file
33
Libraries/Sources/APIService/Endpoints/GetMeEndpoint.swift
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
//
|
||||||
|
// GetMeEndpoint.swift
|
||||||
|
// APIService
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 03/12/2022.
|
||||||
|
// Copyright © 2022 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
struct GetMeEndpoint: Endpoint {
|
||||||
|
let path: String
|
||||||
|
let method: RequestMethod
|
||||||
|
let credentials: BasicCredentials
|
||||||
|
let headers: [String : String]
|
||||||
|
let body: [String : String]?
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Initialisers
|
||||||
|
|
||||||
|
extension GetMeEndpoint {
|
||||||
|
init(
|
||||||
|
username: String,
|
||||||
|
password: String
|
||||||
|
) {
|
||||||
|
self.path = "/me"
|
||||||
|
self.method = .get
|
||||||
|
self.credentials = .init(
|
||||||
|
username: username,
|
||||||
|
password: password
|
||||||
|
)
|
||||||
|
self.headers = [.Header.Keys.contentType: .Header.Values.contentTypeJSON]
|
||||||
|
self.body = nil
|
||||||
|
}
|
||||||
|
}
|
20
Libraries/Sources/APIService/Extensions/String+Headers.swift
Normal file
20
Libraries/Sources/APIService/Extensions/String+Headers.swift
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
//
|
||||||
|
// String+Headers.swift
|
||||||
|
// APIService
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 03/12/2022.
|
||||||
|
// Copyright © 2022 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
extension String {
|
||||||
|
enum Header {
|
||||||
|
enum Keys {
|
||||||
|
static let authorization = "Authorization"
|
||||||
|
static let contentType = "Content-Type"
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Values {
|
||||||
|
static let contentTypeJSON = "application/json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
Libraries/Sources/APIService/Extensions/String+Hosts.swift
Normal file
13
Libraries/Sources/APIService/Extensions/String+Hosts.swift
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
//
|
||||||
|
// String+Hosts.swift
|
||||||
|
// APIService
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 04/12/2022.
|
||||||
|
// Copyright © 2022 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
extension String {
|
||||||
|
enum Hosts {
|
||||||
|
static let `default` = "163.172.147.216:8080"
|
||||||
|
}
|
||||||
|
}
|
13
Libraries/Sources/APIService/Extensions/String+Schemes.swift
Normal file
13
Libraries/Sources/APIService/Extensions/String+Schemes.swift
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
//
|
||||||
|
// String+Schemes.swift
|
||||||
|
// APIService
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 04/12/2022.
|
||||||
|
// Copyright © 2022 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
extension String {
|
||||||
|
enum Schemes {
|
||||||
|
static let http = "http"
|
||||||
|
}
|
||||||
|
}
|
@ -19,8 +19,8 @@ protocol Endpoint {
|
|||||||
// MARK: - Defaults
|
// MARK: - Defaults
|
||||||
|
|
||||||
extension Endpoint {
|
extension Endpoint {
|
||||||
var scheme: String { "http" }
|
var scheme: String { .Schemes.http }
|
||||||
var host: String { "163.172.147.216:8080" }
|
var host: String { .Hosts.default }
|
||||||
var authorizationHeader: [String: String] {
|
var authorizationHeader: [String: String] {
|
||||||
let makeAuthHeader = MakeAuthorizationHeaderUseCase()
|
let makeAuthHeader = MakeAuthorizationHeaderUseCase()
|
||||||
|
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
//
|
||||||
|
// GetMeEndpoint+InitTests.swift
|
||||||
|
// APIServiceTests
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 04/12/2022.
|
||||||
|
// Copyright © 2022 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
@testable import APIService
|
||||||
|
|
||||||
|
final class GetMeEndpointInitTests: XCTestCase {
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
var endpoint: GetMeEndpoint!
|
||||||
|
var username: String!
|
||||||
|
var password: String!
|
||||||
|
|
||||||
|
// MARK: Test cases
|
||||||
|
|
||||||
|
func test_withProperUsernameAndPassword() throws {
|
||||||
|
// GIVEN
|
||||||
|
username = "username"
|
||||||
|
password = "password"
|
||||||
|
|
||||||
|
// WHEN
|
||||||
|
endpoint = .init(username: username, password: password)
|
||||||
|
|
||||||
|
// THEN
|
||||||
|
XCTAssertEqual(endpoint.scheme, .Schemes.http)
|
||||||
|
XCTAssertEqual(endpoint.host, .Hosts.default)
|
||||||
|
XCTAssertEqual(endpoint.path, "/me")
|
||||||
|
XCTAssertEqual(endpoint.method, .get)
|
||||||
|
XCTAssertEqual(endpoint.credentials.username, username)
|
||||||
|
XCTAssertEqual(endpoint.credentials.password, password)
|
||||||
|
XCTAssertEqual(endpoint.headers, [.Header.Keys.contentType: .Header.Values.contentTypeJSON])
|
||||||
|
XCTAssertEqual(endpoint.authorizationHeader, [.Header.Keys.authorization: "Basic dXNlcm5hbWU6cGFzc3dvcmQ="])
|
||||||
|
XCTAssertNil(endpoint.body)
|
||||||
|
}
|
||||||
|
|
||||||
|
func test_withEmptyUsernameOrPassword() async throws {
|
||||||
|
// GIVEN
|
||||||
|
username = ""
|
||||||
|
password = "password"
|
||||||
|
|
||||||
|
// WHEN
|
||||||
|
endpoint = .init(username: username, password: password)
|
||||||
|
|
||||||
|
// THEN
|
||||||
|
XCTAssertEqual(endpoint.scheme, .Schemes.http)
|
||||||
|
XCTAssertEqual(endpoint.host, .Hosts.default)
|
||||||
|
XCTAssertEqual(endpoint.path, "/me")
|
||||||
|
XCTAssertEqual(endpoint.method, .get)
|
||||||
|
XCTAssertEqual(endpoint.credentials.username, username)
|
||||||
|
XCTAssertEqual(endpoint.credentials.password, password)
|
||||||
|
XCTAssertEqual(endpoint.headers, [.Header.Keys.contentType: .Header.Values.contentTypeJSON])
|
||||||
|
XCTAssertEqual(endpoint.authorizationHeader, [:])
|
||||||
|
XCTAssertNil(endpoint.body)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user