4
4
import com .genexus .sampleapp .GXcfg ;
5
5
import com .genexus .specific .java .Connect ;
6
6
import com .genexus .util .EnvVarReader ;
7
+ import com .github .stefanbirkner .systemlambda .SystemLambda ;
7
8
import org .junit .Assert ;
8
9
import org .junit .Test ;
9
10
@@ -22,55 +23,34 @@ public class TestGxReadEnvVar {
22
23
private static final String SECOND_VALUE = "SecondDB_URL" ;
23
24
24
25
@ Test
25
- public void testGxReadEnvVar ()
26
- {
26
+ public void testGxReadEnvVar () throws Exception {
27
27
Connect .init ();
28
28
ModelContext modelContext = ModelContext .getModelContext (GXcfg .class );
29
- try {
30
- Map <String , String > newenv = new HashMap <>();
31
- newenv .put (FIRST_ENV_VAR , FIRST_VALUE );
32
- setEnvVar (newenv );
33
- String envVarValue = EnvVarReader .getEnvironmentVar (GX_DATASTORE , GX_PROP , null );
34
- Assert .assertEquals (FIRST_VALUE , envVarValue );
35
29
36
- newenv .put (SECOND_ENV_VAR , SECOND_VALUE );
37
- setEnvVar (newenv );
38
- envVarValue = EnvVarReader .getEnvironmentVar (GX_DATASTORE , GX_PROP , null );
39
- Assert .assertEquals (SECOND_VALUE , envVarValue );
40
- newenv .put (FIRST_ENV_VAR , null );
41
- setEnvVar (newenv );
42
- newenv .put (SECOND_ENV_VAR , null );
43
- setEnvVar (newenv );
44
- } catch (Exception e ) {
45
- e .printStackTrace ();
46
- }
47
- }
48
-
49
- private void setEnvVar (Map <String , String > newenv ) throws Exception {
50
- try {
51
- Class <?> processEnvironmentClass = Class .forName ("java.lang.ProcessEnvironment" );
52
- Field theEnvironmentField = processEnvironmentClass .getDeclaredField ("theEnvironment" );
53
- theEnvironmentField .setAccessible (true );
54
- Map <String , String > env = (Map <String , String >) theEnvironmentField .get (null );
55
- env .putAll (newenv );
56
- Field theCaseInsensitiveEnvironmentField = processEnvironmentClass .getDeclaredField ("theCaseInsensitiveEnvironment" );
57
- theCaseInsensitiveEnvironmentField .setAccessible (true );
58
- Map <String , String > cienv = (Map <String , String >) theCaseInsensitiveEnvironmentField .get (null );
59
- cienv .putAll (newenv );
60
- } catch (NoSuchFieldException e )
61
- {
62
- Class [] classes = Collections .class .getDeclaredClasses ();
63
- Map <String , String > env = System .getenv ();
64
- for (Class cl : classes ) {
65
- if ("java.util.Collections$UnmodifiableMap" .equals (cl .getName ())) {
66
- Field field = cl .getDeclaredField ("m" );
67
- field .setAccessible (true );
68
- Object obj = field .get (env );
69
- Map <String , String > map = (Map <String , String >) obj ;
70
- map .clear ();
71
- map .putAll (newenv );
72
- }
73
- }
74
- }
30
+ SystemLambda .withEnvironmentVariable (FIRST_ENV_VAR , FIRST_VALUE )
31
+ .execute (() -> {
32
+ String envVarValue = EnvVarReader .getEnvironmentVar (GX_DATASTORE , GX_PROP , null );
33
+ Assert .assertEquals (FIRST_VALUE , envVarValue );
34
+ });
35
+
36
+ SystemLambda .withEnvironmentVariable (SECOND_ENV_VAR , SECOND_VALUE )
37
+ .execute (() -> {
38
+ String envVarValue = EnvVarReader .getEnvironmentVar (GX_DATASTORE , GX_PROP , null );
39
+ Assert .assertEquals (SECOND_VALUE , envVarValue );
40
+ });
41
+
42
+ SystemLambda .withEnvironmentVariable (FIRST_ENV_VAR , FIRST_VALUE )
43
+ .and (SECOND_ENV_VAR , SECOND_VALUE )
44
+ .execute (() -> {
45
+ String envVarValue1 = EnvVarReader .getEnvironmentVar (GX_DATASTORE , GX_PROP , null );
46
+ Assert .assertEquals (SECOND_VALUE , envVarValue1 ); // Prioridad según tu EnvVarReader
47
+ });
48
+
49
+ SystemLambda .withEnvironmentVariable (FIRST_ENV_VAR , null )
50
+ .and (SECOND_ENV_VAR , null )
51
+ .execute (() -> {
52
+ String envVarValue = EnvVarReader .getEnvironmentVar (GX_DATASTORE , GX_PROP , null );
53
+ Assert .assertNull (envVarValue );
54
+ });
75
55
}
76
56
}
0 commit comments