ReCaptcha/Example/ReCaptcha_Tests/Core/ReCaptchaDecoder__Tests.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)
}
}