@@ -4,7 +4,6 @@ import { fake } from 'mokapi/faker'
44export default function ( ) {
55 on ( 'http' , ( request , response ) => {
66 if ( request . operationId === 'getUserByName' ) {
7-
87 const username = request . path . username ;
98 console . log ( `[HTTP] Incoming request → GET /user/${ username } ` ) ;
109 console . log ( `[HTTP] Operation matched: getUserByName` ) ;
@@ -18,10 +17,67 @@ export default function() {
1817 response . statusCode = 404
1918 }
2019 }
20+ switch ( request . key ) {
21+ case '/user/login' : {
22+ const username = request . query . username ;
23+ if ( users . has ( username ) ) {
24+ const user = users . get ( username ) ;
25+ console . log ( `[Script] User ${ username } found` )
26+ if ( user . password === request . query . password ) {
27+ response . data = 'ok'
28+ } else {
29+ console . log ( `[Script] Password for ${ username } is invalid` )
30+ response . statusCode = 400 ;
31+ }
32+ } else {
33+ console . log ( `[Script] User ${ username } not found` )
34+ response . statusCode = 400 ;
35+ }
36+ break ;
37+ }
38+ case '/store/order' : {
39+ orders . set ( request . body . id , request . body ) ;
40+ response . data = request . body ;
41+ break ;
42+ }
43+ case '/store/order/{orderId}' : {
44+ if ( request . method === 'GET' ) {
45+ const order = orders . get ( request . path . orderId ) ;
46+ if ( order ) {
47+ response . data = order ;
48+ } else {
49+ response . statusCode = 404 ;
50+ }
51+ } else if ( request . method === 'DELETE' ) {
52+ const orderId = request . path . orderId ;
53+ if ( orders . delete ( orderId ) ) {
54+ response . statusCode = 204 ;
55+ } else {
56+ response . statusCode = 404 ;
57+ }
58+ }
59+ break ;
60+ }
61+ case '/user/logout' : {
62+ // force a script error with undefined variable user
63+ console . log ( `logout current user ${ user } ` )
64+ break ;
65+ }
66+ }
2167 } )
2268}
2369
2470const users = new Map ( [
71+ [ 'ajohnson' , {
72+ id : fake ( { type : 'integer' , format : 'int64' } ) ,
73+ username : 'ajohnson' ,
74+ firstName : 'Alice' ,
75+ lastName : 'Johnson' ,
76+ 77+ password : 'anothersecretpassword456' ,
78+ phone : fake ( { type : 'string' , pattern : '(?:(?:\\+|0{0,2})91(\\s*[\\- ]\\s*)?|[0 ]?)?[789]\\d{9}|(\\d[ -]?){10}\\d' } ) ,
79+ userStatus : 1
80+ } ] ,
2581 [ 'bmiller' , {
2682 id : fake ( { type : 'integer' , format : 'int64' } ) ,
2783 username : 'bmiller' ,
@@ -32,4 +88,13 @@ const users = new Map([
3288 phone : fake ( { type : 'string' , pattern : '(?:(?:\\+|0{0,2})91(\\s*[\\- ]\\s*)?|[0 ]?)?[789]\\d{9}|(\\d[ -]?){10}\\d' } ) ,
3389 userStatus : 1
3490 } ]
35- ] ) ;
91+ ] ) ;
92+
93+ const orders = new Map ( [
94+ [ 1 , {
95+ petId : 74959 ,
96+ quantity : 1 ,
97+ shipDate : '2011-01-08T16:59:15Z' ,
98+ status : 'delivered'
99+ } ]
100+ ] )
0 commit comments