package Ġme tri k . project . infrastructure . b amboo . fe ign Ċ Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Feature Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . datatype . js r 3 1 0 . Java Time Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . Kotlin Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġme tri k . project . domain . service . b amboo .* Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . mock server . integration . Client And Server Ċ import Ġorg . mock server . integration . Client And Server . start Client And Server Ċ import Ġorg . mock server . junit . jupiter . Mock Server Extension Ċ import Ġorg . mock server . model . HttpRequest . request Ċ import Ġorg . mock server . model . HttpResponse . response Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġjava . net . URI Ċ Ċ @ Extend With ( Mock Server Extension :: class ) Ċ @ SpringBootTest Ċ internal Ġclass ĠB amboo Fe ign Client Test ( ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġb amboo Fe ign Client : ĠB amboo Fe ign Client Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Server : ĠClient And Server ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠobjectMapper : ĠObjectMapper ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠobjectMapper Ġ= ĠObjectMapper (). register Module ( Kotlin Module ()) ĊĠĠĠĠĠĠĠ ĠobjectMapper . register Module ( Java Time Module ()) ĊĠĠĠĠĠĠĠ ĠobjectMapper . configure ( Deserialization Feature . FAIL _ ON _ UNKNOWN _ PROPERTIES , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġmock Server Ġ= Ġstart Client And Server ( 8 7 8 7 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġadd ĠBearer Ġtoken Ġto Ġrequest Ġwhile Ġverify ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" GET ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ test / build / rest / api / latest / project /") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Authorization ", Ġ" Bearer ĠTest Token ") ĊĠĠĠĠĠĠĠ Ġ). respond ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġb amboo Fe ign Client . verify ( URI (" http :// localhost : 8 7 8 7 / test / build "), Ġ" Test Token ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġadd ĠBearer Ġtoken Ġand Ġserialize Ġright Ġwhile Ġquerying Ġfor Ġbuild Ġsummary `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpect Build Summary DTO : ĠBuild Summary DTO Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( java Class . getResource ("/ pipeline / b amboo / raw - build - summary - 1 . json ") !!. read Text ()) ĊĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" GET ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ test / build ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Authorization ", Ġ" Bearer ĠTest Token ") ĊĠĠĠĠĠĠĠ Ġ). respond ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( java Class . getResource ("/ pipeline / b amboo / raw - build - summary - 1 . json ") !!. read Text ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbuild Summary Ġ= Ġb amboo Fe ign Client . getMax Build Number ( URI (" http :// localhost : 8 7 8 7 / test / build "), Ġ" Test Token ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Build Summary DTO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Summary ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġadd ĠBearer Ġtoken Ġand Ġserialize Ġright Ġwhile Ġquerying Ġfor Ġbuild Ġdetails `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpect Build Details DTO : ĠBuild Detail DTO Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( java Class . getResource ("/ pipeline / b amboo / raw - build - details - 1 . json ") !!. read Text ()) ĊĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" GET ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ test / build / detail ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Authorization ", Ġ" Bearer ĠTest Token ") ĊĠĠĠĠĠĠĠ Ġ). respond ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( java Class . getResource ("/ pipeline / b amboo / raw - build - details - 1 . json ") !!. read Text ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuild Detail Ġ= Ġb amboo Fe ign Client . get Build Details ( URI (" http :// localhost : 8 7 8 7 / test / build / detail "), Ġ" Test Token ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Build Details DTO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Detail ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġget Ġplan Ġkey Ġwhile Ġquerying Ġfor Ġdeploy Ġproject `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpect Deploy Project Summary DTO : ĠDeploy Project DTO Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava Class . getResource ("/ pipeline / b amboo / raw - deploy - project - summary . json ") !!. read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" GET ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ test / deploy / summary ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Authorization ", Ġ" Bearer ĠTest Token ") ĊĠĠĠĠĠĠĠ Ġ). respond ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( java Class . getResource ("/ pipeline / b amboo / raw - deploy - project - summary . json ") !!. read Text ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeploy Project Summary : ĠDeploy Project DTO ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb amboo Fe ign Client . get Deploy Summary ( URI (" http :// localhost : 8 7 8 7 / test / deploy / summary "), Ġ" Test Token ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Deploy Project Summary DTO . plan Key . key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeploy Project Summary !!. plan Key . key ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Deploy Project Summary DTO . environments [ 0 ]. name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeploy Project Summary . environments [ 0 ]. name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġget Ġdeploy Ġresults Ġand Ġserialize Ġright `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Deployment Results DTO : ĠDeployment Results DTO Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava Class . getResource ("/ pipeline / b amboo / raw - deploy - results - 1 . json ") !!. read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" GET ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ test / deploy / results ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Authorization ", Ġ" Bearer ĠTest Token ") ĊĠĠĠĠĠĠĠ Ġ). respond ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( java Class . getResource ("/ pipeline / b amboo / raw - deploy - results - 1 . json ") !!. read Text ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeployment Results DTO : ĠDeployment Results DTO ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb amboo Fe ign Client . get Deploy Results ( URI (" http :// localhost : 8 7 8 7 / test / deploy / results "), Ġ" Test Token ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Deployment Results DTO . results [ 0 ]. deployment Version Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployment Results DTO !!. results [ 0 ]. deployment Version Name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġdeploy Ġversion Ġand Ġserialize Ġright `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Deployment Version Build Result DTO : ĠDeployment Version Build Result DTO Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava Class . getResource ("/ pipeline / b amboo / raw - deploy - version - 1 . json ") !!. read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" GET ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ test / deploy / version ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Authorization ", Ġ" Bearer ĠTest Token ") ĊĠĠĠĠĠĠĠ Ġ). respond ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( java Class . getResource ("/ pipeline / b amboo / raw - deploy - version - 1 . json ") !!. read Text ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeployment Version Build Result : ĠDeployment Version Build Result DTO ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb amboo Fe ign Client . get Deploy VersionInfo ( URI (" http :// localhost : 8 7 8 7 / test / deploy / version "), Ġ" Test Token ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Deployment Version Build Result DTO . plan Result Key . key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployment Version Build Result !!. plan Result Key . key ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server . close () ĊĠĠĠ Ġ} Ċ }