Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WINDUPRULE-483,492,498,499,500,509,484,606,429 #449

Merged
merged 13 commits into from Jun 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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">
jonathanvila marked this conversation as resolved.
Show resolved Hide resolved
<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();

}

}