Emcee

Форк
0
/
HttpKibanaClientTests.swift 
75 строк · 2.3 Кб
1
import DateProviderTestHelpers
2
import EmceeLogging
3
import Kibana
4
import SocketModels
5
import TestHelpers
6
import URLSessionTestHelpers
7
import XCTest
8

9
final class HttpKibanaClientTests: XCTestCase {
10
    lazy var client = assertDoesNotThrow {
11
        try HttpKibanaClient(
12
            dateProvider: dateProvider,
13
            endpoints: [.http(SocketAddress(host: "example.com", port: 42))],
14
            indexPattern: "index-pattern-thing",
15
            urlSession: urlSession
16
        )
17
    }
18
    lazy var dateProvider = DateProviderFixture(Date(timeIntervalSince1970: 100))
19
    lazy var urlSession = FakeURLSession()
20
    
21
    func test() throws {
22
        let dateComponents = DateComponents(
23
            calendar: Calendar(identifier: .gregorian),
24
            timeZone: TimeZone(secondsFromGMT: 3600),
25
            year: 1975,
26
            month: 11,
27
            day: 20,
28
            hour: 10,
29
            minute: 0,
30
            second: 42
31
        )
32
        dateProvider.result = assertNotNil { dateComponents.date }
33
        
34
        try client.send(
35
            level: "level",
36
            message: "message",
37
            metadata: [
38
                "one": "thing"
39
            ]
40
        ) { _ in }
41
        
42
        let urlTask = urlSession.providedDataTasks[0]
43
        let request = urlTask.originalTask.originalRequest
44
        
45
        XCTAssertEqual(request?.httpMethod, "POST")
46
        XCTAssertEqual(request?.url?.absoluteString, "http://example.com:42/index-pattern-thing/_doc")
47
        
48
        let bodyPayload = try JSONDecoder().decode([String: String].self, from: assertNotNil { request?.httpBody })
49
        
50
        assert {
51
            bodyPayload
52
        } equals: {
53
            [
54
                "message": "message",
55
                "level": "level",
56
                "@timestamp": "1975-11-20T09:00:42.000Z",
57
                "one": "thing",
58
            ]
59
        }
60
    }
61
    
62
    func test___completion_is_called() throws {
63
        let completionCalled = XCTestExpectation(description: "completion called")
64
        
65
        try client.send(
66
            level: "level",
67
            message: "message",
68
            metadata: [:]
69
        ) { _ in completionCalled.fulfill() }
70
        
71
        urlSession.providedDataTasks[0].completionHandler(nil, nil, nil)
72
        
73
        wait(for: [completionCalled], timeout: 0)
74
    }
75
}
76

77

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.