Author: bdelacretaz Date: Fri Aug 18 10:56:30 2017 New Revision: 1805399 URL: http://svn.apache.org/viewvc?rev=1805399&view=rev Log: SLING-6984 - 'disable service user' reason is required
Added: sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/DisableServiceUserTest.java - copied, changed from r1805398, sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java Modified: sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DisableServiceUser.java sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61-output.txt sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61.txt sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt Modified: sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DisableServiceUser.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DisableServiceUser.java?rev=1805399&r1=1805398&r2=1805399&view=diff ============================================================================== --- sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DisableServiceUser.java (original) +++ sling/trunk/bundles/extensions/repoinit/parser/src/main/java/org/apache/sling/repoinit/parser/operations/DisableServiceUser.java Fri Aug 18 10:56:30 2017 @@ -18,20 +18,23 @@ package org.apache.sling.repoinit.parser.operations; public class DisableServiceUser extends ServiceUserOperation { - private final String message; + private final String reason; - public DisableServiceUser(String username, String message) { + public DisableServiceUser(String username, String reason) { super(username); - this.message = cleanupQuotedString(message); + this.reason = cleanupQuotedString(reason); + if(this.reason == null || this.reason.length() == 0) { + throw new IllegalArgumentException("A non-empty reason is required"); + } } @Override protected String getParametersDescription() { final StringBuilder sb = new StringBuilder(); sb.append(super.getParametersDescription()); - if(message!=null) { + if(reason!=null) { sb.append(" : "); - sb.append(message); + sb.append(reason); } return sb.toString(); } Modified: sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt?rev=1805399&r1=1805398&r2=1805399&view=diff ============================================================================== --- sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt (original) +++ sling/trunk/bundles/extensions/repoinit/parser/src/main/javacc/RepoInitGrammar.jjt Fri Aug 18 10:56:30 2017 @@ -492,7 +492,7 @@ void disableServiceUserStatement(List<Op { <DISABLE> <SERVICE> <USER> ( user = <STRING> ) - ( <COLON> msg = <QUOTED>) ? + ( <COLON> msg = <QUOTED> ) { result.add(new DisableServiceUser(user.image, msg == null ? null : msg.image)); } Copied: sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/DisableServiceUserTest.java (from r1805398, sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java) URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/DisableServiceUserTest.java?p2=sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/DisableServiceUserTest.java&p1=sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java&r1=1805398&r2=1805399&rev=1805399&view=diff ============================================================================== --- sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java (original) +++ sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/DisableServiceUserTest.java Fri Aug 18 10:56:30 2017 @@ -17,86 +17,25 @@ package org.apache.sling.repoinit.parser.test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.apache.sling.repoinit.parser.impl.ParseException; -import org.apache.sling.repoinit.parser.impl.RepoInitParserImpl; +import org.apache.sling.repoinit.parser.operations.DisableServiceUser; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; -/** Test various parsing errors */ -@RunWith(Parameterized.class) -public class ParsingErrorsTest { - - private String input; - private Class<? extends Throwable> expected; +public class DisableServiceUserTest { + + public static final String USERNAME = "foo"; - @Parameters - public static Collection<Object[]> data() { - @SuppressWarnings("serial") - final List<Object []> result = new ArrayList<Object []>() {{ - add(new Object[] { "foo", ParseException.class }); - add(new Object[] { "12", ParseException.class }); - - add(new Object[] { "set ACL on /apps \n remove * for u \n end", null }); - add(new Object[] { "set ACL on /apps \n badkeyword * for u \n end", ParseException.class }); - add(new Object[] { "set ACL on appsWithoutSlash \n remove * for u \n end", ParseException.class }); - add(new Object[] { "set ACL", ParseException.class }); - add(new Object[] { "set ACL \n end", ParseException.class }); - - add(new Object[] { "create service user bob, alice, tom21", null }); - add(new Object[] { "create service user bob-221_BOB", null }); - - // this passes since introducing "register namespace" and loosening - // the PRINCIPAL regexp - add(new Object[] { "create service user bob/221", null }); - - add(new Object[] { "create service user bob,/alice, tom21", ParseException.class }); - add(new Object[] { "create service user bob,alice,tom21 # comment not allowed here", ParseException.class }); - add(new Object[] { "CREATE service user bob, alice, tom21", ParseException.class }); - add(new Object[] { "create SERVICE user bob, alice, tom21", ParseException.class }); - - // Quoted strings in disable service user - add(new Object[] { "disable service user foo missing colon and quotes", ParseException.class }); - add(new Object[] { "disable service user foo : missing quotes", ParseException.class }); - add(new Object[] { "disable service user foo \"missing colon\"", ParseException.class }); - add(new Object[] { "disable service user foo : missing start quote\"", ParseException.class }); - add(new Object[] { "disable service user foo : \"missing end quote", ParseException.class }); - }}; - return result; + @Test + public void nonEmptyReason() { + new DisableServiceUser(USERNAME, "some reason"); } - public ParsingErrorsTest(String input, Class<? extends Throwable> expected) { - this.input = input; - this.expected = expected; + @Test(expected = IllegalArgumentException.class) + public void emptyReason() { + new DisableServiceUser(USERNAME, ""); } - - @Test - public void checkResult() throws ParseException, IOException { - final StringReader r = new StringReader(input); - boolean noException = false; - try { - new RepoInitParserImpl(r).parse(); - noException = true; - } catch(Exception e) { - assertEquals("for input " + input, expected, e.getClass()); - } catch(Error err) { - assertEquals("for input " + input, expected, err.getClass()); - } finally { - r.close(); - } - - if(noException && expected != null) { - fail("Expected a " + expected.getSimpleName() + " for [" + input + "]"); - } + + @Test(expected = IllegalArgumentException.class) + public void nullReason() { + new DisableServiceUser(USERNAME, null); } } Modified: sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java?rev=1805399&r1=1805398&r2=1805399&view=diff ============================================================================== --- sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java (original) +++ sling/trunk/bundles/extensions/repoinit/parser/src/test/java/org/apache/sling/repoinit/parser/test/ParsingErrorsTest.java Fri Aug 18 10:56:30 2017 @@ -65,6 +65,9 @@ public class ParsingErrorsTest { add(new Object[] { "CREATE service user bob, alice, tom21", ParseException.class }); add(new Object[] { "create SERVICE user bob, alice, tom21", ParseException.class }); + // Disable service user with missing reason + add(new Object[] { "disable service user foo", ParseException.class }); + // Quoted strings in disable service user add(new Object[] { "disable service user foo missing colon and quotes", ParseException.class }); add(new Object[] { "disable service user foo : missing quotes", ParseException.class }); Modified: sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61-output.txt URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61-output.txt?rev=1805399&r1=1805398&r2=1805399&view=diff ============================================================================== --- sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61-output.txt (original) +++ sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61-output.txt Fri Aug 18 10:56:30 2017 @@ -1,3 +1 @@ -DisableServiceUser svcA : This message explains why it's disabled. Whitespace is preserved. -DisableServiceUser svcB -DisableServiceUser svcC \ No newline at end of file +DisableServiceUser svcA : This message explains why it's disabled. Whitespace is preserved. \ No newline at end of file Modified: sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61.txt URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61.txt?rev=1805399&r1=1805398&r2=1805399&view=diff ============================================================================== --- sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61.txt (original) +++ sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-61.txt Fri Aug 18 10:56:30 2017 @@ -1,7 +1,2 @@ # Test "disable service user" statements - -disable service user svcA : "This message explains why it's disabled. Whitespace is preserved." -disable service user svcB : "" - -# message is optional -disable service user svcC +disable service user svcA : "This message explains why it's disabled. Whitespace is preserved." \ No newline at end of file Modified: sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt?rev=1805399&r1=1805398&r2=1805399&view=diff ============================================================================== --- sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt (original) +++ sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99-output.txt Fri Aug 18 10:56:30 2017 @@ -32,4 +32,3 @@ CreateUser userE (with encoded password) CreateUser one_with-more-chars.ok:/123456 (with encoded password), password=pw-with.ok-:/13456, passwordEncoding=encoding_with.ok-:/12345 CreateServiceUser the-last-one DisableServiceUser svc1 : This is the message -DisableServiceUser svc212 Modified: sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt?rev=1805399&r1=1805398&r2=1805399&view=diff ============================================================================== --- sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt (original) +++ sling/trunk/bundles/extensions/repoinit/parser/src/test/resources/testcases/test-99.txt Fri Aug 18 10:56:30 2017 @@ -53,5 +53,4 @@ create user userE with password {someEnc create user one_with-more-chars.ok:/123456 with password {encoding_with.ok-:/12345} pw-with.ok-:/13456 create service user the-last-one -disable service user svc1 : "This is the message" -disable service user svc212 +disable service user svc1 : "This is the message" \ No newline at end of file