This is an automated email from the ASF dual-hosted git repository. bdelacretaz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit 63c34606841a1bb1fb7c6f1f2c92037f8551700a Author: Bertrand Delacretaz <[email protected]> AuthorDate: Thu Jul 26 16:05:50 2018 +0200 Karate skeleton, from mvn archetype --- literate-http-testing/karate/pom.xml | 56 ++++++++++++++++++++++ .../src/test/java/examples/ExamplesTest.java | 11 +++++ .../src/test/java/examples/users/UsersRunner.java | 9 ++++ .../src/test/java/examples/users/users.feature | 54 +++++++++++++++++++++ .../karate/src/test/java/karate-config.js | 18 +++++++ .../karate/src/test/java/logback-test.xml | 24 ++++++++++ 6 files changed, 172 insertions(+) diff --git a/literate-http-testing/karate/pom.xml b/literate-http-testing/karate/pom.xml new file mode 100644 index 0000000..8c17fba --- /dev/null +++ b/literate-http-testing/karate/pom.xml @@ -0,0 +1,56 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.httptesting.karate</artifactId> + <version>0.0.1-SNAPSHOT</version> + <packaging>jar</packaging> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <java.version>1.8</java.version> + <maven.compiler.version>3.6.0</maven.compiler.version> + <karate.version>0.8.0</karate.version> + </properties> + + <dependencies> + <dependency> + <groupId>com.intuit.karate</groupId> + <artifactId>karate-apache</artifactId> + <version>${karate.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.intuit.karate</groupId> + <artifactId>karate-junit4</artifactId> + <version>${karate.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <testResources> + <testResource> + <directory>src/test/java</directory> + <excludes> + <exclude>**/*.java</exclude> + </excludes> + </testResource> + </testResources> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>${maven.compiler.version}</version> + <configuration> + <encoding>UTF-8</encoding> + <source>${java.version}</source> + <target>${java.version}</target> + <compilerArgument>-Werror</compilerArgument> + </configuration> + </plugin> + </plugins> + </build> + +</project> \ No newline at end of file diff --git a/literate-http-testing/karate/src/test/java/examples/ExamplesTest.java b/literate-http-testing/karate/src/test/java/examples/ExamplesTest.java new file mode 100644 index 0000000..7dc66d0 --- /dev/null +++ b/literate-http-testing/karate/src/test/java/examples/ExamplesTest.java @@ -0,0 +1,11 @@ +package examples; + +import com.intuit.karate.junit4.Karate; +import org.junit.runner.RunWith; + +@RunWith(Karate.class) +public class ExamplesTest { + // this will run all *.feature files that exist in sub-directories + // refer to https://github.com/intuit/karate#naming-conventions + // for folder-structure recommendations and naming conventions +} \ No newline at end of file diff --git a/literate-http-testing/karate/src/test/java/examples/users/UsersRunner.java b/literate-http-testing/karate/src/test/java/examples/users/UsersRunner.java new file mode 100644 index 0000000..02992f4 --- /dev/null +++ b/literate-http-testing/karate/src/test/java/examples/users/UsersRunner.java @@ -0,0 +1,9 @@ +package examples.users; + +import com.intuit.karate.junit4.Karate; +import org.junit.runner.RunWith; + +@RunWith(Karate.class) +public class UsersRunner { + +} \ No newline at end of file diff --git a/literate-http-testing/karate/src/test/java/examples/users/users.feature b/literate-http-testing/karate/src/test/java/examples/users/users.feature new file mode 100644 index 0000000..ddba1d0 --- /dev/null +++ b/literate-http-testing/karate/src/test/java/examples/users/users.feature @@ -0,0 +1,54 @@ +Feature: sample karate test script + If you are using Eclipse, install the free Cucumber-Eclipse plugin from + https://cucumber.io/cucumber-eclipse/ + Then you will see syntax-coloring for this file. But best of all, + you will be able to right-click within this file and [Run As -> Cucumber Feature]. + If you see warnings like "does not have a matching glue code", + go to the Eclipse preferences, find the 'Cucumber User Settings' + and enter the following Root Package Name: com.intuit.karate + Refer to the Cucumber-Eclipse wiki for more: http://bit.ly/2mDaXeV + +Background: +* url 'https://jsonplaceholder.typicode.com' + +Scenario: get all users and then get the first user by id + +Given path 'users' +When method get +Then status 200 + +* def first = response[0] + +Given path 'users', first.id +When method get +Then status 200 + +Scenario: create a user and then get it by id + +* def user = +""" +{ + "name": "Test User", + "username": "testuser", + "email": "[email protected]", + "address": { + "street": "Has No Name", + "suite": "Apt. 123", + "city": "Electri", + "zipcode": "54321-6789" + } +} +""" + +Given url 'https://jsonplaceholder.typicode.com/users' +And request user +When method post +Then status 201 + +* def id = response.id +* print 'created id is: ' + id + +Given path id +# When method get +# Then status 200 +# And match response contains user \ No newline at end of file diff --git a/literate-http-testing/karate/src/test/java/karate-config.js b/literate-http-testing/karate/src/test/java/karate-config.js new file mode 100644 index 0000000..1c5e763 --- /dev/null +++ b/literate-http-testing/karate/src/test/java/karate-config.js @@ -0,0 +1,18 @@ +function() { + var env = karate.env; // get system property 'karate.env' + karate.log('karate.env system property was:', env); + if (!env) { + env = 'dev'; + } + var config = { + env: env, + myVarName: 'someValue' + } + if (env == 'dev') { + // customize + // e.g. config.foo = 'bar'; + } else if (env == 'e2e') { + // customize + } + return config; +} \ No newline at end of file diff --git a/literate-http-testing/karate/src/test/java/logback-test.xml b/literate-http-testing/karate/src/test/java/logback-test.xml new file mode 100644 index 0000000..fea195e --- /dev/null +++ b/literate-http-testing/karate/src/test/java/logback-test.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> + </encoder> + </appender> + + <appender name="FILE" class="ch.qos.logback.core.FileAppender"> + <file>target/karate.log</file> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> + </encoder> + </appender> + + <logger name="com.intuit" level="DEBUG"/> + + <root level="info"> + <appender-ref ref="STDOUT" /> + <appender-ref ref="FILE" /> + </root> + +</configuration> \ No newline at end of file
