package Ġnet . framework . api . rest . client Ċ Ċ import Ġnet . framework . api . rest . extension . Object Util Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġnet . framework . api . rest . helper . Mapping Singleton Ċ import Ġnet . framework . api . rest . model . Response Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert All Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . mock server . client . Mock Server Client Ċ import Ġorg . mock server . junit . jupiter . Mock Server Extension Ċ import Ġorg . mock server . model . Header Ċ import Ġorg . mock server . model . HttpRequest . request Ċ import Ġorg . mock server . model . HttpResponse . response Ċ import Ġorg . mock server . integration . Client And Server . start Client And Server Ċ import Ġnet . framework . api . rest . model . create Normal Request Ċ import Ġnet . framework . api . rest . model . create Normal Response Ċ Ċ /** Ċ Ġ* ĠãĤ · ãĥ³ãĥĹ ãĥ« API ãĤ¯ ãĥ©ãĤ¤ ãĤ¢ ãĥ³ãĥĪ ãĥĨãĤ¹ãĥĪ ãĤ¯ãĥ©ãĤ¹ ãĢĤ Ċ Ġ*/ Ċ @ Extend With ( Mock Server Extension :: class ) Ċ class ĠSimple ApiClient Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Server Client : ĠMock Server Client ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠbeforeEach Life Cycle () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Client Ġ= Ġstart Client And Server ( 8 0 8 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠafterEach Life Cycle () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Client . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġnormal Ġcase , Ġpost ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 0 0 1 _ 0 0 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġmock Ġserver ĊĠĠĠĠĠĠĠ Ġmock Server Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `( request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" POST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ order ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( Mapping Singleton . get Mapper (). toJson ( create Normal Request ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header ( Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( Mapping Singleton . get Mapper (). toJson ( create Normal Response ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġcall Ġmock ĠAPI ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠResponse Ġ= ĠSimple ApiClient ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Uri (" http :// localhost : 8 0 8 0 / order ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setHeader (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( create Normal Request ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke ( Response :: class . java ) ĊĠĠĠĠĠĠĠ Ġ// Ġassertion ĊĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test 0 0 1 _ 0 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( Object Util . isNull OrEmpty ( result ), Ġfalse ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . orderId , Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . merchant Id , Ġ" merchant 0 0 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . errors , Ġnull ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġnormal Ġcase , Ġget ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 0 0 1 _ 0 0 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġmock Ġserver ĊĠĠĠĠĠĠĠ Ġmock Server Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `( request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" GET ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ order ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header ( Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( Mapping Singleton . get Mapper (). toJson ( create Normal Response ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġcall Ġmock ĠAPI ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠResponse Ġ= ĠSimple ApiClient ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Uri (" http :// localhost : 8 0 8 0 / order ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setHeader (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke ( Response :: class . java ) ĊĠĠĠĠĠĠĠ Ġ// Ġassertion ĊĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test 0 0 1 _ 0 0 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( Object Util . isNull OrEmpty ( result ), Ġfalse ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . orderId , Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . merchant Id , Ġ" merchant 0 0 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . errors , Ġnull ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġnormal Ġcase , Ġput ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 0 0 1 _ 0 0 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġmock Ġserver ĊĠĠĠĠĠĠĠ Ġmock Server Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `( request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" PUT ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ order ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( Mapping Singleton . get Mapper (). toJson ( create Normal Request ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header ( Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( Mapping Singleton . get Mapper (). toJson ( create Normal Response ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġcall Ġmock ĠAPI ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠResponse Ġ= ĠSimple ApiClient ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Uri (" http :// localhost : 8 0 8 0 / order ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setHeader (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( create Normal Request ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke ( Response :: class . java ) ĊĠĠĠĠĠĠĠ Ġ// Ġassertion ĊĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test 0 0 1 _ 0 0 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( Object Util . isNull OrEmpty ( result ), Ġfalse ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . orderId , Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . merchant Id , Ġ" merchant 0 0 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . errors , Ġnull ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġnormal Ġcase , Ġdelete ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 0 0 1 _ 0 0 4 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġmock Ġserver ĊĠĠĠĠĠĠĠ Ġmock Server Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `( request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" DELETE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ order ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( Mapping Singleton . get Mapper (). toJson ( create Normal Request ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header ( Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( Mapping Singleton . get Mapper (). toJson ( create Normal Response ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġcall Ġmock ĠAPI ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠResponse Ġ= ĠSimple ApiClient ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Uri (" http :// localhost : 8 0 8 0 / order ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setHeader (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete ( create Normal Request ( orderId Ġ= Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ", Ġmerchant Id Ġ= Ġ" merchant 0 0 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke ( Response :: class . java ) ĊĠĠĠĠĠĠĠ Ġ// Ġassertion ĊĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test 0 0 1 _ 0 0 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( Object Util . isNull OrEmpty ( result ), Ġfalse ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . orderId , Ġ" 2 0 2 0 0 2 2 0 - 0 0 0 0 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . merchant Id , Ġ" merchant 0 0 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals ( result . errors , Ġnull ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ }