From dd9f54bc54603fe6d532fff0d3b317ff46f586dd Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Tue, 5 Dec 2023 08:18:34 -0300 Subject: [PATCH] fix(gotrue): AuthResponse return non-optional user --- Sources/GoTrue/Extensions.swift | 11 ----------- Sources/GoTrue/Types.swift | 12 ++++++++++++ Tests/GoTrueTests/AuthResponseTests.swift | 16 ++++++++++++++++ Tests/GoTrueTests/DecoderTests.swift | 19 ------------------- 4 files changed, 28 insertions(+), 30 deletions(-) delete mode 100644 Sources/GoTrue/Extensions.swift create mode 100644 Tests/GoTrueTests/AuthResponseTests.swift delete mode 100644 Tests/GoTrueTests/DecoderTests.swift diff --git a/Sources/GoTrue/Extensions.swift b/Sources/GoTrue/Extensions.swift deleted file mode 100644 index f0a50fa4..00000000 --- a/Sources/GoTrue/Extensions.swift +++ /dev/null @@ -1,11 +0,0 @@ -extension AuthResponse { - public var user: User? { - if case let .user(user) = self { return user } - return nil - } - - public var session: Session? { - if case let .session(session) = self { return session } - return nil - } -} diff --git a/Sources/GoTrue/Types.swift b/Sources/GoTrue/Types.swift index d413e359..639b8b16 100644 --- a/Sources/GoTrue/Types.swift +++ b/Sources/GoTrue/Types.swift @@ -341,6 +341,18 @@ public enum AuthResponse: Codable, Hashable, Sendable { case let .user(value): try container.encode(value) } } + + public var user: User { + switch self { + case let .session(session): return session.user + case let .user(user): return user + } + } + + public var session: Session? { + if case let .session(session) = self { return session } + return nil + } } public struct UserAttributes: Codable, Hashable, Sendable { diff --git a/Tests/GoTrueTests/AuthResponseTests.swift b/Tests/GoTrueTests/AuthResponseTests.swift new file mode 100644 index 00000000..488821d6 --- /dev/null +++ b/Tests/GoTrueTests/AuthResponseTests.swift @@ -0,0 +1,16 @@ +import GoTrue +import SnapshotTesting +import XCTest + +final class AuthResponseTests: XCTestCase { + func testSession() throws { + let response = try JSONDecoder.goTrue.decode(AuthResponse.self, from: json(named: "session")) + XCTAssertNotNil(response.session) + XCTAssertEqual(response.user, response.session?.user) + } + + func testUser() throws { + let response = try JSONDecoder.goTrue.decode(AuthResponse.self, from: json(named: "user")) + XCTAssertNil(response.session) + } +} diff --git a/Tests/GoTrueTests/DecoderTests.swift b/Tests/GoTrueTests/DecoderTests.swift deleted file mode 100644 index fe9985a8..00000000 --- a/Tests/GoTrueTests/DecoderTests.swift +++ /dev/null @@ -1,19 +0,0 @@ -import GoTrue -import SnapshotTesting -import XCTest - -final class DecoderTests: XCTestCase { - func testDecodeUser() { - XCTAssertNoThrow( - try JSONDecoder.goTrue.decode(User.self, from: json(named: "user")) - ) - } - - func testDecodeSessionOrUser() { - XCTAssertNoThrow( - try JSONDecoder.goTrue.decode( - AuthResponse.self, from: json(named: "session") - ) - ) - } -}