001package com.ganteater.ae.processor; 002 003import static org.junit.Assert.*; 004 005import java.io.File; 006import java.nio.charset.StandardCharsets; 007import java.util.Base64; 008 009import org.junit.Test; 010 011import com.ganteater.ae.util.xml.easyparser.Node; 012 013public class CoderTest { 014 015 private static class TestableCoder extends Coder { 016 private final java.util.Map<String, Object> vars = new java.util.HashMap<String, Object>(); 017 018 @Override 019 public Object getVariableValue(String name) { 020 return vars.get(name); 021 } 022 023 @Override 024 public void setVariableValue(String name, Object value) { 025 vars.put(name, value); 026 } 027 028 @Override 029 public String replaceProperties(String value) { 030 return value; 031 } 032 033 @Override 034 public File getBaseDir() { 035 return new File("."); 036 } 037 } 038 039 @Test 040 public void runCommandBase64Encode_shouldEncodeFromSourceVariableString() throws Exception { 041 // Arrange 042 TestableCoder coder = new TestableCoder(); 043 coder.setVariableValue("SRC", "hello"); 044 Node action = new Node("Base64Encode"); 045 action.setAttribute("name", "OUT"); 046 action.setAttribute("source", "SRC"); 047 048 // Act 049 coder.runCommandBase64Encode(action); 050 051 // Assert 052 String expected = Base64.getEncoder().encodeToString("hello".getBytes("UTF-8")); 053 assertEquals(expected, coder.getVariableValue("OUT")); 054 } 055 056 @Test 057 public void runCommandBase64Encode_shouldEncodeFromSourceVariableBytes() throws Exception { 058 // Arrange 059 TestableCoder coder = new TestableCoder(); 060 byte[] bytes = "hi".getBytes(StandardCharsets.UTF_8); 061 coder.setVariableValue("SRC", bytes); 062 Node action = new Node("Base64Encode"); 063 action.setAttribute("name", "OUT"); 064 action.setAttribute("source", "SRC"); 065 066 // Act 067 coder.runCommandBase64Encode(action); 068 069 // Assert 070 String expected = Base64.getEncoder().encodeToString(bytes); 071 assertEquals(expected, coder.getVariableValue("OUT")); 072 } 073 074 @Test 075 public void runCommandBase64Encode_shouldEncodeWhenValueAttributeProvided() throws Exception { 076 // Arrange 077 TestableCoder coder = new TestableCoder(); 078 Node action = new Node("Base64Encode"); 079 action.setAttribute("name", "OUT"); 080 action.setAttribute("value", "123"); 081 082 // Act 083 coder.runCommandBase64Encode(action); 084 085 // Assert 086 String expected = Base64.getEncoder().encodeToString("123".getBytes("UTF-8")); 087 assertEquals(expected, coder.getVariableValue("OUT")); 088 } 089 090 @Test 091 public void runCommandEscapeXml_shouldEscapeXmlFromSourceVariable() { 092 // Arrange 093 TestableCoder coder = new TestableCoder(); 094 coder.setVariableValue("SRC", "<a>1</a>"); 095 Node action = new Node("EscapeXml"); 096 action.setAttribute("name", "OUT"); 097 action.setAttribute("source", "SRC"); 098 099 // Act 100 coder.runCommandEscapeXml(action); 101 102 // Assert 103 assertEquals("<a>1</a>", coder.getVariableValue("OUT")); 104 } 105 106 @Test 107 public void runCommandEscapeXml_shouldSetNullWhenSourceIsMissing() { 108 // Arrange 109 TestableCoder coder = new TestableCoder(); 110 Node action = new Node("EscapeXml"); 111 action.setAttribute("name", "OUT"); 112 action.setAttribute("source", "MISSING"); 113 114 // Act 115 coder.runCommandEscapeXml(action); 116 117 // Assert 118 assertNull(coder.getVariableValue("OUT")); 119 } 120}