Files
SpotiFLAC-Mobile/ios/RunnerTests/RunnerTests.swift
T

62 lines
1.6 KiB
Swift

import Foundation
import XCTest
@testable import Runner
class RunnerTests: XCTestCase {
func testParsesOAuthCallback() {
let route = ExtensionCallbackParser.parse(
URL(string: "spotiflac://callback?code=auth-code&state=spotify-web")!
)
XCTAssertEqual(
route,
ExtensionCallbackRoute(
code: "auth-code",
extensionId: "spotify-web",
isSessionGrant: false
)
)
}
func testParsesSignedSessionGrant() {
let route = ExtensionCallbackParser.parse(
URL(
string:
"spotiflac://session-grant?grant=session-token&state=provider"
)!
)
XCTAssertEqual(
route,
ExtensionCallbackRoute(
code: "session-token",
extensionId: "provider",
isSessionGrant: true
)
)
}
func testRejectsUntrustedOrIncompleteCallbacks() {
XCTAssertNil(
ExtensionCallbackParser.parse(
URL(string: "https://callback?code=auth&state=provider")!
)
)
XCTAssertNil(
ExtensionCallbackParser.parse(
URL(string: "spotiflac://unknown?code=auth&state=provider")!
)
)
XCTAssertNil(
ExtensionCallbackParser.parse(
URL(string: "spotiflac://callback?code=auth")!
)
)
XCTAssertNil(
ExtensionCallbackParser.parse(
URL(string: "spotiflac://callback?state=provider")!
)
)
}
}