package Ġcom . software berg Ċ Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Test Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . util . Base 6 4 Ċ Ċ class ĠHttp Header Spec Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġcreate Ġbasic Ġauth Ġheader `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġ" test " ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġ" password " ĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġ( name , Ġvalue ) Ġ= ĠHttp Header . basic Auth ( username , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals (" Authorization ", Ġname ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Basic Ġd GV zd D pw YX N zd 2 9 y ZA ==", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalArgumentException :: class ) ĊĠĠĠ Ġfun Ġ` it Ġshould Ġnot Ġcreate Ġbasic Ġauth Ġheader Ġif Ġusername Ġhas Ġcolon `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġ" te : st " ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġ" password " ĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Header . basic Auth ( username , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Username Ġcannot Ġhave Ġ':' Ġ[ username = te : st ]", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġcreate Ġbasic Ġauth Ġheader Ġif Ġpassword Ġhas Ġcolon `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġ" test " ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġ" pass : word " ĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġ( name , Ġvalue ) Ġ= ĠHttp Header . basic Auth ( username , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals (" Authorization ", Ġname ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Basic Ġd GV zd D pw YX Nz O nd v cm Q =", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġextract Ġusername Ġand Ġpassword Ġfrom Ġbasic Ġauth Ġheader `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġheader Value Ġ= Ġ" Basic Ġ${ encode Text (" test : password ") }" ĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġ( username , Ġpassword ) Ġ= ĠHttp Header . basic Auth ( header Value ) ĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals (" test ", Ġusername ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" password ", Ġpassword ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġextract Ġusername Ġand Ġpassword Ġfrom Ġbasic Ġauth Ġheader Ġif Ġpassword Ġhas Ġcolon `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġheader Value Ġ= Ġ" Basic Ġ${ encode Text (" test : pass : word ") }" ĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġ( username , Ġpassword ) Ġ= ĠHttp Header . basic Auth ( header Value ) ĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals (" test ", Ġusername ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" pass : word ", Ġpassword ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalArgumentException :: class ) ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġan Ġerror Ġif Ġbasic Ġauth Ġdoes Ġnot Ġhave Ġ' Basic ' Ġprefix `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġheader Value Ġ= Ġencode Text (" test : password ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Header . basic Auth ( header Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Wrong Ġvalue Ġof ĠBasic ĠAuth Ġheader Ġ[ auth HeaderValue =$ header Value ]", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalArgumentException :: class ) ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġan Ġerror Ġif Ġbasic Ġauth Ġhas Ġwrong Ġprefix `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġheader Value Ġ= Ġ" Basic Auth Ġ${ encode Text (" test : password ") }" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Header . basic Auth ( header Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Wrong Ġvalue Ġof ĠBasic ĠAuth Ġheader Ġ[ auth HeaderValue =$ header Value ]", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalArgumentException :: class ) ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġan Ġerror Ġif Ġbasic Ġauth Ġis Ġnot Ġbase 6 4 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġheader Value Ġ= Ġ" Basic Ġd =" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Header . basic Auth ( header Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Wrong Ġvalue Ġof ĠBasic ĠAuth Ġheader Ġ[ auth HeaderValue = Basic Ġd = ]", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalArgumentException :: class ) ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġan Ġerror Ġif Ġbasic Ġauth Ġdoes Ġnot Ġcontain Ġpassword `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġheader Value Ġ= Ġ" Basic Ġ${ encode Text (" test ") }" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Header . basic Auth ( header Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Wrong Ġvalue Ġof ĠBasic ĠAuth Ġheader Ġ[ auth HeaderValue =$ header Value ]", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġencode Text ( text : ĠString ): ĠString Ġ= ĠBase 6 4 . get Encoder (). encode ToString ( text . toByteArray ( StandardCharsets . UTF _ 8 )) Ċ } Ċ