Skip to content

Commit

Permalink
test: add test for extractParams function (#213)
Browse files Browse the repository at this point in the history
  • Loading branch information
grdsdev authored Dec 23, 2023
1 parent b80898c commit 76d7514
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 4 deletions.
13 changes: 9 additions & 4 deletions Sources/Auth/Internal/Helpers.swift
Original file line number Diff line number Diff line change
@@ -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 []
}
Expand All @@ -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: "&")
Expand All @@ -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
}
}
Expand Down
25 changes: 25 additions & 0 deletions Tests/AuthTests/ExtractParamsTests.swift
Original file line number Diff line number Diff line change
@@ -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)])
}
}

0 comments on commit 76d7514

Please sign in to comment.