package Ġby . g alt . k mock webserver . sample Ċ Ċ import Ġby . g alt . k mock server . K mock WebServer Rule Ċ import Ġby . g alt . k mock server . rule . Response Rule Ċ import Ġby . g alt . k mock server . rule . rule Ċ import Ġby . g alt . k mock server . request . Header Ċ import Ġokhttp 3 .* Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Rule Chain Ċ import Ġkotlin . test . assertTrue ĊĊ Ċ class ĠSample Test Ġ{ ĊĊĠĠĠ Ġval Ġserver Rule : ĠK mock WebServer Rule Ġ= ĠK mock WebServer Rule () ĊĊĠĠĠ Ġval Ġclient : ĠOk HttpClient Ġ= ĠOk HttpClient () ĊĊĠĠĠ Ġ@ Jvm Field Ġ@ Rule ĊĠĠĠ Ġval Ġrule Ġ= ĠRule Chain . empty Rule Chain () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. around ( server Rule ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return Correct Response () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogin Response Ġ= Ġ""" " {" login ":" test ", Ġ" id ": 1 } """ ĊĊĠĠĠĠĠĠĠ Ġserver Rule . add Rule ( rule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ login ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġlogin Response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders ( Header (" Authorization ", Ġ" hash "), ĠHeader (" Test ", Ġ" test ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġmock Request ("/ login ", Ġ" GET ") ĊĊĠĠĠĠĠĠĠ Ġclient . new Call ( request ). execute (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( code ()). isEqualTo ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( body (). string ()). isEqualTo Ign oring Case ( login Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( header (" Authorization ")). isEqualTo Ign oring Case (" hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( header (" Test ")). isEqualTo Ign oring Case (" test ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( client . new Call ( request ). execute (). code ()). isEqualTo ( 4 0 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return 4 0 1 StatusCode () Ġ{ ĊĠĠĠĠĠĠĠ Ġserver Rule . add Rule ( rule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ login ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ 4 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġclient . new Call ( mock Request ("/ login ", Ġ" GET ")). execute (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( code ()). isEqualTo ( 4 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( body (). string ()). isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return 4 0 4 Response () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( client . new Call ( mock Request ("/", Ġ" GET ")). execute (). code ()). isEqualTo ( 4 0 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġstress Test should Accept All Rules And Return InThe End 4 0 4 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġget Request Ġ= Ġmock Request ("/ get ? a = 1 2 3 ", Ġ" GET ") ĊĠĠĠĠĠĠĠ Ġval Ġpost Request Ġ= Ġmock Request ("/ post ", Ġ" POST ", Ġ""" {" expected _ result :" success "} """) ĊĊĠĠĠĠĠĠĠ Ġval Ġget Rule Ġ= Ġrule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ get ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpost Rule Ġ= Ġrule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("/ post ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Rule . add Rule ( get Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Rule . add Rule ( post Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( post Request ). execute (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( code ()). isEqualTo ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( body (). string ()). isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( getRequest ). execute (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( code ()). isEqualTo ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( body (). string ()). isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( client . new Call ( getRequest ). execute (). code ()). isEqualTo ( 4 0 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmock Request ( path : ĠString , Ġmethod : ĠString , Ġjson Body : ĠString ? Ġ= Ġnull ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠJSON Ġ= ĠMediaType . parse (" application / json ; Ġcharset = utf - 8 ") ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRequest . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl (" http :// 1 2 7 . 0 . 0 . 1 : 8 0 8 0 " Ġ+ Ġpath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod ( method , Ġif Ġ( json Body Ġ!= Ġnull ) ĠRequest Body . create ( JSON , Ġjson Body ) Ġelse Ġnull ) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġ} Ċ Ċ }