Skip to content

Commit d034d0d

Browse files
feat: move rqdata to HCaptchaVerifyParams and deprecate in HCaptchaConfig
1 parent 037c00e commit d034d0d

File tree

10 files changed

+257
-138
lines changed

10 files changed

+257
-138
lines changed

Example/HCaptcha_Tests/Core/HCaptchaVerifyParams__Tests.swift

Lines changed: 98 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -63,52 +63,77 @@ class HCaptchaVerifyParams__Tests: XCTestCase {
6363
XCTAssertTrue(params.resetOnError)
6464
}
6565

66-
func test__init__withResetOnError() {
66+
func test__init__withRqdata() {
6767
// Given
68-
let phonePrefix = "44"
69-
let resetOnError = false
68+
let rqdata = "test-rqdata-string"
7069

7170
// When
72-
let params = HCaptchaVerifyParams(phonePrefix: phonePrefix, resetOnError: resetOnError)
71+
let params = HCaptchaVerifyParams(rqdata: rqdata)
7372

7473
// Then
75-
XCTAssertEqual(params.phonePrefix, phonePrefix)
74+
XCTAssertNil(params.phonePrefix)
7675
XCTAssertNil(params.phoneNumber)
77-
XCTAssertFalse(params.resetOnError)
76+
XCTAssertEqual(params.rqdata, rqdata)
77+
XCTAssertTrue(params.resetOnError)
7878
}
7979

8080
func test__init__withAllValues() {
8181
// Given
8282
let phonePrefix = "44"
8383
let phoneNumber = "1234567890"
84+
let rqdata = "test-rqdata-string"
8485
let resetOnError = false
8586

8687
// When
87-
let params = HCaptchaVerifyParams(phonePrefix: phonePrefix, phoneNumber: phoneNumber, resetOnError: resetOnError)
88+
let params = HCaptchaVerifyParams(phonePrefix: phonePrefix,
89+
phoneNumber: phoneNumber,
90+
rqdata: rqdata,
91+
resetOnError: resetOnError)
8892

8993
// Then
9094
XCTAssertEqual(params.phonePrefix, phonePrefix)
9195
XCTAssertEqual(params.phoneNumber, phoneNumber)
96+
XCTAssertEqual(params.rqdata, rqdata)
9297
XCTAssertFalse(params.resetOnError)
9398
}
9499

100+
func test__init__withResetOnError() {
101+
// Given
102+
let phonePrefix = "44"
103+
let resetOnError = false
104+
105+
// When
106+
let params = HCaptchaVerifyParams(phonePrefix: phonePrefix, resetOnError: resetOnError)
107+
108+
// Then
109+
XCTAssertEqual(params.phonePrefix, phonePrefix)
110+
XCTAssertNil(params.phoneNumber)
111+
XCTAssertFalse(params.resetOnError)
112+
}
113+
114+
95115
// MARK: - toDictionary Tests
96116

97117
func test__toDictionary__withAllValues() {
98118
// Given
99119
let phonePrefix = "44"
100120
let phoneNumber = "1234567890"
121+
let rqdata = "test-rqdata"
101122
let resetOnError = false
102-
let params = HCaptchaVerifyParams(phonePrefix: phonePrefix, phoneNumber: phoneNumber, resetOnError: resetOnError)
123+
let params = HCaptchaVerifyParams(phonePrefix: phonePrefix,
124+
phoneNumber: phoneNumber,
125+
rqdata: rqdata,
126+
resetOnError: resetOnError)
103127

104128
// When
105129
let dict = params.toDictionary()
106130

107131
// Then
108132
XCTAssertEqual(dict["phonePrefix"] as? String, phonePrefix)
109133
XCTAssertEqual(dict["phoneNumber"] as? String, phoneNumber)
134+
XCTAssertEqual(dict["rqdata"] as? String, rqdata)
110135
XCTAssertEqual(dict["resetOnError"] as? Bool, resetOnError)
111-
XCTAssertEqual(dict.count, 3)
136+
XCTAssertEqual(dict.count, 4)
112137
}
113138

114139
func test__toDictionary__withPartialValues() {
@@ -156,14 +181,35 @@ class HCaptchaVerifyParams__Tests: XCTestCase {
156181
XCTAssertEqual(dict.count, 2)
157182
}
158183

184+
func test__toDictionary__withOnlyRqdata() {
185+
// Given
186+
let rqdata = "test-rqdata-string"
187+
let resetOnError = false
188+
let params = HCaptchaVerifyParams(rqdata: rqdata, resetOnError: resetOnError)
189+
190+
// When
191+
let dict = params.toDictionary()
192+
193+
// Then
194+
XCTAssertNil(dict["phonePrefix"])
195+
XCTAssertNil(dict["phoneNumber"])
196+
XCTAssertEqual(dict["rqdata"] as? String, rqdata)
197+
XCTAssertEqual(dict["resetOnError"] as? Bool, resetOnError)
198+
XCTAssertEqual(dict.count, 2)
199+
}
200+
159201
// MARK: - toJSONString Tests
160202

161203
func test__toJSONString__validJSON() {
162204
// Given
163205
let phonePrefix = "44"
164206
let phoneNumber = "1234567890"
207+
let rqdata = "test-rqdata"
165208
let resetOnError = false
166-
let params = HCaptchaVerifyParams(phonePrefix: phonePrefix, phoneNumber: phoneNumber, resetOnError: resetOnError)
209+
let params = HCaptchaVerifyParams(phonePrefix: phonePrefix,
210+
phoneNumber: phoneNumber,
211+
rqdata: rqdata,
212+
resetOnError: resetOnError)
167213

168214
// When
169215
let jsonString = params.toJSONString()
@@ -172,10 +218,17 @@ class HCaptchaVerifyParams__Tests: XCTestCase {
172218
XCTAssertNotNil(jsonString)
173219

174220
// Verify JSON structure
175-
let data = jsonString!.data(using: .utf8)!
176-
let json = try! JSONSerialization.jsonObject(with: data) as! [String: Any]
221+
guard let data = jsonString?.data(using: .utf8) else {
222+
XCTFail("Failed to convert to data")
223+
return
224+
}
225+
guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
226+
XCTFail("Failed to parse JSON")
227+
return
228+
}
177229
XCTAssertEqual(json["phonePrefix"] as? String, phonePrefix)
178230
XCTAssertEqual(json["phoneNumber"] as? String, phoneNumber)
231+
XCTAssertEqual(json["rqdata"] as? String, rqdata)
179232
XCTAssertEqual(json["resetOnError"] as? Bool, resetOnError)
180233
}
181234

@@ -190,8 +243,14 @@ class HCaptchaVerifyParams__Tests: XCTestCase {
190243
XCTAssertNotNil(jsonString)
191244

192245
// Verify JSON structure
193-
let data = jsonString!.data(using: .utf8)!
194-
let json = try! JSONSerialization.jsonObject(with: data) as! [String: Any]
246+
guard let data = jsonString?.data(using: .utf8) else {
247+
XCTFail("Failed to convert to data")
248+
return
249+
}
250+
guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
251+
XCTFail("Failed to parse JSON")
252+
return
253+
}
195254
XCTAssertNil(json["phonePrefix"])
196255
XCTAssertNil(json["phoneNumber"])
197256
XCTAssertEqual(json["resetOnError"] as? Bool, true)
@@ -209,8 +268,14 @@ class HCaptchaVerifyParams__Tests: XCTestCase {
209268
XCTAssertNotNil(jsonString)
210269

211270
// Verify JSON structure
212-
let data = jsonString!.data(using: .utf8)!
213-
let json = try! JSONSerialization.jsonObject(with: data) as! [String: Any]
271+
guard let data = jsonString?.data(using: .utf8) else {
272+
XCTFail("Failed to convert to data")
273+
return
274+
}
275+
guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
276+
XCTFail("Failed to parse JSON")
277+
return
278+
}
214279
XCTAssertEqual(json["phonePrefix"] as? String, phonePrefix)
215280
XCTAssertNil(json["phoneNumber"])
216281
XCTAssertEqual(json["resetOnError"] as? Bool, true)
@@ -256,8 +321,14 @@ class HCaptchaVerifyParams__Tests: XCTestCase {
256321
XCTAssertNotNil(jsonString)
257322

258323
// Verify JSON structure
259-
let data = jsonString!.data(using: .utf8)!
260-
let json = try! JSONSerialization.jsonObject(with: data) as! [String: Any]
324+
guard let data = jsonString?.data(using: .utf8) else {
325+
XCTFail("Failed to convert to data")
326+
return
327+
}
328+
guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
329+
XCTFail("Failed to parse JSON")
330+
return
331+
}
261332
XCTAssertEqual(json["phonePrefix"] as? String, "")
262333
XCTAssertEqual(json["phoneNumber"] as? String, "")
263334
XCTAssertEqual(json["resetOnError"] as? Bool, true)
@@ -290,8 +361,14 @@ class HCaptchaVerifyParams__Tests: XCTestCase {
290361
XCTAssertNotNil(jsonString)
291362

292363
// Verify JSON structure
293-
let data = jsonString!.data(using: .utf8)!
294-
let json = try! JSONSerialization.jsonObject(with: data) as! [String: Any]
364+
guard let data = jsonString?.data(using: .utf8) else {
365+
XCTFail("Failed to convert to data")
366+
return
367+
}
368+
guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
369+
XCTFail("Failed to parse JSON")
370+
return
371+
}
295372
XCTAssertEqual(json["phonePrefix"] as? String, phonePrefix)
296373
XCTAssertEqual(json["phoneNumber"] as? String, phoneNumber)
297374
XCTAssertEqual(json["resetOnError"] as? Bool, true)
@@ -334,4 +411,4 @@ class HCaptchaVerifyParams__Tests: XCTestCase {
334411
// Then
335412
XCTAssertNil(weakParams, "HCaptchaVerifyParams should not create retain cycles")
336413
}
337-
}
414+
}

