/src/test/java/com/xti/jenkins/plugin/awslambda/service/JsonPathParserTest.java

https://gitlab.com/CORP-RESELLER/aws-lambda-jenkins-plugin · Java · 131 lines · 107 code · 24 blank · 0 comment · 0 complexity · d1f17f6411c5a501a14ffcb5ad759a43 MD5 · raw file

  1. package com.xti.jenkins.plugin.awslambda.service;
  2. import com.xti.jenkins.plugin.awslambda.invoke.JsonParameter;
  3. import org.junit.Before;
  4. import org.junit.Test;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.Map;
  8. import static org.junit.Assert.assertEquals;
  9. public class JsonPathParserTest {
  10. List<JsonParameter> jsonParameters;
  11. @Before
  12. public void setUp() throws Exception {
  13. jsonParameters = new ArrayList<JsonParameter>();
  14. }
  15. @Test
  16. public void testSimpleParse() throws Exception {
  17. jsonParameters.add(lambdaKey1);
  18. jsonParameters.add(lambdaKey2);
  19. jsonParameters.add(keyPayload);
  20. jsonParameters.add(keyPayloadNull);
  21. JsonPathParser jsonPathParser = new JsonPathParser(jsonParameters, new JenkinsLogger(System.out));
  22. Map<String, String> parseResult = jsonPathParser.parse(simplePayload);
  23. assertEquals(4, parseResult.size());
  24. assertEquals("value1", parseResult.get(lambdaKey1.getEnvVarName()));
  25. assertEquals("value2", parseResult.get(lambdaKey2.getEnvVarName()));
  26. assertEquals(simplePayload, parseResult.get(keyPayload.getEnvVarName()));
  27. assertEquals(simplePayload, parseResult.get(keyPayloadNull.getEnvVarName()));
  28. }
  29. @Test
  30. public void testSimpleParseInvalid() throws Exception {
  31. jsonParameters.add(keyInvalid);
  32. jsonParameters.add(lambdaKey4);
  33. JsonPathParser jsonPathParser = new JsonPathParser(jsonParameters, new JenkinsLogger(System.out));
  34. Map<String, String> parseResult = jsonPathParser.parse(simplePayload);
  35. assertEquals(0, parseResult.size());
  36. }
  37. final JsonParameter lambdaKey1 = new JsonParameter("LAMBDA_KEY_1", "$.key1");
  38. final JsonParameter lambdaKey2 = new JsonParameter("LAMBDA_KEY_2", "key2");
  39. final JsonParameter keyPayload = new JsonParameter("LAMBDA_KEYS", "");
  40. final JsonParameter keyPayloadNull = new JsonParameter("LAMBDA_KEYS_NULL", null);
  41. final JsonParameter keyInvalid = new JsonParameter("LAMBDA_KEYS_INVALID_DOT", "$.");
  42. final JsonParameter lambdaKey4 = new JsonParameter("LAMBDA_KEYS_INVALID_KEY", "$.key4");
  43. final String simplePayload =
  44. "{\n" +
  45. " \"key1\": \"value1\",\n" +
  46. " \"key2\": \"value2\",\n" +
  47. " \"key3\": \"value3\"\n" +
  48. "}";
  49. @Test
  50. public void testComplexParse() throws Exception {
  51. jsonParameters.add(complexDeep);
  52. jsonParameters.add(complexFilter);
  53. JsonPathParser jsonPathParser = new JsonPathParser(jsonParameters, new JenkinsLogger(System.out));
  54. Map<String, String> parseResult = jsonPathParser.parse(complexPayload);
  55. assertEquals(2, parseResult.size());
  56. assertEquals("attached", parseResult.get(complexDeep.getEnvVarName()));
  57. assertEquals("[\"\\/dev\\/sdf\"]", parseResult.get(complexFilter.getEnvVarName()));
  58. }
  59. final JsonParameter complexDeep = new JsonParameter("LAMBDA_COMPLEX_1", "BlockDeviceMappings[0].Ebs.Status");
  60. final JsonParameter complexFilter = new JsonParameter("LAMBDA_COMPLEX_FIRSTFALSE", "$.BlockDeviceMappings[?(@.Ebs.DeleteOnTermination == 'false')].DeviceName");
  61. final String complexPayload =
  62. "{\n" +
  63. " \"InstanceId\": \"i-5203422c\",\n" +
  64. " \"BlockDeviceMappings\": [\n" +
  65. " {\n" +
  66. " \"DeviceName\": \"/dev/sda1\",\n" +
  67. " \"Ebs\": {\n" +
  68. " \"Status\": \"attached\",\n" +
  69. " \"DeleteOnTermination\": true,\n" +
  70. " \"VolumeId\": \"vol-615a1339\",\n" +
  71. " \"AttachTime\": \"2013-05-17T22:42:34.000Z\"\n" +
  72. " }\n" +
  73. " },\n" +
  74. " {\n" +
  75. " \"DeviceName\": \"/dev/sdf\",\n" +
  76. " \"Ebs\": {\n" +
  77. " \"Status\": \"attached\",\n" +
  78. " \"DeleteOnTermination\": false,\n" +
  79. " \"VolumeId\": \"vol-9f54b8dc\",\n" +
  80. " \"AttachTime\": \"2013-09-10T23:07:00.000Z\"\n" +
  81. " }\n" +
  82. " }\n" +
  83. " ],\n" +
  84. "}";
  85. @Test
  86. public void testEmptyPayload() throws Exception {
  87. jsonParameters.add(lambdaKey1);
  88. jsonParameters.add(lambdaKey2);
  89. jsonParameters.add(keyPayload);
  90. jsonParameters.add(keyPayloadNull);
  91. JsonPathParser jsonPathParser = new JsonPathParser(jsonParameters, new JenkinsLogger(System.out));
  92. Map<String, String> parseResult = jsonPathParser.parse(emptyPayload);
  93. assertEquals(0, parseResult.size());
  94. }
  95. final String emptyPayload = "";
  96. @Test
  97. public void testNullPayload() throws Exception {
  98. jsonParameters.add(lambdaKey1);
  99. jsonParameters.add(lambdaKey2);
  100. jsonParameters.add(keyPayload);
  101. jsonParameters.add(keyPayloadNull);
  102. JsonPathParser jsonPathParser = new JsonPathParser(jsonParameters, new JenkinsLogger(System.out));
  103. Map<String, String> parseResult = jsonPathParser.parse(nullPayload);
  104. assertEquals(0, parseResult.size());
  105. }
  106. final String nullPayload = null;
  107. }