Skip to content

Commit 5e12338

Browse files
authored
Merge pull request #33124 from jacobwdv/JD_invalidArg
fixing invalid argument bug
2 parents 2b9c660 + e1e4c32 commit 5e12338

File tree

3 files changed

+39
-9
lines changed

3 files changed

+39
-9
lines changed

dev/com.ibm.ws.security.utility/resources/com/ibm/ws/security/utility/resources/UtilityMessages.nlsprops

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ to your server.xml file:\n\
154154
\t<include location=\"{0}\" />
155155
generateaeskey.failFileExists=\
156156
The {0} file exists and will not be overwritten. Either specify a \n\
157-
different file name, or remove the existing file before you try again.\n\
157+
different file name, or remove the existing file before you try again.
158158
generateaeskey.failFileIsDirectory=\
159159
The {0} value specified for the file name is a directory. Specify the \n\
160160
full file name and try again.

dev/com.ibm.ws.security.utility/src/com/ibm/ws/security/utility/tasks/GenerateAesKeyTask.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public class GenerateAesKeyTask extends BaseCommandTask {
4141
private static final List<String> VALID_ARGUMENTS = Collections.unmodifiableList(
4242
Arrays.asList(BaseCommandTask.ARG_KEY, ARG_FILE));
4343

44-
private static final String TASK_NAME = "generateAESKey";
44+
protected static final String TASK_NAME = "generateAESKey";
4545
private final IFileUtility fileUtil;
4646

4747
/**
@@ -125,9 +125,10 @@ private CommandArguments parseArgs(String[] args, IFileUtility fileUtil) {
125125
String keyPhrase = null;
126126
String filePath = null;
127127

128-
for (String arg : args) {
128+
for (int i = 1; i < args.length; i++) {
129+
String arg = args[i];
129130
if (!arg.startsWith("--")) {
130-
continue;
131+
throw new IllegalArgumentException(getMessage("invalidArg", arg));
131132
}
132133

133134
int index = arg.indexOf('=');

dev/com.ibm.ws.security.utility/test/com/ibm/ws/security/utility/tasks/GenerateAesKeyTest.java

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void testNoKeySpecifiedConfigFileSpecified() throws Exception {
5858

5959
try (MockedStatic<PasswordEncryptionConfigBuilder> xmlBuilder = Mockito.mockStatic(PasswordEncryptionConfigBuilder.class, Mockito.CALLS_REAL_METHODS)) {
6060
String outfile = "/path/keys.xml";
61-
generate.handleTask(stdin, stdout, stderr, new String[] { "--createConfigFile=" + outfile });
61+
generate.handleTask(stdin, stdout, stderr, new String[] { GenerateAesKeyTask.TASK_NAME, "--createConfigFile=" + outfile });
6262
xmlBuilder.verify(() -> PasswordEncryptionConfigBuilder.generateRandomAes256Key(), times(1));
6363
xmlBuilder.verifyNoMoreInteractions();
6464
verify(fileUtil, times(1)).writeToFile(any(), anyString(), any());
@@ -77,7 +77,7 @@ public void testKeySpecifiedConfigFileSpecified() throws Exception {
7777
xml.append(" <variable name=\"").append(AESKeyManager.NAME_WLP_BASE64_AES_ENCRYPTION_KEY).append("\" value=\"").append(expectedKey).append("\" />\n");
7878
xml.append("</server>");
7979
try (MockedStatic<PasswordEncryptionConfigBuilder> xmlBuilder = Mockito.mockStatic(PasswordEncryptionConfigBuilder.class, Mockito.CALLS_REAL_METHODS)) {
80-
generate.handleTask(stdin, stdout, stderr, new String[] { "--key=" + pass, "--createConfigFile=/path/keys.xml" });
80+
generate.handleTask(stdin, stdout, stderr, new String[] { GenerateAesKeyTask.TASK_NAME, "--key=" + pass, "--createConfigFile=/path/keys.xml" });
8181
xmlBuilder.verify(() -> PasswordEncryptionConfigBuilder.generateAes256KeyWithPBKDF2(pass), times(1));
8282
xmlBuilder.verifyNoMoreInteractions();
8383
verify(fileUtil, times(1)).writeToFile(stderr, xml.toString(), new File(outFile));
@@ -90,7 +90,7 @@ public void testKeySpecifiedNoConfigFile() throws Exception {
9090
String pass = "passw0rd";
9191
String expectedKey = "lcJWjIt38ZjBBvYfNWLEgp/I0DQFTbFmA5zFl6zCU30=";
9292
try (MockedStatic<PasswordEncryptionConfigBuilder> xmlBuilder = Mockito.mockStatic(PasswordEncryptionConfigBuilder.class, Mockito.CALLS_REAL_METHODS)) {
93-
generate.handleTask(stdin, stdout, stderr, new String[] { "--key=" + pass });
93+
generate.handleTask(stdin, stdout, stderr, new String[] { GenerateAesKeyTask.TASK_NAME, "--key=" + pass });
9494
xmlBuilder.verify(() -> PasswordEncryptionConfigBuilder.generateAes256KeyWithPBKDF2(pass), times(1));
9595
xmlBuilder.verifyNoMoreInteractions();
9696
verify(stdout, times(1)).println(expectedKey);
@@ -101,7 +101,7 @@ public void testKeySpecifiedNoConfigFile() throws Exception {
101101
public void testNoKeyNoConfigFile() throws Exception {
102102

103103
try (MockedStatic<PasswordEncryptionConfigBuilder> xmlBuilder = Mockito.mockStatic(PasswordEncryptionConfigBuilder.class, Mockito.CALLS_REAL_METHODS)) {
104-
generate.handleTask(stdin, stdout, stderr, new String[] {});
104+
generate.handleTask(stdin, stdout, stderr, new String[] { GenerateAesKeyTask.TASK_NAME, });
105105
xmlBuilder.verify(() -> PasswordEncryptionConfigBuilder.generateRandomAes256Key(), times(1));
106106
xmlBuilder.verifyNoMoreInteractions();
107107
verify(stdout, times(1)).println(anyString());
@@ -112,11 +112,40 @@ public void testNoKeyNoConfigFile() throws Exception {
112112
public void testEmptyKey() throws Exception {
113113

114114
try (MockedStatic<PasswordEncryptionConfigBuilder> xmlBuilder = Mockito.mockStatic(PasswordEncryptionConfigBuilder.class, Mockito.CALLS_REAL_METHODS)) {
115-
generate.handleTask(stdin, stdout, stderr, new String[] { "--key=" });
115+
generate.handleTask(stdin, stdout, stderr, new String[] { GenerateAesKeyTask.TASK_NAME, "--key=" });
116116
fail("task should throw an exception if key isn't specified");
117117
} catch (IllegalArgumentException iae) {
118118
assertEquals("Wrong message returned when specifying an empty key.", BaseCommandTask.getMessage("missingValue", "--key"), iae.getMessage());
119119
}
120120
}
121121

122+
@Test
123+
public void testUnknownArg() {
124+
String unknownArg = "testarg=abc";
125+
126+
try {
127+
generate.handleTask(stdin, stdout, stderr, new String[] { GenerateAesKeyTask.TASK_NAME, unknownArg });
128+
fail("task should output invalidArg message");
129+
} catch (Exception e) {
130+
System.out.println(e.getMessage());
131+
assertEquals("Wrong message returned when specifying an empty key.", BaseCommandTask.getMessage("invalidArg", unknownArg), e.getMessage());
132+
133+
}
134+
}
135+
136+
@Test
137+
public void testUnknownParam() {
138+
String badParam = "--testarg";
139+
String unknownArg = badParam + "=abc";
140+
141+
try {
142+
generate.handleTask(stdin, stdout, stderr, new String[] { GenerateAesKeyTask.TASK_NAME, unknownArg });
143+
fail("task should output invalidArg message");
144+
} catch (Exception e) {
145+
System.out.println(e.getMessage());
146+
assertEquals("Wrong message returned when specifying an empty key.", BaseCommandTask.getMessage("invalidArg", badParam), e.getMessage());
147+
148+
}
149+
}
150+
122151
}

0 commit comments

Comments
 (0)