Skip to content

Commit

Permalink
WINDUPRULE-483,492,498,499,500,509,484,606,429 (#449)
Browse files Browse the repository at this point in the history
* WINDUPRULE-482 -add removed class groovy rule

* WINDUPRULE-428: Add rule for auth token change in camel-telegram

* WINDUPRULE-428: Add rule for auth token change in camel-telegram

* WINDUPRULE-499 Add rule for mandatory passphrase in shiro component

* WINDUPRULE-492 add rules for removed out messages from simple and mock

* WINDUPRULE-509 languages changes

* WINDUPRULE-498 - Add optional migration rule for crypto dataformat

* WINDUPRULE-500 add rules for XML security changes

* WINDUPRULE-483 Add rule for removed ,consumer prefix

* WINDUPRULE-484: Add rule for changes in tracing

* WINDUPRULE-606: add information rules about crypto and xmlsecurity components

* WINDUPRULE-429 - Add rule for xslt-saxon

* fix issues related to #449

Co-authored-by: Matej Melko <mmelko@pop-os.localdomain>
  • Loading branch information
mmelko and Matej Melko committed Jun 9, 2020
1 parent 2cc95ff commit d03f21d
Show file tree
Hide file tree
Showing 11 changed files with 853 additions and 14 deletions.
281 changes: 272 additions & 9 deletions rules-reviewed/camel3/camel2/component-changes.windup.groovy

Large diffs are not rendered by default.

221 changes: 218 additions & 3 deletions rules-reviewed/camel3/camel2/tests/component-changes.windup.test.xml
@@ -1,7 +1,8 @@
<?xml version="1.0"?>
<ruletest id="component-changes-tests"
xmlns="http://windup.jboss.org/schema/jboss-ruleset"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
xmlns="http://windup.jboss.org/schema/jboss-ruleset"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
<testDataPath>data/component-changes</testDataPath>
<rulePath>../component-changes.windup.groovy</rulePath>

Expand All @@ -16,7 +17,221 @@
</not>
</when>
<perform>
<fail message="[camel-telegram] 'Authorization Token required' hint was not found!" />
<fail message="[camel-telegram] 'Authorization Token required' hint was not found!"/>
</perform>
</rule>
<rule id="component-changes-00002-test">
<when>
<not>
<iterable-filter size="4">
<hint-exists message="It's mandatory to specify key/passphrase for `ShiroSecurityPolicy`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[camel-shiro] 'Shiro needs to have passphrase specified - hint not found!"/>
</perform>
</rule>
<rule id="component-changes-00003-test">
<when>
<not>
<iterable-filter size="3">
<hint-exists message="`.*` has been removed from the mock component's assertion api."/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[camel-mock] outBody removed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-00004-test">
<when>
<not>
<iterable-filter size="2">
<hint-exists message="`@OutHeaders` annotation has been removed. Use `@Headers*`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="@OutHeaders annotation removed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-00005-test">
<when>
<not>
<iterable-filter size="6">
<hint-exists message="`.*` has been removed from simple language"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Simple language] outBody/outHeaders removed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-00006-test">
<when>
<not>
<iterable-filter size="6">
<hint-exists message="`.*` has been removed from simple language"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Simple language] outBody/outHeaders removed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-00007-test">
<when>
<not>
<iterable-filter size="6">
<hint-exists message="`.*` has been removed from simple language"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Simple language] outBody/outHeaders removed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-00008-test">
<when>
<not>
<iterable-filter size="1">
<hint-exists message="`property` function has been removed from simple language. Use `exchangeProperty.*`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="Simple language: property function has been removed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-00009-test">
<when>
<not>
<iterable-filter size="1">
<hint-exists message="terser` language renamed to `hl7terser`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[simple language] terser language renamed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-00010-test">
<when>
<not>
<iterable-filter size="2">
<hint-exists
message="The default encryption algorithm is mandatory changed from `DES/CBC/PKCS5Padding.*`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Crypto-dataformat] crypto algorithm hint not found!"/>
</perform>
</rule>
<rule id="component-changes-000011-test">
<when>
<not>
<iterable-filter size="3">
<hint-exists
message="The default encryption key has been removed, so it is now mandatory to supply*"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[SecureXML-dataformat] secureXML hint not found!"/>
</perform>
</rule>
<rule id="component-changes-000012-test">
<when>
<not>
<iterable-filter size="3">
<hint-exists
message="Consumer.options with `consumer.*`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Consumer endpoints] removed .consumer prefix hint not found!"/>
</perform>
</rule>
<rule id="component-changes-000013-test">
<when>
<not>
<iterable-filter size="2">
<hint-exists
message="org.apache.camel.processor.interceptor.Tracer` class has been removed.*"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Tracing] Removed Tracer class hint not found!"/>
</perform>
</rule>
<rule id="component-changes-000014-test">
<when>
<not>
<iterable-filter size="1">
<hint-exists
message="`org.apache.camel.processor.interceptor.DefaultTraceFormatter` class has been removed.*"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Tracing] Removed DefaultTraceFormatter class hint not found!"/>
</perform>
</rule>
<rule id="component-changes-000015-test">
<when>
<not>
<iterable-filter size="1">
<hint-exists
message="`BacklogTracer` is no longer enabled by default in JMX.*"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Tracing] Removed DefaultFormatter class hint not found!"/>
</perform>
</rule>

