@@ -17,6 +17,7 @@ package session
17
17
import (
18
18
"bytes"
19
19
"fmt"
20
+ "os"
20
21
"sync"
21
22
"testing"
22
23
"time"
@@ -61,6 +62,47 @@ func TestValidateInputAndStartSession(t *testing.T) {
61
62
assert .Contains (t , buffer .String (), "Cannot perform start session: Some error" )
62
63
}
63
64
65
+ func TestValidateInputAndStartSessionWithEnvVariableParameter (t * testing.T ) {
66
+ var buffer bytes.Buffer
67
+ sessionResponse := "{\" SessionId\" : \" user-012345\" , \" TokenValue\" : \" Session-Token\" , \" StreamUrl\" : \" wss://ssmmessages.us-east-1.amazonaws.com/v1/data-channel/user-012345?role=publish_subscribe\" }"
68
+ os .Setenv ("AWS_SSM_START_SESSION_RESPONSE" , sessionResponse )
69
+ args := []string {"session-manager-plugin" ,
70
+ "AWS_SSM_START_SESSION_RESPONSE" ,
71
+ "us-east-1" , "StartSession" , "" , "{\" Target\" : \" i-0123abc\" }" , "https://ssm.us-east-1.amazonaws.com" }
72
+ parameterPassed := false
73
+ startSession = func (session * Session , log log.T ) error {
74
+ if session .TokenValue == "Session-Token" && session .SessionId == "user-012345" {
75
+ parameterPassed = true
76
+ }
77
+ return nil
78
+ }
79
+
80
+ ValidateInputAndStartSession (args , & buffer )
81
+ var _ , envVariableExist = os .LookupEnv ("AWS_SSM_START_SESSION_RESPONSE" )
82
+ assert .False (t , envVariableExist )
83
+ assert .True (t , parameterPassed )
84
+ }
85
+
86
+ func TestValidateInputAndStartSessionWithWrongEnvVariableName (t * testing.T ) {
87
+ var buffer bytes.Buffer
88
+ sessionResponse := "{\" SessionId\" : \" user-012345\" , \" TokenValue\" : \" Session-Token\" , \" StreamUrl\" : \" wss://ssmmessages.us-east-1.amazonaws.com/v1/data-channel/user-012345?role=publish_subscribe\" }"
89
+ os .Setenv ("WRONG_ENV_NAME" , sessionResponse )
90
+ args := []string {"session-manager-plugin" ,
91
+ "WRONG_ENV_NAME" ,
92
+ "us-east-1" , "StartSession" , "" , "{\" Target\" : \" i-0123abc\" }" , "https://ssm.us-east-1.amazonaws.com" }
93
+ startSessionInvoked := false
94
+ startSession = func (session * Session , log log.T ) error {
95
+ startSessionInvoked = true
96
+ return nil
97
+ }
98
+
99
+ ValidateInputAndStartSession (args , & buffer )
100
+ var _ , envVariableExist = os .LookupEnv ("WRONG_ENV_NAME" )
101
+ assert .Contains (t , buffer .String (), "Cannot perform start session: invalid character 'W'" )
102
+ assert .True (t , envVariableExist )
103
+ assert .False (t , startSessionInvoked )
104
+ }
105
+
64
106
func TestExecute (t * testing.T ) {
65
107
sessionMock := & Session {}
66
108
sessionMock .DataChannel = mockDataChannel
0 commit comments