@@ -54,14 +54,36 @@ describe("E2E reusable workflow contract", () => {
5454
5555 expect ( reusableJobs . length ) . toBeGreaterThan ( 20 ) ;
5656 for ( const [ name , job ] of reusableJobs ) {
57+ const expectsLiveMessaging = name === "messaging-providers-e2e" ;
5758 const expectedSecrets =
58- name === "messaging-providers-e2e"
59- ? { ...defaultSecrets , ...messagingLiveSecrets }
60- : defaultSecrets ;
59+ expectsLiveMessaging ? { ...defaultSecrets , ...messagingLiveSecrets } : defaultSecrets ;
6160 expect ( job . secrets , name ) . toEqual ( expectedSecrets ) ;
61+ expect ( job . with ?. messaging_live_secrets ?? false , name ) . toBe ( expectsLiveMessaging ) ;
6262 }
6363 } ) ;
6464
65+ it ( "requires an explicit opt-in before exposing live messaging secrets to scripts" , ( ) => {
66+ const callInputs =
67+ runnerWorkflow . on ?. workflow_call ?. inputs ??
68+ runnerWorkflow . true ?. workflow_call ?. inputs ??
69+ { } ;
70+ const runStep = runnerWorkflow . jobs . run . steps . find ( ( step ) => step . name === "Run E2E script" ) ;
71+
72+ expect ( callInputs . messaging_live_secrets ?. default ) . toBe ( false ) ;
73+ expect ( runStep ?. env ?. TELEGRAM_BOT_TOKEN_REAL ) . toBe (
74+ "${{ inputs.messaging_live_secrets && secrets.TELEGRAM_BOT_TOKEN_REAL || '' }}" ,
75+ ) ;
76+ expect ( runStep ?. env ?. DISCORD_BOT_TOKEN_REAL ) . toBe (
77+ "${{ inputs.messaging_live_secrets && secrets.DISCORD_BOT_TOKEN_REAL || '' }}" ,
78+ ) ;
79+ expect ( runStep ?. env ?. SLACK_BOT_TOKEN_REAL ) . toBe (
80+ "${{ inputs.messaging_live_secrets && secrets.SLACK_BOT_TOKEN_REAL || '' }}" ,
81+ ) ;
82+ expect ( runStep ?. env ?. SLACK_APP_TOKEN_REAL ) . toBe (
83+ "${{ inputs.messaging_live_secrets && secrets.SLACK_APP_TOKEN_REAL || '' }}" ,
84+ ) ;
85+ } ) ;
86+
6587 it ( "authenticates Docker Hub pulls without exposing credentials to target-ref dispatches" , ( ) => {
6688 const authStep = runnerWorkflow . jobs . run . steps . find (
6789 ( step ) => step . name === "Authenticate to Docker Hub" ,
0 commit comments