/* Ċ Ġ* Ġspring - message - board - demo Ċ Ġ* ĠRefer Ġto ĠLIC ENCE . txt Ġfor Ġlicence Ġdetails . Ċ Ġ*/ Ċ package Ġtest case . vo . auth Ċ Ċ import Ġcom . github . fj . board . persistence . model . auth . Platform Type Ċ import Ġcom . github . fj . board . vo . auth . UserAgent Ċ import Ġcom . github . fj . lib . util . getRandom Alpha Numeric String Ċ import Ġde . sk uzzle . semantic . Version Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . Matchers .` is ` Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Arguments Ċ import Ġorg . junit . jupiter . params . provider . Method Source Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġtest . com . github . fj . board . util . HttpRequest Utils . mock Local host Servlet Request Ċ import Ġtest . com . github . fj . lib . util . Random Test Arg Utils . random Enum Const Ċ import Ġjava . util . stream . Stream Ċ Ċ /** Ċ Ġ* Ġ@ author ĠFr ances co ĠJo ( nim bus ob @ gmail . com ) Ċ Ġ* Ġ@ since Ġ 1 7 Ġ- ĠJul Ġ- Ġ 2 0 2 0 Ċ Ġ*/ Ċ class ĠUser Agent Parser Test Ġ{ ĊĠĠĠ Ġ@ Parameterized Test ( name Ġ= Ġ" Empty Ġif Ġ' User - Agent ' Ġis : Ġ'{ 0 }' ") ĊĠĠĠ Ġ@ Method Source (" params For Empty UserAgent ") ĊĠĠĠ Ġfun Ġ` empty Ġif ĠUser - Agent Ġheader Ġis Ġthese `( userAgent : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven : ĊĠĠĠĠĠĠĠ Ġval Ġmock Http Req Ġ= Ġmock Local host Servlet Request () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen : ĊĠĠĠĠĠĠĠ Ġval Ġua Ġ= Ġif Ġ( userAgent Ġ== Ġ"\\ 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Agent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ` when `( mock Http Req . getHeader ( UserAgent . HEADER _ NAME )). thenReturn ( ua ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen : ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠUser Agent . from ( mock Http Req ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġexpect : ĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( UserAgent . EMPTY )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ( name Ġ= Ġ" User Ġagent Ġis Ġ'{ 1 }' Ġfor Ġ\" ' User - Agent ': Ġ'{ 0 }' \" ") ĊĠĠĠ Ġ@ Method Source (" params For UserAgent ") ĊĠĠĠ Ġfun Ġ` user Ġagent Ġis Ġpopulated Ġinto Ġmodel Ġif Ġpar s able `( userAgent : ĠString , Ġexpected : ĠUser Agent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven : ĊĠĠĠĠĠĠĠ Ġval Ġmock Http Req Ġ= Ġmock Local host Servlet Request () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen : ĊĠĠĠĠĠĠĠ Ġ` when `( mock Http Req . getHeader ( UserAgent . HEADER _ NAME )). thenReturn ( userAgent ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen : ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠUser Agent . from ( mock Http Req ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġexpect : ĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( expected )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġfun Ġparams For Empty UserAgent (): ĠStream < Arguments > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStream . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("\\ 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" asdf asdf asdf ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġfun Ġparams For UserAgent (): ĠStream < Arguments > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStream . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Enum Const ( Platform Type :: class . java ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( it . userAgent Name , ĠUser Agent . create ( it , Ġ"", ĠVersion . ZERO )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Enum Const ( Platform Type :: class . java ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("${ it . userAgent Name }; Ġ${ Version . COMP LI ANCE }", ĠUser Agent . create ( it , Ġ"", ĠVersion . COMP LI ANCE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Enum Const ( Platform Type :: class . java ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplatform Ver Ġ= ĠgetRandom Alpha Numeric String ( 1 6 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ let ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . userAgent Name }; Ġ${ Version . COMP LI ANCE }; Ġ$ platform Ver ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Agent . create ( it , Ġplatform Ver , ĠVersion . COMP LI ANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