package Ġio . ktor . client . tests Ċ Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . client .* Ċ import Ġio . ktor . client . engine .* Ċ import Ġio . ktor . client . features .* Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . client . tests . utils .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . response .* Ċ import Ġio . ktor . routing .* Ċ import Ġio . ktor . server . engine .* Ċ import Ġio . ktor . server . netty .* Ċ import Ġio . ktor . util .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlin . test .* Ċ Ċ @ Suppress (" K Doc Missing Documentation ") Ċ abstract Ġclass ĠHttpClient Test ( private Ġval Ġfactory : ĠHttpClient Engine Factory <* >) Ġ: ĠTest With K tor () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġserver : ĠApplication Engine Ġ= Ġembedded Server ( Net ty , Ġserver Port ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ empty ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ hello ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" hello ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconfig Cop ies Old Features And Intercept ors () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Feature Key Ġ= ĠAttribute Key < Boolean >(" custom Feature ") ĊĠĠĠĠĠĠĠ Ġval Ġanother Custom Feature Key Ġ= ĠAttribute Key < Boolean >(" another Custom Feature ") ĊĊĠĠĠĠĠĠĠ Ġval Ġoriginal Client Ġ= ĠHttpClient ( factory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Default Transform ers Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( Default Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġport Ġ= Ġserver Port ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . path (" empty ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall (" custom Feature ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . put ( custom Feature Key , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġeverything Ġwas Ġinstalled Ġin Ġoriginal ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Request Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Client . execute ( HttpRequest Builder ()) ĊĠĠĠĠĠĠĠ Ġ}. request ĊĠĠĠĠĠĠĠ ĠassertEquals ("/ empty ", Ġoriginal Request . url . fullPath ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( original Client . attributes . contains ( custom Feature Key ), Ġ" no Ġcustom Ġfeature Ġinstalled ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġa Ġnew Ġclient , Ġcopying Ġthe Ġoriginal , Ġwith : ĊĠĠĠĠĠĠĠ Ġ// Ġ- Ġa Ġre configured ĠDefault Request ĊĠĠĠĠĠĠĠ Ġ// Ġ- Ġa Ġnew Ġcustom Ġfeature ĊĠĠĠĠĠĠĠ Ġval Ġnew Client Ġ= Ġoriginal Client . config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( Default Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġport Ġ= Ġserver Port ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . path (" hello ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall (" another Custom Feature ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . put ( another Custom Feature Key , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġthe Ġcustom Ġfeature Ġremain ed Ġinstalled ĊĠĠĠĠĠĠĠ Ġ// Ġand Ġthat Ġwe Ġoverride Ġthe ĠDefault Request ĊĠĠĠĠĠĠĠ Ġval Ġnew Request Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Client . execute ( HttpRequest Builder ()) ĊĠĠĠĠĠĠĠ Ġ}. request ĊĠĠĠĠĠĠĠ ĠassertEquals ("/ hello ", Ġnew Request . url . fullPath ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( new Client . attributes . contains ( custom Feature Key ), Ġ" no Ġcustom Ġfeature Ġinstalled ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġthe Ġnew Ġcustom Ġfeature Ġis Ġthere Ġtoo ĊĠĠĠĠĠĠĠ ĠassertTrue ( new Client . attributes . contains ( another Custom Feature Key ), Ġ" no Ġother Ġcustom Ġfeature Ġinstalled ") ĊĠĠĠ Ġ} Ċ Ċ } Ċ