Skip to content

Commit

Permalink
fix(client configuration): default headers not applied (#839)
Browse files Browse the repository at this point in the history
  • Loading branch information
VladislavFitz authored Dec 6, 2023
1 parent 50369ab commit f7745ae
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ extension CustomRankingCriterion: RawRepresentable {
guard
let prefixedString = PrefixedString(rawValue: rawValue),
let prefix = Prefix(rawValue: prefixedString.prefix) else {
return nil
return nil
}
switch prefix {
case .asc:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ class HTTPRequestBuilder {
let timeout = command.requestOptions?.timeout(for: command.callType) ?? configuration.timeout(for: command.callType)
var request = URLRequest(command: command).setIfNotNil(\.credentials, to: credentials)
request.addValue(UserAgentController.httpHeaderValue, forHTTPHeaderField: HTTPHeaderKey.userAgent.rawValue)
if let defaultHeaders = configuration.defaultHeaders {
for header in defaultHeaders {
request.addValue(header.value, forHTTPHeaderField: header.key.rawValue)
}
}
return HTTPRequest(requester: requester,
retryStrategy: retryStrategy,
request: request,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
//
// CustomClientConfigurationTests.swift
//
//
// Created by Vladislav Fitc on 27/11/2023.
//

import Foundation

import Foundation
import XCTest
@testable import AlgoliaSearchClient

class CustomClientConfigurationTests: XCTestCase {

func testCustomHeaders() throws {
let configuration = SearchConfiguration(applicationID: "undefined", apiKey: "undefined")
.set(\.defaultHeaders, to: ["default-header": "default-header-value"])

let requester = TestRequester()

let client = SearchClient(configuration: configuration,
requester: requester)

let exp = expectation(description: "method call")

requester.onRequest = { request in
let headers = request.allHTTPHeaderFields ?? [:]
XCTAssert(headers.contains(where: { $0.key == "default-header" && $0.value == "default-header-value" }))
XCTAssert((request.allHTTPHeaderFields ?? [:]).contains(where: { $0.key == "another-header" && $0.value == "another-value" }))
exp.fulfill()
}

let queries: [MultiSearchQuery] = [
.hitsSearch(.init(indexName: "some-index", query: "search"))
]

let requestOptions = RequestOptions(headers: ["another-header": "another-value"])

client.search(queries: queries, requestOptions: requestOptions) { _ in }

waitForExpectations(timeout: 5)

}

}

0 comments on commit f7745ae

Please sign in to comment.