Example/HCaptcha_Tests/Core/HCaptchaWebViewManager__Tests.swift

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,9 @@ class HCaptchaWebViewManager__Tests: XCTestCase {
717717
let phonePrefix = "44"
718718
let phoneNumber = "1234567890"
719719
let resetOnError = false
720-
let verifyParams = HCaptchaVerifyParams(phonePrefix: phonePrefix, phoneNumber: phoneNumber, resetOnError: resetOnError)
720+
let verifyParams = HCaptchaVerifyParams(phonePrefix: phonePrefix,
721+
phoneNumber: phoneNumber,
722+
resetOnError: resetOnError)
721723
let manager = HCaptchaWebViewManager(messageBody: "{token: \"test_token\"}")
722724

723725
// When
@@ -737,9 +739,9 @@ class HCaptchaWebViewManager__Tests: XCTestCase {
737739
func test__validate__withVerifyParams__setsManagerProperties() {
738740
// Given
739741
let phonePrefix = "44"
740-
let phoneNumber = "1234567890"
741742
let resetOnError = false
742-
let verifyParams = HCaptchaVerifyParams(phonePrefix: phonePrefix, phoneNumber: phoneNumber, resetOnError: resetOnError)
743+
let verifyParams = HCaptchaVerifyParams(phonePrefix: phonePrefix,
744+
resetOnError: resetOnError)
743745
let manager = HCaptchaWebViewManager(messageBody: "{token: \"test_token\"}")
744746

745747
// When
@@ -748,7 +750,6 @@ class HCaptchaWebViewManager__Tests: XCTestCase {
748750

749751
// Then
750752
XCTAssertEqual(manager.verifyParams?.phonePrefix, phonePrefix)
751-
XCTAssertEqual(manager.verifyParams?.phoneNumber, phoneNumber)
752753
XCTAssertEqual(manager.verifyParams?.resetOnError, resetOnError)
753754
XCTAssertEqual(manager.shouldResetOnError, resetOnError)
754755
}
@@ -787,6 +788,22 @@ class HCaptchaWebViewManager__Tests: XCTestCase {
787788
XCTAssertTrue(rawValue.hasSuffix(");"))
788789
}
789790

791+
func test__JSCommand_execute__withRqdata() {
792+
// Given
793+
let rqdata = "test-rqdata-string"
794+
let verifyParams = HCaptchaVerifyParams(rqdata: rqdata, resetOnError: false)
795+
let command = HCaptchaWebViewManager.JSCommand.execute(verifyParams)
796+
797+
// When
798+
let rawValue = command.rawValue
799+
800+
// Then
801+
XCTAssertTrue(rawValue.contains("execute("))
802+
XCTAssertTrue(rawValue.contains("\"rqdata\":\"test-rqdata-string\""))
803+
XCTAssertTrue(rawValue.contains("\"resetOnError\":false"))
804+
XCTAssertTrue(rawValue.hasSuffix(");"))
805+
}
806+
790807
func test__JSCommand_reset() {
791808
// Given
792809
let command = HCaptchaWebViewManager.JSCommand.reset

Example/HCaptcha_Tests/Core/HCaptcha__Tests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,24 @@ class HCaptcha__Tests: XCTestCase {
214214
wait(for: [exp], timeout: TestTimeouts.standard)
215215
}
216216

217+
func test__validate__withVerifyParams__rqdata() {
218+
// Given
219+
let exp = expectation(description: "validate with rqdata")
220+
let rqdata = "test-rqdata-string"
221+
let verifyParams = HCaptchaVerifyParams(rqdata: rqdata)
222+
let hcaptcha = HCaptcha(manager: HCaptchaWebViewManager(messageBody: "{token: \"test_token\"}"))
223+
224+
// When
225+
let view = UIApplication.shared.windows.first?.rootViewController?.view
226+
hcaptcha.validate(on: view, verifyParams: verifyParams) { result in
227+
// Then
228+
XCTAssertEqual(result.token, "test_token")
229+
exp.fulfill()
230+
}
231+
232+
wait(for: [exp], timeout: TestTimeouts.standard)
233+
}
234+
217235
func test__validate__withVerifyParams__resetOnErrorFalse() {
218236
// Given
219237
let exp = expectation(description: "validate with resetOnError false")

0 commit comments

Comments
 (0)