Arquillian Pact Extension 1.0.0.Alpha2 Released

The Arquillian team is proud to announce the 1.0.0.Alpha2 release of the Arquillian Pact Extension component!

Arquillian Pact is an extension that provides an integration between Arquillian and Pact.

What’s new

Maven Loader

Now you can use your own Maven artifact to store contracts (pacts files). Then provider will resolve the artifact and use the files included there.

To use it simply import following dependency:

<dependency>
  <groupId>org.arquillian.pact</groupId>
  <artifactId>arquillian-pact-provider-maven-loader</artifactId>
</dependency>

For example, this is how you can get contracts from a jar file stored in Maven repository. It is important to note that Arquillian Pact always takes the latest version of jar in case of not specifying one concrete version.

@PactMavenDependency(value = "org.superbiz:contract:[1.0,]")
public class MavenLoaderTest {}

Git Loader

You can also fetch your contracts from Git repository. The provider will clone/pull the repo and execute the contracts found there.

To use it simply import following dependency:

<dependency>
  <groupId>org.arquillian.pact</groupId>
  <artifactId>arquillian-pact-provider-git-loader</artifactId>
</dependency>

For example, this is how you can get contracts form a public Git repository:

@PactGit("https://github.com/lordofthejars/starwarspact.git")
public class GitLoaderTest {}

Check @PactGit annotation to see the options for configuring authentication or set a concrete directory inside Git repository.

Output Directory

When writing consumer tests you can now use pactReportDir configuration property to set where contracts are stored.

For example, this is how you can generate contracts into target/contracts directory.

<extension qualifier="pact-consumer">
  <property name="pactReportDir">target/contracts</property>
</extension>

Enrichments

You can use two new Target methods for executing provider tests:

@ArquillianResource
Target target;

target.testInteraction();

Or setting the URL directly instead of configuring it.

@ArquillianResource
Target target;

@ArquillianResource
URL webapp;

target.testInteraction(webapp);

In Alpha1, you need to pass as arguments to testInteraction method the current consumer and the current interaction. These values were injected in test using @CurrentConsumer and @CurrentInteraction annotations.

With these two new methods it is not necessary you enrich the test anymore. Of course these enrichments still work and you can still use methods where consumer and interaction are required if you want more control on the execution.

What is Arquillian?

Arquillian is open source software that empowers you to test JVM-based applications more effectively. Created to defend the software galaxy from bugs, Arquillian brings your test to the runtime so you can focus on testing your application's behavior rather than managing the runtime. Using Arquillian, you can develop a comprehensive suite of tests from the convenience of your IDE and run them in any IDE, build tool or continuous integration environment.

Release details

Component Arquillian Pact Extension
Version 1.0.0.Alpha2 view tag
Release date 2016-09-29
Released by Alex Soto
Compiled against

Published artifacts org.arquillian.pact

  • org.arquillian.pact » arquillian-pact-consumer-api jar javadoc pom
  • org.arquillian.pact » arquillian-pact-consumer-core jar javadoc pom
  • org.arquillian.pact » arquillian-pact-consumer-spi jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-api jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-core jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-spi jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-pact-broker-loader jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-maven-loader jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-git-loader jar javadoc pom

Thanks to the following list of contributors: Alex Soto, Eddú Meléndez Gonzales

Arquillian Universe 1.0.0.Alpha4 Released

The Arquillian team is proud to announce the 1.0.0.Alpha4 release of the Arquillian Universe component!

What is Arquillian Universe?

The Arquillian Universe BOM is a 'Bill of Material' Maven POM file collection that make up a module stack that stretch across the whole Arquillian Universe.

Release details

Component Arquillian Universe
Version 1.0.0.Alpha4 view tag
Release date 2016-09-28
Released by Bartosz Majsak
Compiled against

