{"id":19736105,"url":"https://github.com/arnauld/bidij","last_synced_at":"2026-05-26T16:04:31.165Z","repository":{"id":21134862,"uuid":"24435875","full_name":"Arnauld/bidij","owner":"Arnauld","description":"Behavior Driven Infrastructure support for Java","archived":false,"fork":false,"pushed_at":"2014-11-06T23:41:33.000Z","size":452,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-10T18:55:33.940Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Arnauld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-24T23:10:20.000Z","updated_at":"2015-01-12T11:05:48.000Z","dependencies_parsed_at":"2022-08-27T00:11:34.702Z","dependency_job_id":null,"html_url":"https://github.com/Arnauld/bidij","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arnauld%2Fbidij","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arnauld%2Fbidij/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arnauld%2Fbidij/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arnauld%2Fbidij/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Arnauld","download_url":"https://codeload.github.com/Arnauld/bidij/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241062520,"owners_count":19902904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T01:05:16.903Z","updated_at":"2026-05-26T16:04:26.123Z","avatar_url":"https://github.com/Arnauld.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Behavior Driven Infrastructure for java\n\n## What?\n\nA cucumber-nagios port to java, predefined steps for Java/Cucumber\n\n* HTTP\n* JDBC\n* SSH\n* Process\n\n## Maven\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.technbolts\u003c/groupId\u003e\n  \u003cartifactId\u003ebidij\u003c/artifactId\u003e\n  \u003cversion\u003e0.2.1\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n\n### Http example\n\n```cucumber\nScenario: Server deployed and configured with https\n\n    Given an host set to \"https://12.4.0.19:8083\"\n     When a GET request is made to \"/auth/users\"\n     Then the response status code should be 401 (Unauthorized)\n```\n\n```cucumber\nScenario: GET on https with basic auth specifying credentials\n\n    Given a sample server running on port 8080 and on secure port 8083\n    Given an host set to \"https://localhost:8083\"\n    And basic auth credentials set to \"carmen\" and \"mccallum\"\n    When a GET request is made to \"/auth/users\" with the following parameters:\n      | parameter name | parameter value        |\n      | offset         | 50                     |\n      | limit          | 10                     |\n      | filter         | { :name \"/john (.*)/\"} |\n    Then the response status code should be 200 (OK)\n```\n\nRunner\n\n```java\n@RunWith(Cucumber.class)\n@CucumberOptions(\n        glue = {\"myapplication.steps\",   \n                \"bdi.glue.http.common\",       // predefined http steps\n                \"bdi.glue.http.httpclient\"},  // httpclient implementation\n        format = \"tzatziki.analysis.exec.gson.JsonEmitterReport:target/http\")\npublic class RunFeatures {\n}\n```\n\n### Ssh Example\n\n```cucumber\nScenario: SSH authentication with private key\n\n    # e.g. \"~/.ssh/id_dsa\"\n    Given a ssh private key at \"~/.vagrant.d/insecure_private_key\" with no passphrase\n    And an interactive ssh session opened on \"127.0.0.1:2222\" with the following credentials:\n      | username |\n      | vagrant  |\n    When through ssh, I run `ls -al`\n    Then within 5 seconds, the ssh session output should contain \".vbox_version\"\n```\n\n```java\n@RunWith(Cucumber.class)\n@CucumberOptions(\n        glue = {\"myapplication.steps\",\n                \"bdi.glue.ssh.common\",   // predefined ssh steps\n                \"bdi.glue.env\"},\n        format = \"tzatziki.analysis.exec.gson.JsonEmitterReport:target/ssh\")\npublic class RunFeatures {\n}\n```\n\n### Jdbc Examples\n\n```cucumber\nScenario: Jdbc Configuration\n\n    Given the following jdbc configurations:\n      | configuration name | driver        | url                               | username | password |\n      | server_mode        | org.h2.Driver | jdbc:h2:tcp://localhost/~/test    | pif      | pifp     |\n      | in_memory          | org.h2.Driver | jdbc:h2:mem:test                  | sa       | sa       |\n      | file               | org.h2.Driver | jdbc:h2:${workingDir}/db_${idgen} | sa       | sa       |\n    And a sample database running using configuration \"file\"\n\n    Given the \"file\" jdbc configuration has been applied\n    When a query is made on table \"user\"\n    Then the number of rows returned should be greater than 0\n```\n\n```java\n@RunWith(Cucumber.class)\n@CucumberOptions(\n        glue = {\"myapplication.steps\",\n                \"bdi.glue.jdbc.common\"},\n        format = \"tzatziki.analysis.exec.gson.JsonEmitterReport:target/jdbc\")\npublic class JdbcFeatures {\n}\n```\n\n### More examples\n\nLook at the [generated pdf](doc/features.pdf)\n\n### Worlds and IOC\n\n**bidij** make an heavy use of the cucumber's `world` concept.\nEach universe (http, jdbc, proc, ssh, ...) has its own `World` class: `bdi.glue.jdbc.common.JdbcWorld`, \n`bdi.glue.http.common.HttpWorld`, ...\n\n**This allow to share and to customize settings by user defined steps.**\n\nThis is easily and automatically accomplished through pico-container:\n\n```xml\n \u003cdependency\u003e\n     \u003cgroupId\u003einfo.cukes\u003c/groupId\u003e\n     \u003cartifactId\u003ecucumber-picocontainer\u003c/artifactId\u003e\n     \u003cversion\u003e${cucumber.version}\u003c/version\u003e\n \u003c/dependency\u003e\n```\n\n\n#### Customize default HTTP basic auth from a custom properties file.\n\n```java\npublic class MyApplicationStepdefs {\n\n    private final HttpWorld httpWorld;\n    private TestSettings testSettings;\n    \n    public MyApplicationStepdefs(HttpWorld httpWorld) {\n        this.httpWorld = httpWorld;\n    }\n    \n    @Before\n    public void loadSettings () {\n        testSettings = TestSettings.load();\n    }\n\n    @Given(\"^default basic auth credentials set$\")\n    public void default_basic_auth_credentials_set() throws Throwable {\n        httpWorld.currentRequestBuilder()\n                .basicAuthCredentials(\n                        testSettings.getProperty(\"username\"),\n                        testSettings.getProperty(\"password\"));\n    }\n}\n```\n\n#### Customize JDBC settings from a custom properties file.\n\n```java\npublic class MyApplicationStepdefs {\n\n    private final JdbcWorld jdbcWorld;\n    private final VariableResolver variableResolver;\n\n    public MyApplicationStepdefs(JdbcWorld jdbcWorld, VariableResolver variableResolver) {\n        this.jdbcWorld = jdbcWorld;\n        this.variableResolver = variableResolver;\n    }\n    \n    @Given(\"^a sample database running and defining \\\"([^\\\"]*)\\\" jdbc configuration$\")\n    public void sampleDBAndStoreAndKeepPArametersUsing(String confName) throws Throwable {\n        SampleDB sampleDB = SampleDB.createFromWorkingDirAndDefaultCredentials(new TestSettings().buildDir());\n        sampleDB.init();\n        jdbcWorld.defineConfAndSetAsCurrent(\n                confName,\n                new JdbcConf(sampleDB.driver(),\n                        sampleDB.url(),\n                        sampleDB.username(),\n                        sampleDB.password())\n        );\n    }\n}\n```\n\n\n# Inspirations\n\n* [Yes Mum, I'll Behave: Beginning Behaviour Driven Infrastructure](http://kartar.net/2009/12/yes-mum-ill-behave-beginning-behaviour-driven-infrastructure/)\n* [BEHAVIOUR DRIVEN INFRASTRUCTURE THROUGH CUCUMBER](http://fractio.nl/2009/11/09/behaviour-driven-infrastructure-through-cucumber/)\n* [cucumber-nagios](http://auxesis.github.io/cucumber-nagios/)\n\n\nRelease\n-------\n\n[Maven Release Plugin: The Final Nail in the Coffin](http://axelfontaine.com/blog/final-nail.html)\n\n```bash\n    mvn versions:set -DnewVersion=1.0.1\n    mvn clean deploy scm:tag -Psign-artifacts\n    git status\n    git add .\n    git commit -m \"bidij 1.0.1\"\n    mvn versions:set -DnewVersion=1.0.2-SNAPSHOT\n    git add .\n    git commit -m \"bidij 1.0.2-snapshot\"\n    git push\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnauld%2Fbidij","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farnauld%2Fbidij","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnauld%2Fbidij/lists"}