Skip to content

Commit 0f3505d

Browse files
authored
Merge pull request #671 from akto-api-security/hotfix/concat_vars
replace multiple differents vars
2 parents 41c9992 + 6736ee9 commit 0f3505d

File tree

2 files changed

+55
-9
lines changed

2 files changed

+55
-9
lines changed

Diff for: apps/testing/src/main/java/com/akto/test_editor/execution/VariableResolver.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,25 @@ public static String resolveExpression(Map<String, Object> varMap, String expres
2626

2727
Pattern pattern = Pattern.compile("\\$\\{[^}]*\\}");
2828
Matcher matcher = pattern.matcher(expression);
29-
if (matcher.find()) {
29+
while (matcher.find()) {
3030
try {
3131
String match = matcher.group(0);
3232
match = match.substring(2, match.length());
3333
match = match.substring(0, match.length() - 1);
3434
Object val = getValue(varMap, match);
3535
String valString = val.toString();
36-
expression = expression.replaceAll("(\\$\\{[^}]*\\})", valString);
36+
expression = expression.replaceFirst("(\\$\\{[^}]*\\})", valString);
3737
} catch (Exception e) {
3838
return expression;
3939
}
40+
}
41+
42+
Object val = getValue(varMap, expression);
43+
if (val == null) {
44+
return expression;
4045
} else {
41-
Object val = getValue(varMap, expression);
42-
if (val == null) {
43-
return expression;
44-
} else {
45-
return val.toString();
46-
}
46+
return val.toString();
4747
}
48-
return expression;
4948

5049
}
5150

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.akto.test_editor.execution;
2+
3+
import org.junit.Test;
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
import static junit.framework.TestCase.assertEquals;
9+
10+
public class TestVariableResolver {
11+
12+
@Test
13+
public void testResolveExpression() {
14+
Map<String, Object> varMap = new HashMap<>();
15+
varMap.put("var1", "user1");
16+
varMap.put("var2", "user2");
17+
String result = VariableResolver.resolveExpression(varMap, "${var1}");
18+
assertEquals("user1", result);
19+
result = VariableResolver.resolveExpression(varMap, "var1");
20+
assertEquals("user1", result);
21+
22+
result = VariableResolver.resolveExpression(varMap, "${var1}!!!");
23+
assertEquals("user1!!!", result);
24+
result = VariableResolver.resolveExpression(varMap, "var1!!!");
25+
assertEquals("var1!!!", result);
26+
27+
result = VariableResolver.resolveExpression(varMap, "${var1}${var2}");
28+
assertEquals("user1user2", result);
29+
result = VariableResolver.resolveExpression(varMap, "var1${var2}");
30+
assertEquals("var1user2", result);
31+
32+
result = VariableResolver.resolveExpression(varMap, "${var1}&${var2}");
33+
assertEquals("user1&user2", result);
34+
result = VariableResolver.resolveExpression(varMap, "var1&${var2}");
35+
assertEquals("var1&user2", result);
36+
37+
result = VariableResolver.resolveExpression(varMap, "${var3}");
38+
assertEquals("${var3}", result);
39+
40+
result = VariableResolver.resolveExpression(varMap, "${var1}${var1}");
41+
assertEquals("user1user1", result);
42+
43+
result = VariableResolver.resolveExpression(varMap, "akto");
44+
assertEquals("akto", result);
45+
}
46+
47+
}

0 commit comments

Comments
 (0)