From b2f48128b8886daa3cbb25c5d930a9c5a903db60 Mon Sep 17 00:00:00 2001 From: Itay Paz Date: Sat, 25 Jan 2025 22:12:37 +0200 Subject: [PATCH 1/5] add json parse test --- .../com/checkmarx/ast/JsonParserTest.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/test/java/com/checkmarx/ast/JsonParserTest.java diff --git a/src/test/java/com/checkmarx/ast/JsonParserTest.java b/src/test/java/com/checkmarx/ast/JsonParserTest.java new file mode 100644 index 00000000..65bc24d0 --- /dev/null +++ b/src/test/java/com/checkmarx/ast/JsonParserTest.java @@ -0,0 +1,68 @@ +package com.checkmarx.ast; + +import com.checkmarx.ast.utils.JsonParser; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.type.TypeFactory; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +class JsonParserTest extends BaseTest { + + @Test + void testValidJsonParsing_WhenValidJsonProvided_ReturnsParsedObject() { + // Arrange + String validJson = "{\"name\": \"test\", \"value\": 123}"; + TypeFactory typeFactory = TypeFactory.defaultInstance(); + JavaType type = typeFactory.constructMapType(Map.class, String.class, Object.class); + + // Act + Map result = JsonParser.parse(validJson, type); + + // Assert + Assertions.assertNotNull(result, "Result should not be null"); + Assertions.assertEquals("test", result.get("name"), "Name value should match"); + Assertions.assertEquals(123, result.get("value"), "Numeric value should match"); + } + + @Test + void testNullAndEmptyInput_WhenInvalidInputProvided_ReturnsNull() { + // Arrange + TypeFactory typeFactory = TypeFactory.defaultInstance(); + JavaType type = typeFactory.constructMapType(Map.class, String.class, String.class); + + // Act & Assert + Assertions.assertNull(JsonParser.parse(null, type), "Null input should return null"); + Assertions.assertNull(JsonParser.parse("", type), "Empty string should return null"); + Assertions.assertNull(JsonParser.parse(" ", type), "Whitespace should return null"); + } + + @Test + void testInvalidJson_WhenMalformedJsonProvided_ReturnsNull() { + // Arrange + TypeFactory typeFactory = TypeFactory.defaultInstance(); + JavaType type = typeFactory.constructMapType(Map.class, String.class, String.class); + + // Act & Assert + Assertions.assertNull(JsonParser.parse("{invalid:json}", type), "Invalid JSON should return null"); + Assertions.assertNull(JsonParser.parse("{\"key\":\"value\"", type), "Incomplete JSON should return null"); + } + + @Test + void testListParsing_WhenValidJsonArrayProvided_ReturnsParsedList() { + // Arrange + String jsonList = "[\"item1\", \"item2\", \"item3\"]"; + TypeFactory typeFactory = TypeFactory.defaultInstance(); + JavaType type = typeFactory.constructCollectionType(List.class, String.class); + + // Act + List result = JsonParser.parse(jsonList, type); + + // Assert + Assertions.assertNotNull(result, "Result should not be null"); + Assertions.assertEquals(Arrays.asList("item1", "item2", "item3"), result, "List contents should match"); + } +} From e4ec7791574d5521944fed71ba3afffe83d09ee5 Mon Sep 17 00:00:00 2001 From: Itay Paz Date: Sat, 25 Jan 2025 23:12:44 +0200 Subject: [PATCH 2/5] add test --- .../java/com/checkmarx/ast/CxConfigTest.java | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/test/java/com/checkmarx/ast/CxConfigTest.java diff --git a/src/test/java/com/checkmarx/ast/CxConfigTest.java b/src/test/java/com/checkmarx/ast/CxConfigTest.java new file mode 100644 index 00000000..9527c8b8 --- /dev/null +++ b/src/test/java/com/checkmarx/ast/CxConfigTest.java @@ -0,0 +1,86 @@ +package com.checkmarx.ast; + +import com.checkmarx.ast.wrapper.CxConfig; +import com.checkmarx.ast.wrapper.CxConstants; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.List; + +class CxConfigTest extends BaseTest { + + @Test + void testConfig_WhenUsingApiKey_GeneratesCorrectArguments() { + // Arrange + CxConfig config = CxConfig.builder() + .apiKey("test-api-key") + .tenant("test-tenant") + .baseUri("https://test.checkmarx.com") + .build(); + + // Act + List arguments = config.toArguments(); + + // Assert + Assertions.assertTrue(arguments.contains(CxConstants.API_KEY), "Should contain API_KEY argument"); + Assertions.assertTrue(arguments.contains("test-api-key"), "Should contain API key value"); + Assertions.assertTrue(arguments.contains(CxConstants.TENANT), "Should contain TENANT argument"); + Assertions.assertTrue(arguments.contains("test-tenant"), "Should contain tenant value"); + Assertions.assertTrue(arguments.contains(CxConstants.BASE_URI), "Should contain BASE_URI argument"); + Assertions.assertTrue(arguments.contains("https://test.checkmarx.com"), "Should contain base URI value"); + } + + @Test + void testConfig_WhenUsingClientCredentials_GeneratesCorrectArguments() { + // Arrange + CxConfig config = CxConfig.builder() + .clientId("test-client") + .clientSecret("test-secret") + .tenant("test-tenant") + .build(); + + // Act + List arguments = config.toArguments(); + + // Assert + Assertions.assertTrue(arguments.contains(CxConstants.CLIENT_ID), "Should contain CLIENT_ID argument"); + Assertions.assertTrue(arguments.contains("test-client"), "Should contain client ID value"); + Assertions.assertTrue(arguments.contains(CxConstants.CLIENT_SECRET), "Should contain CLIENT_SECRET argument"); + Assertions.assertTrue(arguments.contains("test-secret"), "Should contain client secret value"); + Assertions.assertTrue(arguments.contains(CxConstants.TENANT), "Should contain TENANT argument"); + Assertions.assertTrue(arguments.contains("test-tenant"), "Should contain tenant value"); + } + + @Test + void testConfig_WhenSettingAdditionalParameters_ParsesCorrectly() { + // Arrange + CxConfig config = CxConfig.builder().build(); + String params = "--param1 value1 --param2 \"value 2\""; + + // Act + config.setAdditionalParameters(params); + List additionalParams = config.getAdditionalParameters(); + + // Assert + List expected = Arrays.asList("--param1", "value1", "--param2", "value 2"); + Assertions.assertEquals(expected, additionalParams, "Additional parameters should be parsed correctly"); + } + + @Test + void testConfig_WhenNoAuthProvided_GeneratesMinimalArguments() { + // Arrange + CxConfig config = CxConfig.builder() + .tenant("test-tenant") + .build(); + + // Act + List arguments = config.toArguments(); + + // Assert + Assertions.assertTrue(arguments.contains(CxConstants.TENANT), "Should contain TENANT argument"); + Assertions.assertTrue(arguments.contains("test-tenant"), "Should contain tenant value"); + Assertions.assertFalse(arguments.contains(CxConstants.API_KEY), "Should not contain API_KEY argument"); + Assertions.assertFalse(arguments.contains(CxConstants.CLIENT_ID), "Should not contain CLIENT_ID argument"); + } +} From 6f61bee4230a08be429c1e6bd7ff9b9d417d9529 Mon Sep 17 00:00:00 2001 From: Itay Paz Date: Sat, 25 Jan 2025 23:13:53 +0200 Subject: [PATCH 3/5] remove last test --- .../com/checkmarx/ast/JsonParserTest.java | 68 ------------------- 1 file changed, 68 deletions(-) delete mode 100644 src/test/java/com/checkmarx/ast/JsonParserTest.java diff --git a/src/test/java/com/checkmarx/ast/JsonParserTest.java b/src/test/java/com/checkmarx/ast/JsonParserTest.java deleted file mode 100644 index 65bc24d0..00000000 --- a/src/test/java/com/checkmarx/ast/JsonParserTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.checkmarx.ast; - -import com.checkmarx.ast.utils.JsonParser; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.type.TypeFactory; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -class JsonParserTest extends BaseTest { - - @Test - void testValidJsonParsing_WhenValidJsonProvided_ReturnsParsedObject() { - // Arrange - String validJson = "{\"name\": \"test\", \"value\": 123}"; - TypeFactory typeFactory = TypeFactory.defaultInstance(); - JavaType type = typeFactory.constructMapType(Map.class, String.class, Object.class); - - // Act - Map result = JsonParser.parse(validJson, type); - - // Assert - Assertions.assertNotNull(result, "Result should not be null"); - Assertions.assertEquals("test", result.get("name"), "Name value should match"); - Assertions.assertEquals(123, result.get("value"), "Numeric value should match"); - } - - @Test - void testNullAndEmptyInput_WhenInvalidInputProvided_ReturnsNull() { - // Arrange - TypeFactory typeFactory = TypeFactory.defaultInstance(); - JavaType type = typeFactory.constructMapType(Map.class, String.class, String.class); - - // Act & Assert - Assertions.assertNull(JsonParser.parse(null, type), "Null input should return null"); - Assertions.assertNull(JsonParser.parse("", type), "Empty string should return null"); - Assertions.assertNull(JsonParser.parse(" ", type), "Whitespace should return null"); - } - - @Test - void testInvalidJson_WhenMalformedJsonProvided_ReturnsNull() { - // Arrange - TypeFactory typeFactory = TypeFactory.defaultInstance(); - JavaType type = typeFactory.constructMapType(Map.class, String.class, String.class); - - // Act & Assert - Assertions.assertNull(JsonParser.parse("{invalid:json}", type), "Invalid JSON should return null"); - Assertions.assertNull(JsonParser.parse("{\"key\":\"value\"", type), "Incomplete JSON should return null"); - } - - @Test - void testListParsing_WhenValidJsonArrayProvided_ReturnsParsedList() { - // Arrange - String jsonList = "[\"item1\", \"item2\", \"item3\"]"; - TypeFactory typeFactory = TypeFactory.defaultInstance(); - JavaType type = typeFactory.constructCollectionType(List.class, String.class); - - // Act - List result = JsonParser.parse(jsonList, type); - - // Assert - Assertions.assertNotNull(result, "Result should not be null"); - Assertions.assertEquals(Arrays.asList("item1", "item2", "item3"), result, "List contents should match"); - } -} From 47692699ea6b677de05e8aed74ec464203f05147 Mon Sep 17 00:00:00 2001 From: Itay Paz Date: Sat, 25 Jan 2025 23:24:20 +0200 Subject: [PATCH 4/5] add test --- .../java/com/checkmarx/ast/CxConfigTest.java | 105 ++++++++++-------- 1 file changed, 56 insertions(+), 49 deletions(-) diff --git a/src/test/java/com/checkmarx/ast/CxConfigTest.java b/src/test/java/com/checkmarx/ast/CxConfigTest.java index 9527c8b8..eb72b3e9 100644 --- a/src/test/java/com/checkmarx/ast/CxConfigTest.java +++ b/src/test/java/com/checkmarx/ast/CxConfigTest.java @@ -1,86 +1,93 @@ package com.checkmarx.ast; import com.checkmarx.ast.wrapper.CxConfig; +import com.checkmarx.ast.wrapper.CxConfig.InvalidCLIConfigException; import com.checkmarx.ast.wrapper.CxConstants; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.util.Arrays; import java.util.List; class CxConfigTest extends BaseTest { @Test - void testConfig_WhenUsingApiKey_GeneratesCorrectArguments() { - // Arrange + void testApiKeyAuthentication() { CxConfig config = CxConfig.builder() .apiKey("test-api-key") - .tenant("test-tenant") - .baseUri("https://test.checkmarx.com") .build(); - - // Act + List arguments = config.toArguments(); + Assertions.assertTrue(arguments.contains(CxConstants.API_KEY)); + Assertions.assertTrue(arguments.contains("test-api-key")); + } - // Assert - Assertions.assertTrue(arguments.contains(CxConstants.API_KEY), "Should contain API_KEY argument"); - Assertions.assertTrue(arguments.contains("test-api-key"), "Should contain API key value"); - Assertions.assertTrue(arguments.contains(CxConstants.TENANT), "Should contain TENANT argument"); - Assertions.assertTrue(arguments.contains("test-tenant"), "Should contain tenant value"); - Assertions.assertTrue(arguments.contains(CxConstants.BASE_URI), "Should contain BASE_URI argument"); - Assertions.assertTrue(arguments.contains("https://test.checkmarx.com"), "Should contain base URI value"); + @Test + void testClientIdSecretAuthentication() { + CxConfig config = CxConfig.builder() + .clientId("test-client-id") + .clientSecret("test-client-secret") + .build(); + + List arguments = config.toArguments(); + Assertions.assertTrue(arguments.contains(CxConstants.CLIENT_ID)); + Assertions.assertTrue(arguments.contains("test-client-id")); + Assertions.assertTrue(arguments.contains(CxConstants.CLIENT_SECRET)); + Assertions.assertTrue(arguments.contains("test-client-secret")); } @Test - void testConfig_WhenUsingClientCredentials_GeneratesCorrectArguments() { - // Arrange + void testTenantAndBaseUris() { CxConfig config = CxConfig.builder() - .clientId("test-client") - .clientSecret("test-secret") .tenant("test-tenant") + .baseUri("https://example.com") + .baseAuthUri("https://auth.example.com") .build(); - - // Act + List arguments = config.toArguments(); - - // Assert - Assertions.assertTrue(arguments.contains(CxConstants.CLIENT_ID), "Should contain CLIENT_ID argument"); - Assertions.assertTrue(arguments.contains("test-client"), "Should contain client ID value"); - Assertions.assertTrue(arguments.contains(CxConstants.CLIENT_SECRET), "Should contain CLIENT_SECRET argument"); - Assertions.assertTrue(arguments.contains("test-secret"), "Should contain client secret value"); - Assertions.assertTrue(arguments.contains(CxConstants.TENANT), "Should contain TENANT argument"); - Assertions.assertTrue(arguments.contains("test-tenant"), "Should contain tenant value"); + Assertions.assertTrue(arguments.contains(CxConstants.TENANT)); + Assertions.assertTrue(arguments.contains("test-tenant")); + Assertions.assertTrue(arguments.contains(CxConstants.BASE_URI)); + Assertions.assertTrue(arguments.contains("https://example.com")); + Assertions.assertTrue(arguments.contains(CxConstants.BASE_AUTH_URI)); + Assertions.assertTrue(arguments.contains("https://auth.example.com")); } @Test - void testConfig_WhenSettingAdditionalParameters_ParsesCorrectly() { - // Arrange + void testEmptyConfig() { CxConfig config = CxConfig.builder().build(); - String params = "--param1 value1 --param2 \"value 2\""; - - // Act - config.setAdditionalParameters(params); - List additionalParams = config.getAdditionalParameters(); - - // Assert - List expected = Arrays.asList("--param1", "value1", "--param2", "value 2"); - Assertions.assertEquals(expected, additionalParams, "Additional parameters should be parsed correctly"); + + List arguments = config.toArguments(); + Assertions.assertTrue(arguments.isEmpty()); } @Test - void testConfig_WhenNoAuthProvided_GeneratesMinimalArguments() { - // Arrange + void testAdditionalParametersParsing() { CxConfig config = CxConfig.builder() - .tenant("test-tenant") + .additionalParameters("--debug --verbose \"multi word value\"") .build(); + + List arguments = config.getAdditionalParameters(); + Assertions.assertEquals(3, arguments.size()); + Assertions.assertTrue(arguments.contains("--debug")); + Assertions.assertTrue(arguments.contains("--verbose")); + Assertions.assertTrue(arguments.contains("multi word value")); + } - // Act - List arguments = config.toArguments(); + @Test + void testSpecialCharactersInAdditionalParameters() { + CxConfig config = CxConfig.builder() + .additionalParameters("--path \"C:\\Program Files\\Tool\"") + .build(); + + List arguments = config.getAdditionalParameters(); + Assertions.assertEquals(1, arguments.size()); + Assertions.assertTrue(arguments.contains("C:\\Program Files\\Tool")); + } - // Assert - Assertions.assertTrue(arguments.contains(CxConstants.TENANT), "Should contain TENANT argument"); - Assertions.assertTrue(arguments.contains("test-tenant"), "Should contain tenant value"); - Assertions.assertFalse(arguments.contains(CxConstants.API_KEY), "Should not contain API_KEY argument"); - Assertions.assertFalse(arguments.contains(CxConstants.CLIENT_ID), "Should not contain CLIENT_ID argument"); + @Test + void testInvalidCLIConfigException() { + Assertions.assertThrows(InvalidCLIConfigException.class, () -> { + throw new InvalidCLIConfigException("Invalid configuration"); + }); } } From 11fb00d858c119ac1e2f120710865f956e17983a Mon Sep 17 00:00:00 2001 From: Itay Paz Date: Sat, 25 Jan 2025 23:32:55 +0200 Subject: [PATCH 5/5] change test --- .../java/com/checkmarx/ast/CxConfigTest.java | 53 ++++++++----------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/src/test/java/com/checkmarx/ast/CxConfigTest.java b/src/test/java/com/checkmarx/ast/CxConfigTest.java index eb72b3e9..e367a963 100644 --- a/src/test/java/com/checkmarx/ast/CxConfigTest.java +++ b/src/test/java/com/checkmarx/ast/CxConfigTest.java @@ -6,29 +6,36 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.lang.reflect.Method; import java.util.List; class CxConfigTest extends BaseTest { @Test - void testApiKeyAuthentication() { + void testApiKeyAuthentication() throws Exception { CxConfig config = CxConfig.builder() .apiKey("test-api-key") .build(); - List arguments = config.toArguments(); + Method toArgumentsMethod = CxConfig.class.getDeclaredMethod("toArguments"); + toArgumentsMethod.setAccessible(true); + List arguments = (List) toArgumentsMethod.invoke(config); + Assertions.assertTrue(arguments.contains(CxConstants.API_KEY)); Assertions.assertTrue(arguments.contains("test-api-key")); } @Test - void testClientIdSecretAuthentication() { + void testClientIdSecretAuthentication() throws Exception { CxConfig config = CxConfig.builder() .clientId("test-client-id") .clientSecret("test-client-secret") .build(); - List arguments = config.toArguments(); + Method toArgumentsMethod = CxConfig.class.getDeclaredMethod("toArguments"); + toArgumentsMethod.setAccessible(true); + List arguments = (List) toArgumentsMethod.invoke(config); + Assertions.assertTrue(arguments.contains(CxConstants.CLIENT_ID)); Assertions.assertTrue(arguments.contains("test-client-id")); Assertions.assertTrue(arguments.contains(CxConstants.CLIENT_SECRET)); @@ -36,14 +43,17 @@ void testClientIdSecretAuthentication() { } @Test - void testTenantAndBaseUris() { + void testTenantAndBaseUris() throws Exception { CxConfig config = CxConfig.builder() .tenant("test-tenant") .baseUri("https://example.com") .baseAuthUri("https://auth.example.com") .build(); - List arguments = config.toArguments(); + Method toArgumentsMethod = CxConfig.class.getDeclaredMethod("toArguments"); + toArgumentsMethod.setAccessible(true); + List arguments = (List) toArgumentsMethod.invoke(config); + Assertions.assertTrue(arguments.contains(CxConstants.TENANT)); Assertions.assertTrue(arguments.contains("test-tenant")); Assertions.assertTrue(arguments.contains(CxConstants.BASE_URI)); @@ -53,35 +63,14 @@ void testTenantAndBaseUris() { } @Test - void testEmptyConfig() { + void testEmptyConfig() throws Exception { CxConfig config = CxConfig.builder().build(); - List arguments = config.toArguments(); - Assertions.assertTrue(arguments.isEmpty()); - } - - @Test - void testAdditionalParametersParsing() { - CxConfig config = CxConfig.builder() - .additionalParameters("--debug --verbose \"multi word value\"") - .build(); - - List arguments = config.getAdditionalParameters(); - Assertions.assertEquals(3, arguments.size()); - Assertions.assertTrue(arguments.contains("--debug")); - Assertions.assertTrue(arguments.contains("--verbose")); - Assertions.assertTrue(arguments.contains("multi word value")); - } - - @Test - void testSpecialCharactersInAdditionalParameters() { - CxConfig config = CxConfig.builder() - .additionalParameters("--path \"C:\\Program Files\\Tool\"") - .build(); + Method toArgumentsMethod = CxConfig.class.getDeclaredMethod("toArguments"); + toArgumentsMethod.setAccessible(true); + List arguments = (List) toArgumentsMethod.invoke(config); - List arguments = config.getAdditionalParameters(); - Assertions.assertEquals(1, arguments.size()); - Assertions.assertTrue(arguments.contains("C:\\Program Files\\Tool")); + Assertions.assertTrue(arguments.isEmpty()); } @Test