/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ċ Ġ* Ċ Ġ* Ġ Ġhttps :// 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 . Ċ Ġ*/ Ċ Ċ package Ġjet brains . build Server . notification . slack Notifier . health Report Ċ Ċ import Ġjet brains . build Server . notification . Feature Provider Notification Rules Holder Ċ import Ġjet brains . build Server . notification . slack Notifier . And Ċ import Ġjet brains . build Server . notification . slack Notifier . Slack Properties Ċ import Ġjet brains . build Server . notification . slack Notifier . slack . Ag gregated Slack Api Ċ import Ġjet brains . build Server . server Side . impl . Notifications Build Feature Ċ import Ġjet brains . build Server . util . Test For Ċ import Ġorg . testng . annotations . Test Ċ Ċ class ĠSlack Build Feature Health Report Test Ġ: ĠBase Slack Health Report Test < Slack Build Feature Health Report >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Report (): ĠSlack Build Feature Health Report Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSlack Build Feature Health Report ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy ConnectionManager , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Slack Api Factory , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAg gregated Slack Api ( my Slack Api Factory ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġshould Ġreport Ġmissing Ġconnection `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġtype Ġis Ġin Ġscope `() ĠAnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġfeature Ġis Ġmissing Ġconnection `() ĊĠĠĠĠĠĠĠ Ġ` when Ġhealth Ġis Ġreported `() ĊĠĠĠĠĠĠĠ Ġ` then Ġreport Ġshould Ġcontain Ġerror Ġabout Ġmissing Ġconnection `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġshould Ġreport Ġinvalid Ġconnection `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġtype Ġis Ġin Ġscope `() ĠAnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġfeature Ġhas Ġinvalid Ġconnection `() ĊĠĠĠĠĠĠĠ Ġ` when Ġhealth Ġis Ġreported `() ĊĠĠĠĠĠĠĠ Ġ` then Ġreport Ġshould Ġcontain Ġerror Ġabout Ġinvalid Ġconnection `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġshould Ġreport Ġinvalid Ġchannel `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġtype Ġis Ġin Ġscope `() ĠAnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġfeature Ġhas Ġinvalid Ġchannel `() ĊĠĠĠĠĠĠĠ Ġ` when Ġhealth Ġis Ġreported `() ĊĠĠĠĠĠĠĠ Ġ` then Ġreport Ġshould Ġcontain Ġerror Ġabout Ġinvalid Ġchannel `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġshould Ġreport Ġchannel Ġthat Ġbot Ġis Ġnot Ġadded Ġto `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġtype Ġis Ġin Ġscope `() ĠAnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġfeature Ġhas Ġchannel Ġthat Ġbot Ġis Ġnot Ġadded Ġto `() ĊĠĠĠĠĠĠĠ Ġ` when Ġhealth Ġis Ġreported `() ĊĠĠĠĠĠĠĠ Ġ` then Ġreport Ġshould Ġcontain Ġerror Ġabout Ġnot Ġbeing Ġadded Ġto Ġchannel `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġshould Ġnot Ġreport Ġif Ġbuild Ġfeature Ġis Ġconfigured Ġcorrectly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġtype Ġis Ġin Ġscope `() ĠAnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġfeatures Ġis Ġconfigured Ġcorrectly `() ĊĠĠĠĠĠĠĠ Ġ` when Ġhealth Ġis Ġreported `() ĊĠĠĠĠĠĠĠ Ġ` then Ġreport Ġshould Ġcontain Ġno Ġerrors `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Test For ( issues Ġ= Ġ[" TW - 6 7 0 1 5 "]) ĊĠĠĠ Ġfun Ġ` test Ġshould Ġnot Ġreport Ġerror Ġif Ġthere Ġare Ġa Ġlot Ġof Ġmembers Ġin Ġchannel `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġtype Ġis Ġin Ġscope `() ĠAnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġfeature Ġhas Ġchannel Ġwith Ġa Ġlot Ġof Ġusers `() ĊĠĠĠĠĠĠĠ Ġ` when Ġhealth Ġis Ġreported `() ĊĠĠĠĠĠĠĠ Ġ` then Ġreport Ġshould Ġcontain Ġno Ġerrors `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Test For ( issues Ġ= Ġ[" TW - 6 6 2 4 2 "]) ĊĠĠĠ Ġfun Ġ` test Ġshould Ġnot Ġreport Ġerror Ġif Ġreceiver Ġis Ġparameter ized `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġtype Ġis Ġin Ġscope `() ĠAnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` given Ġbuild Ġfeature Ġhas Ġparameter ized Ġreceiver `() ĊĠĠĠĠĠĠĠ Ġ` when Ġhealth Ġis Ġreported `() ĊĠĠĠĠĠĠĠ Ġ` then Ġreport Ġshould Ġcontain Ġno Ġerrors `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` given Ġbuild Ġfeature Ġis Ġmissing Ġconnection `() Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Build Feature () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` given Ġbuild Ġfeature Ġhas Ġinvalid Ġconnection `() Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Build Feature ( map Of ( Slack Properties . connection Property . key Ġto Ġ" invalid _ connection ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` given Ġbuild Ġfeature Ġhas Ġinvalid Ġchannel `() Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Build Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Properties . connection Property . key Ġto Ġmy Connection . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Properties . channel Property . key Ġto Ġ"# invalid _ channel " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` given Ġbuild Ġfeature Ġhas Ġchannel Ġthat Ġbot Ġis Ġnot Ġadded Ġto `() Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Build Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Properties . connection Property . key Ġto Ġmy Connection . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Properties . channel Property . key Ġto Ġ"# another Channel " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` given Ġbuild Ġfeature Ġhas Ġchannel Ġwith Ġa Ġlot Ġof Ġusers `() Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Build Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Properties . connection Property . key Ġto Ġmy Connection . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Properties . channel Property . key Ġto Ġ"# big _ conversation " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` given Ġbuild Ġfeatures Ġis Ġconfigured Ġcorrectly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Build Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Properties . connection Property . key Ġto Ġmy Connection . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlack Properties . channel Property . key Ġto Ġ"# test _ channel " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Build Feature ( parameters : ĠMap < String , ĠString > Ġ= Ġempty Map ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Build Type . add Build Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications Build Feature . FEATURE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( Feature Provider Notification Rules Holder . NOT IFIER Ġto Ġmy Descriptor . getType ()) Ġ+ Ġparameters ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` then Ġreport Ġshould Ġcontain Ġerror Ġabout Ġmissing Ġconnection `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Result Contains Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . category Ġ== ĠSlack Build Feature Health Report . invalid Build Feature Category Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . additional Data [" reason "] Ġas ĠString ). contains (" connection Ġis Ġnot Ġselected ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` then Ġreport Ġshould Ġcontain Ġerror Ġabout Ġinvalid Ġconnection `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Result Contains Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . category Ġ== ĠSlack Build Feature Health Report . invalid Build Feature Category Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . additional Data [" reason "] Ġas ĠString ). contains (" connection Ġwith Ġid ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` then Ġreport Ġshould Ġcontain Ġerror Ġabout Ġinvalid Ġchannel `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Result Contains Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . category Ġ== ĠSlack Build Feature Health Report . invalid Build Feature Category Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . additional Data [" reason "] Ġas ĠString ). contains (" find Ġchannel Ġ# invalid _ channel ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` then Ġreport Ġshould Ġcontain Ġerror Ġabout Ġnot Ġbeing Ġadded Ġto Ġchannel `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Result Contains Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . category Ġ== ĠSlack Build Feature Health Report . bot IsNot Configured Category Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . additional Data [" reason "] Ġas ĠString ). contains (" should Ġbe Ġadded Ġto Ġthe Ġchannel ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }