@@ -65,3 +65,149 @@ pub fn get_env_var_or_error(
6565 _ => Err ( status_cause_if_missing) ,
6666 }
6767}
68+
69+ #[ cfg( test) ]
70+ mod tests {
71+ use super :: * ;
72+ use temp_env;
73+
74+ #[ test]
75+ fn name_succeeds_when_simple_environment_variable_names ( ) {
76+ assert_eq ! (
77+ TeeSessionEnvironmentVariable :: IexecBulkSliceSize . name( ) ,
78+ "IEXEC_BULK_SLICE_SIZE"
79+ ) ;
80+
81+ assert_eq ! (
82+ TeeSessionEnvironmentVariable :: IexecInputFilesNumber . name( ) ,
83+ "IEXEC_INPUT_FILES_NUMBER"
84+ ) ;
85+ assert_eq ! (
86+ TeeSessionEnvironmentVariable :: IexecPreComputeOut . name( ) ,
87+ "IEXEC_PRE_COMPUTE_OUT"
88+ ) ;
89+ assert_eq ! (
90+ TeeSessionEnvironmentVariable :: IexecTaskId . name( ) ,
91+ "IEXEC_TASK_ID"
92+ ) ;
93+ assert_eq ! (
94+ TeeSessionEnvironmentVariable :: IsDatasetRequired . name( ) ,
95+ "IS_DATASET_REQUIRED"
96+ ) ;
97+ assert_eq ! (
98+ TeeSessionEnvironmentVariable :: SignTeeChallengePrivateKey . name( ) ,
99+ "SIGN_TEE_CHALLENGE_PRIVATE_KEY"
100+ ) ;
101+ assert_eq ! (
102+ TeeSessionEnvironmentVariable :: SignWorkerAddress . name( ) ,
103+ "SIGN_WORKER_ADDRESS"
104+ ) ;
105+ assert_eq ! (
106+ TeeSessionEnvironmentVariable :: WorkerHostEnvVar . name( ) ,
107+ "WORKER_HOST_ENV_VAR"
108+ ) ;
109+ }
110+
111+ #[ test]
112+ fn name_succeeds_when_indexed_environment_variable_names ( ) {
113+ // Test IexecDatasetChecksum
114+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetChecksum ( 0 ) ;
115+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_CHECKSUM" ) ;
116+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetChecksum ( 1 ) ;
117+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_1_CHECKSUM" ) ;
118+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetChecksum ( 10 ) ;
119+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_42_CHECKSUM" ) ;
120+
121+ // Test IexecDatasetFilename
122+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetFilename ( 0 ) ;
123+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_FILENAME" ) ;
124+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetFilename ( 1 ) ;
125+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_1_FILENAME" ) ;
126+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetFilename ( 5 ) ;
127+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_10_FILENAME" ) ;
128+
129+ // Test IexecDatasetKey
130+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetKey ( 0 ) ;
131+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_KEY" ) ;
132+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetKey ( 1 ) ;
133+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_1_KEY" ) ;
134+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetKey ( 20 ) ;
135+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_5_KEY" ) ;
136+
137+ // Test IexecDatasetUrl
138+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetUrl ( 0 ) ;
139+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_URL" ) ;
140+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetUrl ( 1 ) ;
141+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_1_URL" ) ;
142+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetUrl ( 99 ) ;
143+ assert_eq ! ( env_var. name( ) , "IEXEC_DATASET_99_URL" ) ;
144+
145+ // Test IexecInputFileUrlPrefix
146+ let env_var = TeeSessionEnvironmentVariable :: IexecInputFileUrlPrefix ( 0 ) ;
147+ assert_eq ! ( env_var. name( ) , "IEXEC_INPUT_FILE_URL_0" ) ;
148+ let env_var = TeeSessionEnvironmentVariable :: IexecInputFileUrlPrefix ( 1 ) ;
149+ assert_eq ! ( env_var. name( ) , "IEXEC_INPUT_FILE_URL_1" ) ;
150+ let env_var = TeeSessionEnvironmentVariable :: IexecInputFileUrlPrefix ( 123 ) ;
151+ assert_eq ! ( env_var. name( ) , "IEXEC_INPUT_FILE_URL_123" ) ;
152+ }
153+
154+ #[ test]
155+ fn get_env_var_or_error_success ( ) {
156+ let env_var = TeeSessionEnvironmentVariable :: IexecTaskId ;
157+ let status_cause = ReplicateStatusCause :: PreComputeTaskIdMissing ;
158+
159+ temp_env:: with_var ( "IEXEC_TASK_ID" , Some ( "test-task-id-123" ) , || {
160+ let result = get_env_var_or_error ( env_var, status_cause. clone ( ) ) ;
161+ assert ! ( result. is_ok( ) ) ;
162+ assert_eq ! ( result. unwrap( ) , "test-task-id-123" ) ;
163+ } ) ;
164+ }
165+
166+ #[ test]
167+ fn get_env_var_or_error_fails_when_missing_variable ( ) {
168+ let env_var = TeeSessionEnvironmentVariable :: IexecTaskId ;
169+ let status_cause = ReplicateStatusCause :: PreComputeTaskIdMissing ;
170+
171+ temp_env:: with_var_unset ( "IEXEC_TASK_ID" , || {
172+ let result = get_env_var_or_error ( env_var, status_cause. clone ( ) ) ;
173+ assert ! ( result. is_err( ) ) ;
174+ assert_eq ! ( result. unwrap_err( ) , status_cause) ;
175+ } ) ;
176+ }
177+
178+ #[ test]
179+ fn get_env_var_or_error_succeeds_when_empty_variable ( ) {
180+ let env_var = TeeSessionEnvironmentVariable :: IexecTaskId ;
181+ let status_cause = ReplicateStatusCause :: PreComputeTaskIdMissing ;
182+
183+ temp_env:: with_var ( "IEXEC_TASK_ID" , Some ( "" ) , || {
184+ let result = get_env_var_or_error ( env_var, status_cause. clone ( ) ) ;
185+ assert ! ( result. is_err( ) ) ;
186+ assert_eq ! ( result. unwrap_err( ) , status_cause) ;
187+ } ) ;
188+ }
189+
190+ #[ test]
191+ fn get_env_var_or_error_succeeds_when_whitespace_only_variable ( ) {
192+ let env_var = TeeSessionEnvironmentVariable :: IexecTaskId ;
193+ let status_cause = ReplicateStatusCause :: PreComputeTaskIdMissing ;
194+
195+ temp_env:: with_var ( "IEXEC_TASK_ID" , Some ( " " ) , || {
196+ let result = get_env_var_or_error ( env_var, status_cause. clone ( ) ) ;
197+ assert ! ( result. is_ok( ) ) ;
198+ assert_eq ! ( result. unwrap( ) , " " ) ;
199+ } ) ;
200+ }
201+
202+ #[ test]
203+ fn get_env_var_or_error_succeeds_when_indexed_variables ( ) {
204+ let env_var = TeeSessionEnvironmentVariable :: IexecDatasetChecksum ( 1 ) ;
205+ let status_cause = ReplicateStatusCause :: PreComputeDatasetChecksumMissing ;
206+
207+ temp_env:: with_var ( "IEXEC_DATASET_1_CHECKSUM" , Some ( "abc123def456" ) , || {
208+ let result = get_env_var_or_error ( env_var, status_cause. clone ( ) ) ;
209+ assert ! ( result. is_ok( ) ) ;
210+ assert_eq ! ( result. unwrap( ) , "abc123def456" ) ;
211+ } ) ;
212+ }
213+ }
0 commit comments