defaults:
  request_headers:
    X-Auth-Token: $ENVIRON['OS_TOKEN']

tests:
- name: create stack with resources
  POST: /stacks
  request_headers:
    content-type: application/json
  data:
    files: {}
    disable_rollback: true
    parameters: {}
    stack_name: $ENVIRON['PREFIX']-rsrcstack
    template:
      heat_template_version: '2016-04-08'
      parameters:
        test_val:
          type: string
          default: test
      resources:
        test:
          type: OS::Heat::TestResource
          properties:
            value: {get_param: test_val}

  status: 201
  response_headers:
    location: //stacks/$ENVIRON['PREFIX']-rsrcstack/[a-f0-9-]+/

- name: poll for rsrcstack CREATE_COMPLETE
  GET: $LOCATION
  redirects: True
  poll:
    count: 5
    delay: 1.0
  response_json_paths:
    $.stack.stack_status: CREATE_COMPLETE

- name: list resources
  GET: $LAST_URL/resources
  request_headers:
    content-type: application/json
  status: 200
  response_json_paths:
    $.resources[0].logical_resource_id: test
    $.resources[0].resource_status: CREATE_COMPLETE

- name: list filtered resources
  GET: $LAST_URL
  request_headers:
    content-type: application/json
  query_parameters:
    type: OS::Nova::Server
  status: 200
  response_json_paths:
    $.resources: []

- name: show resource
  GET: $LAST_URL/test
  request_headers:
    content-type: application/json
  status: 200
  response_json_paths:
    $.resource.attributes.output: test

- name: mark resource unhealthy
  PATCH: $LAST_URL
  request_headers:
    content-type: application/json
  data:
    mark_unhealthy: true
    resource_status_reason: 'resource deleted'
  status: 200

- name: show unhealthy resource
  GET: $LAST_URL
  status: 200
  response_json_paths:
    $.resource.resource_status: CHECK_FAILED
    $.resource.resource_status_reason: 'resource deleted'

- name: signal resource
  POST: $LAST_URL/signal
  status: 400

- name: delete stack with resources
  DELETE: /stacks/$ENVIRON['PREFIX']-rsrcstack
  redirects: True
  status: 204