From 76d751432ca82aad7bd833e4e8d712a220a5b185 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Sat, 23 Dec 2023 08:32:28 -0300 Subject: [PATCH] test: add test for extractParams function (#213) --- Sources/Auth/Internal/Helpers.swift | 13 ++++++++---- Tests/AuthTests/ExtractParamsTests.swift | 25 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 Tests/AuthTests/ExtractParamsTests.swift diff --git a/Sources/Auth/Internal/Helpers.swift b/Sources/Auth/Internal/Helpers.swift index feadea33..33e0df1d 100644 --- a/Sources/Auth/Internal/Helpers.swift +++ b/Sources/Auth/Internal/Helpers.swift @@ -1,6 +1,11 @@ import Foundation -func extractParams(from url: URL) -> [(name: String, value: String)] { +struct Params: Hashable { + var name: String + var value: String +} + +func extractParams(from url: URL) -> [Params] { guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return [] } @@ -11,14 +16,14 @@ func extractParams(from url: URL) -> [(name: String, value: String)] { if let queryItems = components.queryItems { return queryItems.map { - (name: $0.name, value: $0.value ?? "") + Params(name: $0.name, value: $0.value ?? "") } } return [] } -func extractParams(from fragment: String) -> [(name: String, value: String)] { +func extractParams(from fragment: String) -> [Params] { let components = fragment .split(separator: "&") @@ -28,7 +33,7 @@ func extractParams(from fragment: String) -> [(name: String, value: String)] { components .compactMap { $0.count == 2 - ? (name: String($0[0]), value: String($0[1])) + ? Params(name: String($0[0]), value: String($0[1])) : nil } } diff --git a/Tests/AuthTests/ExtractParamsTests.swift b/Tests/AuthTests/ExtractParamsTests.swift new file mode 100644 index 00000000..0585ddbc --- /dev/null +++ b/Tests/AuthTests/ExtractParamsTests.swift @@ -0,0 +1,25 @@ +// +// ExtractParamsTests.swift +// +// +// Created by Guilherme Souza on 23/12/23. +// + +@testable import Auth +import XCTest + +final class ExtractParamsTests: XCTestCase { + func testExtractParamsInQuery() { + let code = UUID().uuidString + let url = URL(string: "io.supabase.flutterquickstart://login-callback/?code=\(code)")! + let params = extractParams(from: url) + XCTAssertEqual(params, [Params(name: "code", value: code)]) + } + + func testExtractParamsInFragment() { + let code = UUID().uuidString + let url = URL(string: "io.supabase.flutterquickstart://login-callback/#code=\(code)")! + let params = extractParams(from: url) + XCTAssertEqual(params, [Params(name: "code", value: code)]) + } +}