Skip to content
This repository was archived by the owner on Dec 9, 2020. It is now read-only.

Resubmit GH17 #36

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 33 additions & 7 deletions runscope/resource_runscope_test_.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,27 @@ func resourceRunscopeTest() *schema.Resource {
},
"default_environment_id": {
Type: schema.TypeString,
Computed: true,
Optional: true,
},
},
}
}

func resourceRequiresTwoPhase(d *schema.ResourceData) bool {

if _, ok := d.GetOk("default_environment_id"); ok {
return true
}
return false
}

func resourceTestCreate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*runscope.Client)

name := d.Get("name").(string)
log.Printf("[INFO] Creating test with name: %s", name)

test, err := createTestFromResourceData(d)
test, err := createTestFromResourceData(d, true)
if err != nil {
return fmt.Errorf("Failed to create test: %s", err)
}
Expand All @@ -60,6 +68,17 @@ func resourceTestCreate(d *schema.ResourceData, meta interface{}) error {
if err != nil {
return fmt.Errorf("Failed to create test: %s", err)
}
if resourceRequiresTwoPhase(d) {
testUpdate, err := createTestFromResourceData(d, false)
if err != nil {
return fmt.Errorf("Failed to create test: %s", err)
}
updatedTest, err := client.UpdateTest(testUpdate)
if err != nil {
return fmt.Errorf("Failed to create test: %s", err)
}
createdTest = updatedTest
}

d.SetId(createdTest.ID)
log.Printf("[INFO] test ID: %s", d.Id())
Expand All @@ -70,7 +89,7 @@ func resourceTestCreate(d *schema.ResourceData, meta interface{}) error {
func resourceTestRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*runscope.Client)

testFromResource, err := createTestFromResourceData(d)
testFromResource, err := createTestFromResourceData(d, false)
if err != nil {
return fmt.Errorf("Error reading test: %s", err)
}
Expand All @@ -93,12 +112,13 @@ func resourceTestRead(d *schema.ResourceData, meta interface{}) error {

func resourceTestUpdate(d *schema.ResourceData, meta interface{}) error {
d.Partial(false)
testFromResource, err := createTestFromResourceData(d)
testFromResource, err := createTestFromResourceData(d, true)
if err != nil {
return fmt.Errorf("Error updating test: %s", err)
}

if d.HasChange("description") {
if d.HasChange("description") ||
d.HasChange("default_environment_id") {
client := meta.(*runscope.Client)
_, err = client.UpdateTest(testFromResource)

Expand All @@ -113,7 +133,7 @@ func resourceTestUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceTestDelete(d *schema.ResourceData, meta interface{}) error {
client := meta.(*runscope.Client)

test, err := createTestFromResourceData(d)
test, err := createTestFromResourceData(d, false)
if err != nil {
return fmt.Errorf("Error deleting test: %s", err)
}
Expand All @@ -126,7 +146,7 @@ func resourceTestDelete(d *schema.ResourceData, meta interface{}) error {
return nil
}

func createTestFromResourceData(d *schema.ResourceData) (*runscope.Test, error) {
func createTestFromResourceData(d *schema.ResourceData, init bool) (*runscope.Test, error) {

test := runscope.NewTest()
test.ID = d.Id()
Expand All @@ -141,6 +161,12 @@ func createTestFromResourceData(d *schema.ResourceData) (*runscope.Test, error)
if attr, ok := d.GetOk("description"); ok {
test.Description = attr.(string)
}
// attributes that require create-then-update cycle
if !init {
if attr, ok := d.GetOk("default_environment_id"); ok {
test.DefaultEnvironmentID = attr.(string)
}
}

return test, nil
}
27 changes: 27 additions & 0 deletions runscope/resource_runscope_test_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,37 @@ func testAccCheckTestExists(n string, test *runscope.Test) resource.TestCheckFun
}

const testRunscopeTestConfigA = `
resource "runscope_environment" "environmentA" {
bucket_id = "${runscope_bucket.bucket.id}"
name = "test-environment"

integrations = [
"${data.runscope_integration.slack.id}"
]

initial_variables {
var1 = "true",
var2 = "value2"
}

regions = ["us1", "eu1"]

remote_agents = [
{
name = "test agent"
uuid = "arbitrary-string"
}
]

retry_on_failure = true
webhooks = ["https://example.com"]
}

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

resource "runscope_bucket" "bucket" {
Expand Down
3 changes: 2 additions & 1 deletion website/docs/r/test.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@ The following arguments are supported:
* `name` - (String, Required) The name of this test.
* `description` - (String, Optional) Human-readable description of the new test.
is being created for.

* `default_environment_id` - (String, Optional) ID of an environment to set as default for test steps
## Attributes Reference

The following attributes are exported:

* `id` - The unique identifier for the test.
* `name` - The name of this test.
* `description` - Human-readable description of the new test.
* `default_environment_id` - ID of the default environment