-
Notifications
You must be signed in to change notification settings - Fork 137
Expand file tree
/
Copy pathReCaptchaDecoder__Tests.swift
More file actions
224 lines (167 loc) · 5.34 KB
/
ReCaptchaDecoder__Tests.swift
File metadata and controls
224 lines (167 loc) · 5.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
//
// ReCaptchaDecoder__Tests.swift
// ReCaptcha
//
// Created by Flávio Caetano on 13/04/17.
// Copyright © 2018 ReCaptcha. All rights reserved.
//
@testable import ReCaptcha
import WebKit
import XCTest
class ReCaptchaDecoder__Tests: XCTestCase {
fileprivate typealias Result = ReCaptchaDecoder.Result
fileprivate var assertResult: ((Result) -> Void)?
fileprivate var decoder: ReCaptchaDecoder!
override func setUp() {
super.setUp()
decoder = ReCaptchaDecoder { [weak self] result in
self?.assertResult?(result)
}
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func test__Send_Error() {
let exp = expectation(description: "send error message")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let err = ReCaptchaError.random()
decoder.send(error: err)
waitForExpectations(timeout: 1)
// Check
XCTAssertNotNil(result)
XCTAssertEqual(result, .error(err))
}
func test__Decode__Wrong_Format() {
let exp = expectation(description: "send unsupported message")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let message = MockMessage(message: "foobar")
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .error(ReCaptchaError.wrongMessageFormat))
}
func test__Decode__Unexpected_Action() {
let exp = expectation(description: "send message with unexpected action")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let message = MockMessage(message: ["action": "bar"])
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .error(ReCaptchaError.wrongMessageFormat))
}
func test__Decode__ShowReCaptcha() {
let exp = expectation(description: "send showReCaptcha message")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let message = MockMessage(message: ["action": "showReCaptcha"])
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .showReCaptcha)
}
func test__Decode__Token() {
let exp = expectation(description: "send token message")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let token = String(arc4random())
let message = MockMessage(message: ["token": token])
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .token(token))
}
func test__Decode__DidLoad() {
let exp = expectation(description: "send did load message")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let message = MockMessage(message: ["action": "didLoad"])
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .didLoad)
}
func test__Decode__Error_Setup_Failed() {
let exp = expectation(description: "send error")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let message = MockMessage(message: ["error": 27])
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .error(.failedSetup))
}
func test__Decode__Error_Response_Expired() {
let exp = expectation(description: "send error")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let message = MockMessage(message: ["error": 28])
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .error(.responseExpired))
}
func test__Decode__Error_Render_Failed() {
let exp = expectation(description: "send error")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let message = MockMessage(message: ["error": 29])
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .error(.failedRender))
}
func test__Decode__Error_Wrong_Format() {
let exp = expectation(description: "send error")
var result: Result?
assertResult = { res in
result = res
exp.fulfill()
}
// Send
let message = MockMessage(message: ["error": 26])
decoder.send(message: message)
waitForExpectations(timeout: 1)
// Check
XCTAssertEqual(result, .error(.wrongMessageFormat))
}
}