1
- import { signRequestFor , createResponse , validateRequest } from "../../src/evm" ;
1
+ import {
2
+ signRequestFor ,
3
+ fallbackResponder ,
4
+ validateRequest ,
5
+ } from "../../src/evm" ;
2
6
import { zeroAddress } from "viem" ;
7
+ import { NextRequest , NextResponse } from "next/server" ;
3
8
import type { BaseRequest } from "../../src/evm" ;
4
9
5
10
// Mock external dependencies
@@ -64,11 +69,11 @@ describe("evm/index", () => {
64
69
} ) ;
65
70
} ) ;
66
71
67
- describe ( "createResponse " , ( ) => {
72
+ describe ( "fallbackResponder " , ( ) => {
68
73
it ( "creates a response with default status" , ( ) => {
69
74
const responseData = { message : "Success" } ;
70
75
71
- const response = createResponse ( responseData ) ;
76
+ const response = fallbackResponder ( responseData ) ;
72
77
73
78
expect ( response . json ( { } , { } ) ) . toEqual ( {
74
79
data : responseData ,
@@ -78,7 +83,7 @@ describe("evm/index", () => {
78
83
it ( "creates a response with specified status" , ( ) => {
79
84
const responseData = { message : "Error" } ;
80
85
81
- const response = createResponse ( responseData , { status : 400 } ) ;
86
+ const response = fallbackResponder ( responseData , { status : 400 } ) ;
82
87
expect ( response . json ( { } , { } ) ) . toEqual ( {
83
88
data : responseData ,
84
89
status : 400 ,
@@ -161,4 +166,48 @@ describe("evm/index", () => {
161
166
} ) ;
162
167
} ) ;
163
168
} ) ;
169
+
170
+ describe ( "validateNextRequest" , ( ) => {
171
+ it ( "should validate a real request" , async ( ) => {
172
+ const request = new NextRequest (
173
+ new Request ( "https://example.com" , {
174
+ method : "POST" ,
175
+ headers : new Headers ( {
176
+ "mb-metadata" : JSON . stringify ( {
177
+ accountId : "max-normal.near" ,
178
+ evmAddress : zeroAddress ,
179
+ } ) ,
180
+ } ) ,
181
+ body : JSON . stringify ( { test : "data" } ) ,
182
+ } ) ,
183
+ ) ;
184
+
185
+ const result = await validateNextRequest ( request , "0" ) ;
186
+ // Get the response data
187
+ const responseData = await result ?. json ( ) ;
188
+
189
+ // Assert the status and response data separately
190
+ expect ( result ?. status ) . toBe ( 401 ) ;
191
+ expect ( responseData ) . toEqual ( {
192
+ error : `Invalid safeAddress in metadata: 0x123 !== ${ zeroAddress } ` ,
193
+ } ) ;
194
+ } ) ;
195
+ } ) ;
164
196
} ) ;
197
+
198
+ // TODO: Use in Next Agents.
199
+ export async function validateNextRequest (
200
+ req : NextRequest ,
201
+ safeSaltNonce ?: string ,
202
+ ) : Promise < NextResponse | null > {
203
+ const result = await validateRequest < NextRequest , NextResponse > (
204
+ req ,
205
+ safeSaltNonce || "0" ,
206
+ ( data : unknown , init ?: { status ?: number } ) =>
207
+ NextResponse . json ( data , init ) ,
208
+ ) ;
209
+
210
+ console . log ( "validateNextRequest result:" , result ) ; // Add this line for debugging
211
+
212
+ return result ;
213
+ }
0 commit comments