Published artifacts org.arquillian.universe

  • org.arquillian.universe » arquillian-core pom
  • org.arquillian.universe » arquillian-junit pom
  • org.arquillian.universe » arquillian-junit-standalone pom
  • org.arquillian.universe » arquillian-testng pom
  • org.arquillian.universe » arquillian-testng-standalone pom
  • org.arquillian » arquillian-universe pom
  • org.arquillian.universe » arquillian-drone pom
  • org.arquillian.universe » arquillian-graphene pom
  • org.arquillian.universe » arquillian-graphene-recorder pom
  • org.arquillian.universe » arquillian-warp pom
  • org.arquillian.universe » arquillian-warp-jsf pom
  • org.arquillian.universe » arquillian-transaction-core pom
  • org.arquillian.universe » arquillian-transaction-jta pom
  • org.arquillian.universe » arquillian-persistence-core pom
  • org.arquillian.universe » arquillian-persistence pom
  • org.arquillian.universe » arquillian-spring pom
  • org.arquillian.universe » arquillian-spring-transaction pom
  • org.arquillian.universe » arquillian-spring-persistence pom
  • org.arquillian.universe » arquillian-spring-warp pom
  • org.arquillian.universe » arquillian-governor-core pom
  • org.arquillian.universe » arquillian-governor-jira pom
  • org.arquillian.universe » arquillian-governor-github pom
  • org.arquillian.universe » arquillian-governor-redmine pom
  • org.arquillian.universe » arquillian-governor-skipper pom
  • org.arquillian.universe » arquillian-governor-ignore pom
  • org.arquillian.universe » arquillian-byteman pom
  • org.arquillian.universe » arquillian-jacoco pom
  • org.arquillian.universe » arquillian-recorder-api pom
  • org.arquillian.universe » arquillian-recorder pom
  • org.arquillian.universe » arquillian-rest-core pom
  • org.arquillian.universe » arquillian-rest-resteasy2 pom
  • org.arquillian.universe » arquillian-rest-resteasy3 pom
  • org.arquillian.universe » arquillian-rest-jaxrs2 pom
  • org.arquillian.universe » arquillian-rest-jersey pom
  • org.arquillian.universe » arquillian-rest-warp-core pom
  • org.arquillian.universe » arquillian-rest-warp-resteasy pom
  • org.arquillian.universe » arquillian-rest-warp-jaxrs2 pom
  • org.arquillian.universe » arquillian-rest-warp-jersey pom
  • org.arquillian.universe » arquillian-rest-warp-cxf pom
  • org.arquillian.universe » arquillian-spacelift pom
  • org.arquillian.universe » arquillian-chameleon pom
  • org.arquillian.universe » arquillian-cube-core pom
  • org.arquillian.universe » arquillian-cube-docker pom
  • org.arquillian.universe » arquillian-cube-openshift pom
  • org.arquillian.universe » arquillian-cube-containerless pom
  • org.arquillian.universe » arquillian-cube-kubernetes pom
  • org.arquillian.universe » arquillian-cukes pom
  • org.arquillian.universe » arquillian-cube-q-pumba pom
  • org.arquillian.universe » arquillian-cube-q-simianarmy pom
  • org.arquillian.universe » arquillian-cube-q-toxic pom
  • org.arquillian.universe » arquillian-pact-consumer pom
  • org.arquillian.universe » arquillian-pact-provider pom
  • org.arquillian.universe » arquillian-test jar javadoc pom

Thanks to the following list of contributors: Bartosz Majsak, Matous Jobanek, Eddú Meléndez Gonzales, Aslak Knutsen, Andrew Glick, Alex Soto

Arquillian Pact Extension 1.0.0.Alpha1 Released

The Arquillian team is proud to announce the 1.0.0.Alpha1 release of the Arquillian Pact Extension component!

This is the first release of Arquillian Pact. This extension provides an integration between Arquillian and Pact.

Pact is a framework that provides support for Consumer Driven Contracts testing. You can read more about Consumer Driven Contracts in this interesting blog post or in our upcoming book Testing Java Microservices.

Full documentation of the project can be found at http://arquillian.org/arquillian-pact/

Consumer

First thing to do is to develop the Consumer part of the test. Consumer part of Consumer-Driven Contract defines requirements from the consumer of the API which are then used to develop the client interaction with the API as well as to validate provider implementation.

Dependencies

<dependencies>
    <dependency>
        <groupId>org.arquillian.pact</groupId>
        <artifactId>arquillian-pact-consumer-core</artifactId>
        <version>${version.arquillian_pact}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>au.com.dius</groupId>
        <artifactId>pact-jvm-consumer_2.11</artifactId>
        <scope>test</scope>
        <version>3.5.0-beta.1</version>
    </dependency>
</dependencies>

Test

@RunWith(Arquillian.class)
public class ClientGatewayTest {

    @Deployment
    public static JavaArchive createDeployment() {
        return ShrinkWrap.create(JavaArchive.class).addClasses(ClientGateway.class);
    }

