package Ġio . github . ry b alk ins d . ko http . dsl Ċ Ċ import Ġio . github . ry b alk ins d . ko http . assertContains At Least Ċ import Ġio . github . ry b alk ins d . ko http . assertContains Exactly Ċ import Ġio . github . ry b alk ins d . ko http . client . default HttpClient Ċ import Ġio . github . ry b alk ins d . ko http . client . fork Ċ import Ġio . github . ry b alk ins d . ko http . intercept ors . logging . Http Logging Interceptor Ċ import Ġio . github . ry b alk ins d . ko http . jackson . ext . toJson Ċ import Ġorg . junit . Test Ċ import Ġjava . io . File Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ /** Ċ Ġ* Ġ@ author Ġser ge y , Ġa lex , Ġg ok ul Ċ Ġ*/ Ċ class ĠHttp Post Dsl Kt Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġform Ġ# Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Header Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" one " Ġto Ġ" 4 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" cookie " Ġto Ġ" aaa = bbb ; Ġc cc = 4 2 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Params Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg " Ġto Ġ" iphone " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Form Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" login " Ġto Ġ" user ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" email " Ġto Ġ" john . doe @ gmail . com " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġdefault HttpClient . fork Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintercept ors Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Http Logging Interceptor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhttp Post ( client ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg " Ġto Ġ" iphone " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" one " Ġto Ġ 4 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aaa " Ġto Ġ" bbb " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ccc " Ġto Ġ 4 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" login " Ġto Ġ" user " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" email " Ġto Ġ" john . doe @ gmail . com " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Response Ġ= Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains At Least ( expected Header , Ġparsed Response [" headers "]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( expected Params , Ġparsed Response [" args "]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( expected Form , Ġparsed Response [" form "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 , Ġit . code ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġform Ġencoded Ġ# Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Form Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" encoded " Ġto Ġ" Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" not Encoded " Ġto Ġ"% 2 0 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġhttp Post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Encoded (" encoded ", Ġ"% 2 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" not Encoded " Ġto Ġ"% 2 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Response Ġ= Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( expected Form , Ġparsed Response [" form "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 , Ġit . code ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġform Ġstring Ġ# Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġhttp Post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform (" login = user & email = john . doe @ gmail . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it . body ()?. string ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġjson Ġ# Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Header Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" one " Ġto Ġ" 4 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" cookie " Ġto Ġ" aaa = bbb ; Ġc cc = 4 2 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Params Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg " Ġto Ġ" iphone " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Json Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" login " Ġto Ġ" user ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" email " Ġto Ġ" john . doe @ gmail . com " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhttp Post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg " Ġto Ġ" iphone " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" one " Ġto Ġ 4 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aaa " Ġto Ġ" bbb " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ccc " Ġto Ġ 4 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" login " Ġto Ġ" user " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" email " Ġto Ġ" john . doe @ gmail . com " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresponse . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Response Ġ= Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains At Least ( expected Header , Ġparsed Response [" headers "]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( expected Params , Ġparsed Response [" args "]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( expected Json , Ġparsed Response [" json "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 , Ġit . code ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġjson Ġstring Ġ# Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhttp Post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody (" application / json ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring (""" {" login ":" user "," email ":" john . doe @ gmail . com "} """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Json Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" login " Ġto Ġ" user ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" email " Ġto Ġ" john . doe @ gmail . com " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġresponse . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Response Ġ= Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( expected Json , Ġparsed Response [" json "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 , Ġit . code ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġjson Ġstring Ġ 2 Ġ# Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhttp Post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson (""" {" login ":" user "," email ":" john . doe @ gmail . com "} """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Json Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" login " Ġto Ġ" user ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" email " Ġto Ġ" john . doe @ gmail . com " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġresponse . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Response Ġ= Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( expected Json , Ġparsed Response [" json "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 , Ġit . code ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġfile Ġ# Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhttp Post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody (" image / gif ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Url Ġ= Ġthis . java Class . getResource ("/ cat . gif ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ( File ( file Url . to URI ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresponse . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĠtoJson ()[" headers "][" content - length "]. as Long () Ġ> Ġ 1 0 0 _ 0 0 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 , Ġit . code ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġbyte Ġarray Ġ# Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhttp Post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes (" string Ġof Ġbytes ". toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresponse . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Response Ġ= Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 5 , Ġparsed Response [" headers "][" content - length "]. as Int ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 , Ġit . code ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġrequest Ġwith Ġempty Ġbody # Ġpost man Ġecho `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Header Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" one " Ġto Ġ" 4 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" cookie " Ġto Ġ" aaa = bbb ; Ġc cc = 4 2 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Params Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg " Ġto Ġ" iphone " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġhttp Post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" postman - echo . com " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ post " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg " Ġto Ġ" iphone " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" one " Ġto Ġ 4 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aaa " Ġto Ġ" bbb " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ccc " Ġto Ġ 4 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Response Ġ= Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġparsed Response [" headers "] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains At Least ( expected Header , Ġheaders ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( expected Params , Ġparsed Response [" args "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġheaders [" content - length "]. as Int ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 0 , Ġit . code ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