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") - ) - ) - } -}