    @Pact(provider="test_provider", consumer="test_consumer")
    public PactFragment createFragment(PactDslWithProvider builder) {

        Map<String, String> header = new HashMap<>();
        header.put("Content-Type", "application/json");

        return builder
                .given("test state")
                .uponReceiving("ConsumerTest test interaction")
                .path("/")
                .method("GET")
                .willRespondWith()
                .status(200)
                .headers(header)
                .body("{\"responsetest\": true, \"name\": \"harry\"}")
                .toFragment(); (4)
    }

    @EJB
    ClientGateway clientGateway;
    
    @Test 
    @PactVerification("test_provider")
    public void should_return_message() throws IOException {
        assertThat(clientGateway.getMessage(), is("{\"responsetest\": true, \"name\": \"harry\"}"));
    }
}

You can see more examples in the GitHub repository.

Provider

The next thing you need to do is share the contract (aka “pact” file) with Provider project and validate that provider produces the expected responses to defined requests. This is done by replaying all requests defined in contract against real provider and validating that the response is the expected one.

We currently support following locations of the contracts:

  • an arbitrary URL
  • Pact Broker – repository of the contracts
  • local directory

Dependencies

<dependency>
    <groupId>org.arquillian.pact</groupId>
    <artifactId>arquillian-pact-provider-core</artifactId>
    <scope>test</scope>
    <version>${version.arquillian_pact}</version>
</dependency>
<dependency>
    <groupId>au.com.dius</groupId>
    <artifactId>pact-jvm-provider_2.11</artifactId>
    <scope>test</scope>
    <version>3.5.0-beta.1</version>
</dependency>

Test

@RunWith(Arquillian.class)
@Provider("test_provider")
@PactFolder("pacts")
public class MyServiceProviderTest {

    @Deployment(testable = false)
    public static WebArchive createDeployment() {
        return ShrinkWrap.create(WebArchive.class).addClass(MyService.class);
    }

    @CurrentConsumer
    Consumer consumer;

    @CurrentInteraction
    RequestResponseInteraction interaction;

    @ArquillianResource
    URL webapp;

    @ArquillianResource
    Target target;

    @Test
    public void should_provide_valid_answers() {
        target.testInteraction(webapp, consumer.getName(), interaction);
    }

}

You can see full example in our GitHub repository.

What is Arquillian?

Arquillian is open source software that empowers you to test JVM-based applications more effectively. Created to defend the software galaxy from bugs, Arquillian brings your test to the runtime so you can focus on testing your application's behavior rather than managing the runtime. Using Arquillian, you can develop a comprehensive suite of tests from the convenience of your IDE and run them in any IDE, build tool or continuous integration environment.

Release details

Component Arquillian Pact Extension
Version 1.0.0.Alpha1 view tag
Release date 2016-09-21
Released by Alex Soto
Compiled against

Published artifacts org.arquillian.pact

  • org.arquillian.pact » arquillian-pact-consumer-api jar javadoc pom
  • org.arquillian.pact » arquillian-pact-consumer-core jar javadoc pom
  • org.arquillian.pact » arquillian-pact-consumer-spi jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-api jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-core jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-spi jar javadoc pom
  • org.arquillian.pact » arquillian-pact-provider-pact-broker-loader jar javadoc pom

Thanks to the following list of contributors: Alex Soto

Arquillian Governor 1.0.4.Final Released

The Arquillian team is proud to announce the 1.0.4.Final release of the Arquillian Governor component!

Arquillian Recorder integration with Arquillian Governor

In this release we are providing Arquillian Recorder integration with JIRA, GitHub and Redmine Governor.

Arquillian Recorder project brings neat reports for your Arquillian tests. Arquillian Governor Extension gives you the possibility to programmatically choose what test methods of your Arquillian tests are going to be executed and what are going to be skipped by putting your custom annotations on the test methods.

We are providing an integration of Recorder with Governor so that generated tests reports contains all relevant information used by Governor.

Let’s see it in action for Arquillian JIRA Governor:

@RunWith(Arquillian.class)
public class TestCase {
    
    @Test
    @Jira("ARQ-5000", force = true)
    public void run_test_without_relying_on_the_issue_status() {
        // ...
    }

    @Test
    @Jira(value = "ARQ-1000", detector = @Detector(Windows.class))
    public void run_only_if_issue_is_closed_and_windows_is_used() {
        // ...
    }
}

