Files
vapor-po/Tests/ApiRouteTests/UserApiRouteTests.swift

86 lines
1.8 KiB
Swift

import Dependencies
import Foundation
import SharedModels
import Testing
import URLRouting
@Suite("UserApiRouteTests")
struct UserApiRouteTests {
let router = SiteRoute.Api.router
@Test
func create() throws {
let json = """
{
\"username\": \"foo\",
\"email\": \"foo@bar.com\",
\"password\": \"super-secret\",
\"confirmPassword\": \"super-secret\"
}
"""
var request = URLRequestData(
method: "POST",
path: "/api/v1/users",
body: .init(json.utf8)
)
let route = try router.parse(&request)
#expect(
route == .user(.create(.init(
username: "foo",
email: "foo@bar.com",
password: "super-secret",
confirmPassword: "super-secret"
))))
}
@Test
func delete() throws {
let id = UUID(0)
var request = URLRequestData(
method: "DELETE",
path: "/api/v1/users/\(id)"
)
let route = try router.parse(&request)
#expect(route == .user(.delete(id: id)))
}
@Test
func get() throws {
let id = UUID(0)
var request = URLRequestData(
method: "GET",
path: "/api/v1/users/\(id)"
)
let route = try router.parse(&request)
#expect(route == .user(.get(id: id)))
}
@Test
func index() throws {
var request = URLRequestData(
method: "GET",
path: "/api/v1/users"
)
let route = try router.parse(&request)
#expect(route == .user(.index))
}
@Test
func update() throws {
let id = UUID(0)
let json = """
{
\"username\": \"bar\",
\"email\": \"bar@foo.com\"
}
"""
var request = URLRequestData(
method: "PATCH",
path: "/api/v1/users/\(id)",
body: .init(json.utf8)
)
let route = try router.parse(&request)
#expect(route == .user(.update(id: id, updates: .init(username: "bar", email: "bar@foo.com"))))
}
}