168 lines
3.6 KiB
Swift
168 lines
3.6 KiB
Swift
//
|
|
// 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)
|
|
}
|
|
}
|