<rule id="component-changes-000016-test">
<when>
<not>
<iterable-filter size="5">
<hint-exists
message="The default signature algorithm in the XMLSecurity component has changed `SHA1WithDSA.*`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[xmlsecurity-component] changed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-000017-test">
<when>
<not>
<iterable-filter size="3">
<hint-exists
message="The default signature algorithm in the Crypto component has changed from `SHA1WithDSA.*`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[Crypto-component] changed hint not found!"/>
</perform>
</rule>
<rule id="component-changes-000018-test">
<when>
<not>
<iterable-filter size="3">
<hint-exists
message="The XSLT component has moved out of `camel-core` into `camel-xslt` and `camel-xslt-saxon*`"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="[XSLT component] new component hint not found!"/>
</perform>
</rule>
</rules>
Expand Down
@@ -0,0 +1,61 @@
package camelinaction;

import java.security.Key;
import java.security.KeyStore;

import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.converter.crypto.CryptoDataFormat;
import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.apache.camel.util.jsse.KeyStoreParameters;
import org.junit.Test;

public class MessageEncryptionTest extends CamelTestSupport {

private Key secretKey;

@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry registry = super.createRegistry();

KeyStoreParameters keystore = new KeyStoreParameters();
keystore.setPassword("supersecret");
keystore.setResource("./cia_secrets.jceks");
keystore.setType("JCEKS");

KeyStore store = keystore.createKeyStore();
secretKey = store.getKey("ciasecrets", "secret".toCharArray());
registry.bind("secretKey", secretKey);
return registry;
}


@Test
public void testEncryptAndDecryptMessage() throws Exception {
getMockEndpoint("mock:unencrypted").expectedBodiesReceived("Hello World");

template.sendBody("direct:start", "Hello World");

assertMockEndpointsSatisfied();

Exchange exchange = getMockEndpoint("mock:encrypted").getReceivedExchanges().get(0);
assertNotEquals("Hello World", exchange.getIn().getBody());
}

@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
CryptoDataFormat crypto = new CryptoDataFormat("DES", secretKey);

from("direct:start")
.marshal(crypto)
.to("mock:encrypted")
.unmarshal(crypto)
.to("mock:unencrypted");
}
};
}
}
@@ -0,0 +1,75 @@
package org.apache.camel.routepolicy.quartz2;

import java.util.Date;
import java.util.Map;

import org.apache.camel.ServiceStatus;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.component.quartz2.QuartzComponent;
import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.OutHeaders;
import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
import org.apache.camel.spi.RoutePolicy;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

/**
* @version
*/
public class MultiplePoliciesOnRouteTest extends CamelTestSupport {
private String url = "seda:foo?concurrentConsumers=20";
private int size = 100;

@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry registry = new JndiRegistry(createJndiContext());
registry.bind("startPolicy", createRouteStartPolicy());
registry.bind("throttlePolicy", createThrottlePolicy());
return registry;
}

private RoutePolicy createThrottlePolicy() {
ThrottlingInflightRoutePolicy policy = new ThrottlingInflightRoutePolicy();
policy.setMaxInflightExchanges(10);
return policy;
}

public String outHeaders(String name, int amount, String customer, @OutHeaders Map<String, Object> outHeaders) {
outHeaders.put("partName", name);
outHeaders.put("quantity", amount);
outHeaders.put("customer", customer);
return "dummy";
}

@Test
public void testMultiplePoliciesOnRoute() throws Exception {
MockEndpoint success = context.getEndpoint("mock:success", MockEndpoint.class);
success.expectedMinimumMessageCount(size - 10);
success.message(0).outBody().contains("foo");
success.message(0).outBody(String.class).contains("foo");
success.message(0).outHeaders().contains("foo");
context.getComponent("quartz2", QuartzComponent.class).setPropertiesFile("org/apache/camel/routepolicy/quartz2/myquartz.properties");
context.addRoutes(new RouteBuilder() {
public void configure() {
from(url)
.routeId("test")
.routePolicyRef("startPolicy, throttlePolicy")
.to("log:foo?groupSize=10")
.to("mock:success");
}
});
context.start();

assertTrue(context.getRouteStatus("test") == ServiceStatus.Started);
for (int i = 0; i < size; i++) {
template.sendBody(url, "Message " + i);
Thread.sleep(3);
}

context.getComponent("quartz2", QuartzComponent.class).stop();
success.assertIsSatisfied();

}

}

0 comments on commit d03f21d

Please sign in to comment.