Skip to content

marek130/terraform-provider-runscope

 
 

Repository files navigation

Build Status

Terraform Runscope Provider

The Runscope provider is used to create and manage Runscope tests using the official Runscope API

Requirements

  • Terraform 0.10.x
  • Go 1.9 (to build the provider plugin)

Installing

See the Plugin Basics page of the Terraform docs to see how to plug this into your config. Check the releases page of this repository to get releases for Linux, OS X, and Windows.

Usage

The following section details the use of the provider and its resources.

These docs are derived from the middleman templates that were created for the PR itself, and can be found in their original form here.

Example Usage

The below example is an end-to-end demonstration of the setup of a basic runscope test:

Creating a test with a step

resource "runscope_step" "main_page" {
  bucket_id      = "${runscope_bucket.bucket.id}"
  test_id        = "${runscope_test.test.id}"
  step_type      = "request"
  url            = "http://example.com"
  method         = "GET"
  variables      = [
  	{
  	   name     = "httpStatus"
  	   source   = "response_status"
  	},
  	{
  	   name     = "httpContentEncoding"
  	   source   = "response_header"
  	   property = "Content-Encoding"
  	},
  ]
  assertions     = [
  	{
  	   source     = "response_status"
       comparison = "equal_number"
       value      = "200"
  	},
  	{
  	   source     = "response_json"
       comparison = "equal"
       value      = "c5baeb4a-2379-478a-9cda-1b671de77cf9",
       property   = "data.id"
  	},
  ],
  headers        = [
  	{
  		header = "Accept-Encoding",
  		value  = "application/json"
  	},
  	{
  		header = "Accept-Encoding",
  		value  = "application/xml"
  	},
  	{
  		header = "Authorization",
  		value  = "Bearer bb74fe7b-b9f2-48bd-9445-bdc60e1edc6a",
	}
  ]
}

resource "runscope_test" "test" {
  bucket_id   = "${runscope_bucket.bucket.id}"
  name        = "runscope test"
  description = "This is a test test..."
}

resource "runscope_bucket" "bucket" {
  name      = "terraform-provider-test"
  team_uuid = "dfb75aac-eeb3-4451-8675-3a37ab421e4f"
}

Argument Reference

The following arguments are supported:

  • bucket_id - (Required) The id of the bucket to associate this step with.
  • test_id - (Required) The id of the test to associate this step with.
  • step_type - (Required) The type of step.
  • request
  • pause
  • condition
  • ghost
  • subtest

Request steps

When creating a request type of step the additional arguments also apply:

  • method - (Required) The HTTP method for this request step.
  • variables - (Optional) A list of variables to extract out of the HTTP response from this request. Variables documented below.
  • assertions - (Optional) A list of assertions to apply to the HTTP response from this request. Assertions documented below.
  • headers - (Optional) A list of headers to apply to the request. Headers documented below.
  • body - (Optional) A string to use as the body of the request.

Variables (variables) supports the following:

  • name - (Required) Name of the variable to define.
  • property - (Required) The name of the source property. i.e. header name or json path
  • source - (Required) The variable source, for list of allowed values see: https://www.runscope.com/docs/api/steps#assertions

Assertions (assertions) supports the following:

Example Assertions

Status Code == 200

"assertions": [
    {
        "source": "response_status",
        "comparison": "equal_number",
        "value": 200
    }
]

JSON element 'address' contains the text "avenue"

"assertions": [
    {
        "source": "response_json",
        "property": "address",
        "comparison": "contains",
        "value": "avenue"
    }
]

Response Time is faster than 1 second.

"assertions": [
    {
        "source": "response_time",
        "comparison": "is_less_than",
        "value": 1000
    }
]

The headers list supports the following:

  • header - (Required) The name of the header
  • value - (Required) The name header value

Attributes Reference

The following attributes are exported:

  • id - The ID of the step.

Developing

Building The Provider

Clone repository to: $GOPATH/src/github.com/terraform-providers/terraform-provider-runscope

$ mkdir -p $GOPATH/src/github.com/terraform-providers; cd $GOPATH/src/github.com/terraform-providers
$ git clone git@github.com:terraform-providers/terraform-provider-runscope

Enter the provider directory and build the provider

$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-runscope
$ make build

Using the provider

See examples

See runscope providers documentation

Developing the Provider

If you wish to work on the provider, you'll first need Go installed on your machine (version 1.9+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin to your $PATH.

To compile the provider, run make build. This will build the provider and put the provider binary in the $GOPATH/bin directory.

$ make build
...
$ $GOPATH/bin/terraform-provider-runscope
...

Running the integration tests

make TF_ACC=1 RUNSCOPE_TEAM_ID=xxx RUNSCOPE_ACCESS_TOKEN=xxx RUNSCOPE_INTEGRATION_DESC="Slack: #test1 channel, send message on all test runs"

Environment variables Description
TF_ACC 1 runs acceptance tests, do not set to skip acceptance tests
RUNSCOPE_TEAM_ID Runscope team uuid
RUNSCOPE_ACCESS_TOKEN Runscope access token
RUNSCOPE_INTEGRATION_DESC Description that matches a pre-existing runscope integration associated with your account

Releasing

Releases are automatically setup to go out from the master branch after a build is made on master with a tag.

To perform a release simply create a tag: git tag -a v0.0.2 -m "Release message"

Then push your tag: git push origin v0.0.2

That's it, the build will now run and create a new release on github :

Packages

No packages published

Languages

  • Go 89.6%
  • HTML 3.6%
  • Makefile 3.5%
  • Shell 3.3%