Let’s break this test down to see what is going on under the hood.

  • First test will run disregard of the issue status. This is useful when you work on a particular task and don’t want Governor to skip its execution. Using force = true will make it happen.
  • Second test will only be executed if issue ARQ-1000 is closed and the test is executed in Windows environment. Second aspect is handled by the @Detector mechanism.
  • At the end Reporter will generate a report with all relevant information including links between tests and issues, environment specific tests etc.

To decide what tests should be executed using JIRA issues, include following dependency:

<dependency>
    <groupId>org.arquillian.extension</groupId>
    <artifactId>arquillian-governor-jira</artifactId>
    <version>${version.jira.governor}</version>
    <scope>test</scope>
</dependency>

In the same way, if you want to use GitHub issues:

<dependency>
    <groupId>org.arquillian.extension</groupId>
    <artifactId>arquillian-governor-github</artifactId>
    <version>${version.github.governor}</version>
    <scope>test</scope>
</dependency>

And last but not least, to use Redmine governor:

<dependency>
    <groupId>org.arquillian.extension</groupId>
    <artifactId>arquillian-governor-redmine</artifactId>
    <version>${version.redmine.governor}</version>
    <scope>test</scope>
</dependency>

And to have it all covered with reports, add this dependency:

<dependency>
  <groupId>org.arquillian.extension</groupId>
  <artifactId>arquillian-recorder-reporter-impl</artifactId>
  <version>${version.arquillian.recorder}</version>
  <scope>test</scope>
</dependency>

You can read more about Arquillian Recorder integration with Jira Governor in the Arquillian Recorder Integration Section with Jira, GitHub Governor in the Arquillian Recorder Integration section with GitHub, Redmine Governor in the Arquillian Recorder Integration section with Redmine.

What is Arquillian?

Arquillian is open source software that empowers you to test JVM-based applications more effectively. Created to defend the software galaxy from bugs, Arquillian brings your test to the runtime so you can focus on testing your application's behavior rather than managing the runtime. Using Arquillian, you can develop a comprehensive suite of tests from the convenience of your IDE and run them in any IDE, build tool or continuous integration environment.

Release details

Component Arquillian Governor
Version 1.0.4.Final view tag
Release date 2016-09-27
Released by Bartosz Majsak
Compiled against

Published artifacts org.arquillian.extension

  • org.arquillian.extension » arquillian-governor-spi jar javadoc pom
  • org.arquillian.extension » arquillian-governor-api jar javadoc pom
  • org.arquillian.extension » arquillian-governor jar javadoc pom
  • org.arquillian.extension » arquillian-governor-jira jar javadoc pom
  • org.arquillian.extension » arquillian-governor-skipper jar javadoc pom
  • org.arquillian.extension » arquillian-governor-github jar javadoc pom
  • org.arquillian.extension » arquillian-governor-redmine jar javadoc pom
  • org.arquillian.extension » arquillian-governor-ignore jar javadoc pom

Release notes and resolved issues 1

Other

Thanks to the following list of contributors: Bartosz Majsak, Dipak Pawar

Arquillian Recorder 1.1.4.Final Released

The Arquillian team is proud to announce the 1.1.4.Final release of the Arquillian Recorder component!

What is Arquillian?

Arquillian is open source software that empowers you to test JVM-based applications more effectively. Created to defend the software galaxy from bugs, Arquillian brings your test to the runtime so you can focus on testing your application's behavior rather than managing the runtime. Using Arquillian, you can develop a comprehensive suite of tests from the convenience of your IDE and run them in any IDE, build tool or continuous integration environment.

Release details

Component Arquillian Recorder
Version 1.1.4.Final view tag
Release date 2016-09-20
Released by Alex Soto
Compiled against

Published artifacts org.arquillian.extension

  • org.arquillian.extension » arquillian-recorder-api jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-spi jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-reporter-api jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-reporter-spi jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-reporter-impl jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-screenshooter-api jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-screenshooter-spi jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-screenshooter-impl-base jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-video-api jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-video-spi jar javadoc pom
  • org.arquillian.extension » arquillian-recorder-video-impl-base jar javadoc pom
  • org.arquillian.extension » arquillian-desktop-video-recorder jar javadoc pom

Thanks to the following list of contributors: Alex Soto, Dipak Pawar, Stefan Miklosovic, Tim Peeters