File tree Expand file tree Collapse file tree
src/server/routes/instance/httpapi/middleware Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import { Provider } from "@/provider/provider"
22import { Session } from "@/session/session"
3- import { NotFoundError } from "@/storage/storage"
43import { iife } from "@/util/iife"
54import { NamedError } from "@opencode-ai/core/util/error"
65import * as Log from "@opencode-ai/core/util/log"
@@ -24,10 +23,6 @@ export const errorLayer = HttpRouter.middleware<{ handles: unknown }>()((effect)
2423 const error = defect . defect
2524 log . error ( "failed" , { error, cause : Cause . pretty ( cause ) } )
2625
27- if ( error instanceof NotFoundError ) {
28- return Effect . succeed ( HttpServerResponse . jsonUnsafe ( error . toObject ( ) , { status : 404 } ) )
29- }
30-
3126 if ( error instanceof NamedError ) {
3227 return Effect . succeed (
3328 HttpServerResponse . jsonUnsafe ( error . toObject ( ) , {
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ import { describe, expect } from "bun:test"
33import { Effect , Layer } from "effect"
44import { HttpClient , HttpClientRequest , HttpRouter } from "effect/unstable/http"
55import { errorLayer } from "../../src/server/routes/instance/httpapi/middleware/error"
6+ import { NotFoundError } from "../../src/storage/storage"
67import { testEffect } from "../lib/effect"
78
89const it = testEffect ( Layer . mergeAll ( NodeHttpServer . layerTest , NodeServices . layer ) )
@@ -27,4 +28,23 @@ describe("HttpApi error middleware", () => {
2728 expect ( JSON . stringify ( body ) ) . not . toContain ( "secret stack marker" )
2829 } ) ,
2930 )
31+
32+ it . live ( "does not map storage not-found defects to 404" , ( ) =>
33+ Effect . gen ( function * ( ) {
34+ yield * HttpRouter . add (
35+ "GET" ,
36+ "/missing" ,
37+ Effect . die ( new NotFoundError ( { message : "Resource not found: secret" } ) ) ,
38+ ) . pipe ( Layer . provide ( errorLayer ) , HttpRouter . serve , Layer . build )
39+
40+ const response = yield * HttpClientRequest . get ( "/missing" ) . pipe ( HttpClient . execute )
41+ const body = yield * response . json
42+
43+ expect ( response . status ) . toBe ( 500 )
44+ expect ( body ) . toEqual ( {
45+ name : "UnknownError" ,
46+ data : { message : "Unexpected server error. Check server logs for details." } ,
47+ } )
48+ } ) ,
49+ )
3050} )
You can’t perform that action at this time.
0 commit comments