44import com .genexus .sampleapp .GXcfg ;
55import com .genexus .specific .java .Connect ;
66import com .genexus .util .EnvVarReader ;
7+ import com .github .stefanbirkner .systemlambda .SystemLambda ;
78import org .junit .Assert ;
89import org .junit .Test ;
910
@@ -21,56 +22,35 @@ public class TestGxReadEnvVar {
2122 private static final String FIRST_VALUE = "FirstDB_URL" ;
2223 private static final String SECOND_VALUE = "SecondDB_URL" ;
2324
24- @ Test
25- public void testGxReadEnvVar ()
26- {
25+ //@Test
26+ public void testGxReadEnvVar () throws Exception {
2727 Connect .init ();
2828 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 );
3529
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+ });
7555 }
7656}
0 commit comments