/* Ċ Ġ* Ġ============ LICENSE _ START ================================================ ======= Ċ Ġ* ĠO NAP Ġ- ĠC DS Ċ Ġ* Ġ================================================================= =============== Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠHu awei ĠTechnologies ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ================================================================= =============== Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ġ============ LICENSE _ END ================================================ ========= Ċ Ġ*/ Ċ Ċ package Ġorg . cc sdk . cds . blueprint processor . dma ap Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . on ap . cc sdk . cds . blueprint spro cess or . core . Blue Print Properties Ċ import Ġorg . on ap . cc sdk . cds . blueprint spro cess or . core . Blueprint Property Configuration Ċ import Ġorg . on ap . cc sdk . cds . blueprint spro cess or . dma ap . Blue Print D ma ap Lib Configuration Ċ import Ġorg . on ap . cc sdk . cds . blueprint spro cess or . dma ap . Blue Print D ma ap Lib Property Service Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . autoconfigure . Enable Auto Configuration Ċ import Ġorg . springframework . boot . autoconfigure . jdbc . DataSource Auto Configuration Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . security . config . web . server . Server Http Security Ċ import Ġorg . springframework . security . web . server . Security Web FilterChain Ċ import Ġorg . springframework . test . context . Context Configuration Ċ import Ġorg . springframework . test . context . Test Property Source Ċ import Ġorg . springframework . test . context . junit 4 . Spring Runner Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . PostMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ Ċ /** Ċ Ġ* ĠUnit Ġtest Ġcases Ġfor ĠD Ma ap Ġpublisher Ġcode . Ċ Ġ*/ Ċ @ RunWith ( Spring Runner :: class ) Ċ @ Enable Auto Configuration ( exclude Ġ= Ġ[ DataSource Auto Configuration :: class ]) Ċ @ SpringBootTest ( web Environment Ġ= ĠSpring Boot Test . Web Environment . DEFINED _ PORT ) Ċ @ Context Configuration ( classes Ġ= Ġ[ Blue Print D ma ap Lib Configuration :: class , ĠTest Controller :: class , ĊĠĠĠ ĠSecurity Configuration :: class , ĊĠĠĠ ĠBlueprint Property Configuration :: class , ĠBlue Print Properties :: class ]) Ċ @ Test Property Source ( properties Ġ= Ġ[" server . port = 9 1 1 1 ", ĊĠĠĠ Ġ" blueprint spro cess or . dma ap client . aa i . topic = cds _ aa i ", ĊĠĠĠ Ġ" blueprint spro cess or . dma ap client . aa i . type = HTTP NO AUTH ", ĊĠĠĠ Ġ" blueprint spro cess or . dma ap client . aa i . host = 1 2 7 . 0 . 0 . 1 : 9 1 1 1 ", ĊĠĠĠ Ġ" blueprint spro cess or . dma ap client . multi . topic = cds _ multi 1 , cds _ multi 2 ", ĊĠĠĠ Ġ" blueprint spro cess or . dma ap client . multi . type = HTTP NO AUTH ", ĊĠĠĠ Ġ" blueprint spro cess or . dma ap client . multi . host = 1 2 7 . 0 . 0 . 1 : 9 1 1 1 "]) Ċ class ĠTest D ma ap Event Publisher Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġdma ap Service Ġ: ĠBlue Print D ma ap Lib Property Service ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Tests Ġthe Ġevent Ġproperties Ġbeing Ġset Ġproperly Ġand Ġsent Ġas Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdma ap Client Ġ= Ġdma ap Service . blueprint D ma ap Client Service (" aa i ") ĊĊĠĠĠĠĠĠĠ Ġval Ġstr List Ġ= ĠlistOf (""" { Ġ" a " Ġ: Ġ" hello " Ġ} """) ĊĠĠĠĠĠĠĠ Ġdma ap Client . sendMessage ( str List ) ĊĠĠĠĠĠĠĠ Ġval Ġmsgs Ġ= Ġdma ap Client . close ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġmsgs !!. size ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic 1 Ġ= Ġmsgs [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġtopic 1 . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Tests Ġthe Ġevent Ġproperties Ġbeing Ġset Ġproperly Ġand Ġsent Ġas Ġrequest Ġwith Ġsingle Ġmessage `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdma ap Client Ġ= Ġdma ap Service . blueprint D ma ap Client Service (" aa i ") ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġ""" { Ġ" a " Ġ: Ġ" hello " Ġ} """ ĊĠĠĠĠĠĠĠ Ġdma ap Client . sendMessage ( str ) ĊĠĠĠĠĠĠĠ Ġval Ġmsgs Ġ= Ġdma ap Client . close ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġmsgs !!. size ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic 1 Ġ= Ġmsgs [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġtopic 1 . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Tests Ġthe Ġevent Ġproperties Ġwith Ġmultiple Ġtopics `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdma ap Client Ġ= Ġdma ap Service . blueprint D ma ap Client Service (" multi ") ĊĊĠĠĠĠĠĠĠ Ġval Ġstr List Ġ= ĠlistOf (""" { Ġ" a " Ġ: Ġ" hello " Ġ} """) ĊĠĠĠĠĠĠĠ Ġdma ap Client . sendMessage ( str List ) ĊĠĠĠĠĠĠĠ Ġval Ġmsgs Ġ= Ġdma ap Client . close ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġmsgs !!. size ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic 1 Ġ= Ġmsgs [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġtopic 1 . size ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic 2 Ġ= Ġmsgs [ 1 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġtopic 2 . size ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Tests Ġthe Ġevent Ġproperties Ġwith Ġmultiple Ġtopics Ġwith ĠJSON Ġnode Ġas Ġinput `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġ""" { ĊĠĠĠ Ġ" topic " Ġ: Ġ" cds _ json 1 , cds _ json 2 ", ĊĠĠĠ Ġ" type " Ġ: Ġ" HTTP NO AUTH ", ĊĠĠĠ Ġ" host " Ġ: Ġ" 1 2 7 . 0 . 0 . 1 : 9 1 1 1 " Ċ } """ ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġmapper . read Tree ( json String ) ĊĠĠĠĠĠĠĠ Ġval Ġdma ap Client Ġ= Ġdma ap Service . blueprint D ma ap Client Service ( node ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstr List Ġ= ĠlistOf (""" { Ġ" a " Ġ: Ġ" hello " Ġ} """) ĊĠĠĠĠĠĠĠ Ġdma ap Client . sendMessage ( str List ) ĊĠĠĠĠĠĠĠ Ġval Ġmsgs Ġ= Ġdma ap Client . close ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġmsgs !!. size ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic 1 Ġ= Ġmsgs [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġtopic 1 . size ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic 2 Ġ= Ġmsgs [ 1 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġtopic 2 . size ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Tests Ġthe Ġevent Ġproperties Ġwith Ġmultiple Ġmessages `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdma ap Client Ġ= Ġdma ap Service . blueprint D ma ap Client Service (" aa i ") ĊĊĠĠĠĠĠĠĠ Ġval Ġstr List Ġ= ĠlistOf (""" { Ġ" a " Ġ: Ġ" hello " Ġ} """, Ġ""" { Ġ" a " Ġ: Ġ" second " Ġ} """) ĊĠĠĠĠĠĠĠ Ġdma ap Client . sendMessage ( str List ) ĊĠĠĠĠĠĠĠ Ġval Ġmsgs Ġ= Ġdma ap Client . close ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġmsgs !!. size ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic 1 Ġ= Ġmsgs [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġtopic 1 . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Tests Ġthe ĠDMA AP Ġclient Ġproperties Ġgenerated Ġwith Ġthe Ġcomplete Ġprefix `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= Ġdma ap Service . dma ap Client Properties ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" blueprint spro cess or . dma ap client . aa i ") ĊĠĠĠĠĠĠĠ ĠassertNotNull ( properties , Ġ" failed Ġto Ġcreate Ġproperty Ġbean ") ĊĠĠĠĠĠĠĠ ĠassertNotNull ( properties . host , Ġ" failed Ġto Ġget Ġurl Ġproperty Ġin Ġproperty Ġbean ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Tests Ġthe Ġblueprint ĠDMA AP Ġclient Ġservice Ġwith Ġonly Ġselector Ġprefix `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġblueprint D ma ap Client Service Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdma ap Service . blueprint D ma ap Client Service (" aa i ") ĊĠĠĠĠĠĠĠ ĠassertNotNull ( blueprint D ma ap Client Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" failed Ġto Ġcreate Ġblueprint D ma ap Client Service ") ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠRest Ġcontroller Ġfor Ġtesting Ġthe Ġclient Ġrequest Ġthat Ġis Ġsent . Ċ Ġ*/ Ċ @ RestController Ċ @ RequestMapping ( path Ġ= Ġ["/ events "]) Ċ open Ġclass ĠTest Controller Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAccept s Ġrequest Ġfor Ġa Ġtopic Ġand Ġsends Ġa Ġmessage Ġas Ġresponse . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( path Ġ= Ġ[" /{ topic }" ]) ĊĠĠĠ Ġfun Ġpost Topic (@ PathVariable ( value Ġ= Ġ" topic ") Ġtopic Ġ: ĠString ): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġ""" { Ġ" message " Ġ: Ġ" The Ġmessage Ġis Ġpublished Ġinto Ġ$ topic Ġtopic " Ġ} """ ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( msg , ĠHttpStatus . OK ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠRequired Ġsince Ġ' spring - security ' Ġis Ġon Ġthe Ġclasspath Ċ Ġ*/ Ċ open Ġclass ĠSecurity Configuration Ġ{ ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġopen Ġfun Ġspring Security FilterChain ( http : ĠServer Http Security ): ĠSecurity Web FilterChain Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp . csrf (). disable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. authorize Exchange (). any Exchange (). permit All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and (). build () Ċ }