Skip to content
This repository was archived by the owner on Jun 2, 2024. It is now read-only.

Commit

Permalink
#1: Refactor test utilities
Browse files Browse the repository at this point in the history
  • Loading branch information
gessnerfl committed Apr 5, 2019
1 parent a4fbf2a commit c5adb25
Show file tree
Hide file tree
Showing 15 changed files with 258 additions and 200 deletions.
125 changes: 0 additions & 125 deletions instana/commons_test.go

This file was deleted.

6 changes: 4 additions & 2 deletions instana/provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

. "github.com/gessnerfl/terraform-provider-instana/instana"
"github.com/gessnerfl/terraform-provider-instana/instana/restapi"
"github.com/gessnerfl/terraform-provider-instana/testutils"
"github.com/hashicorp/terraform/helper/schema"
)

Expand Down Expand Up @@ -35,8 +36,9 @@ func validateSchema(schemaMap map[string]*schema.Schema, t *testing.T) {
if len(schemaMap) != 2 {
t.Fatal("Expected three configuration options for provider")
}
validateRequiredSchemaOfTypeString(SchemaFieldAPIToken, schemaMap, t)
validateRequiredSchemaOfTypeString(SchemaFieldEndpoint, schemaMap, t)
schemaAssert := testutils.NewTerraformSchemaAssert(schemaMap, t)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(SchemaFieldAPIToken)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(SchemaFieldEndpoint)
}

func validateResourcesMap(resourceMap map[string]*schema.Resource, t *testing.T) {
Expand Down
41 changes: 21 additions & 20 deletions instana/resource-rule-binding_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ import (

. "github.com/gessnerfl/terraform-provider-instana/instana"
"github.com/gessnerfl/terraform-provider-instana/instana/restapi"
mocks "github.com/gessnerfl/terraform-provider-instana/mocks"
testutils "github.com/gessnerfl/terraform-provider-instana/test-utils"
"github.com/gessnerfl/terraform-provider-instana/mocks"
"github.com/gessnerfl/terraform-provider-instana/testutils"
"github.com/golang/mock/gomock"
"github.com/google/go-cmp/cmp"
)
Expand Down Expand Up @@ -124,14 +124,15 @@ func TestResourceRuleBindingDefinition(t *testing.T) {
}

func validateRuleBindingResourceSchema(schemaMap map[string]*schema.Schema, t *testing.T) {
validateSchemaOfTypeBoolWithDefault(RuleBindingFieldEnabled, true, schemaMap, t)
validateSchemaOfTypeBoolWithDefault(RuleBindingFieldTriggering, false, schemaMap, t)
validateRequiredSchemaOfTypeString(RuleBindingFieldSeverity, schemaMap, t)
validateRequiredSchemaOfTypeString(RuleBindingFieldText, schemaMap, t)
validateRequiredSchemaOfTypeString(RuleBindingFieldDescription, schemaMap, t)
validateRequiredSchemaOfTypeInt(RuleBindingFieldExpirationTime, schemaMap, t)
validateOptionalSchemaOfTypeString(RuleBindingFieldQuery, schemaMap, t)
validateRequiredSchemaOfTypeListOfString(RuleBindingFieldRuleIds, schemaMap, t)
schemaAssert := testutils.NewTerraformSchemaAssert(schemaMap, t)
schemaAssert.AssertSchemaIsOfTypeBooleanWithDefault(RuleBindingFieldEnabled, true)
schemaAssert.AssertSchemaIsOfTypeBooleanWithDefault(RuleBindingFieldTriggering, false)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(RuleBindingFieldSeverity)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(RuleBindingFieldText)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(RuleBindingFieldDescription)
schemaAssert.AssertSchemaIsRequiredAndOfTypeInt(RuleBindingFieldExpirationTime)
schemaAssert.AssertSchemaIsOptionalAndOfTypeString(RuleBindingFieldQuery)
schemaAssert.AssertSChemaIsRequiredAndOfTypeListOfStrings(RuleBindingFieldRuleIds)
}

func TestShouldSuccessfullyReadRuleBindingFromInstanaAPIWhenBaseDataIsReturned(t *testing.T) {
Expand All @@ -150,7 +151,7 @@ func TestShouldSuccessfullyReadRuleBindingFromInstanaAPIWhenBaseDataWithQueryIsR
}

func testShouldSuccessfullyReadRuleBindingFromInstanaAPI(expectedModel restapi.RuleBinding, t *testing.T) {
resourceData := createEmptyRuleBindingResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleBindingResourceData()
ruleBindingID := "rule-binding-id"
resourceData.SetId(ruleBindingID)

Expand All @@ -171,7 +172,7 @@ func testShouldSuccessfullyReadRuleBindingFromInstanaAPI(expectedModel restapi.R
}

func TestShouldFailToReadRuleBindingFromInstanaAPIWhenIDIsMissing(t *testing.T) {
resourceData := createEmptyRuleBindingResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleBindingResourceData()

ctrl := gomock.NewController(t)
defer ctrl.Finish()
Expand All @@ -187,7 +188,7 @@ func TestShouldFailToReadRuleBindingFromInstanaAPIWhenIDIsMissing(t *testing.T)
func TestShouldFailToReadRuleBindingFromInstanaAPIWhenSeverityCannotBeMapped(t *testing.T) {
modelData := createFullTestRuleBindingModel()
modelData.Severity = 1
resourceData := createEmptyRuleBindingResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleBindingResourceData()
ruleBindingID := "rule-binding-id"
resourceData.SetId(ruleBindingID)

Expand All @@ -207,7 +208,7 @@ func TestShouldFailToReadRuleBindingFromInstanaAPIWhenSeverityCannotBeMapped(t *
}

func TestShouldFailToReadRuleBindingFromInstanaAPIAndDeleteResourceWhenBindingDoesNotExist(t *testing.T) {
resourceData := createEmptyRuleBindingResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleBindingResourceData()
ruleBindingID := "rule-binding-id"
resourceData.SetId(ruleBindingID)

Expand All @@ -230,7 +231,7 @@ func TestShouldFailToReadRuleBindingFromInstanaAPIAndDeleteResourceWhenBindingDo
}

func TestShouldFailToReadRuleBindingFromInstanaAPIAndReturnErrorWhenAPICallFails(t *testing.T) {
resourceData := createEmptyRuleBindingResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleBindingResourceData()
ruleBindingID := "rule-binding-id"
resourceData.SetId(ruleBindingID)
expectedError := errors.New("test")
Expand All @@ -255,7 +256,7 @@ func TestShouldFailToReadRuleBindingFromInstanaAPIAndReturnErrorWhenAPICallFails

func TestShouldCreateRuleBindingThroughInstanaAPI(t *testing.T) {
data := createFullTestRuleBindingData()
resourceData := createRuleBindingResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleBindingResourceData(data)
expectedModel := createFullTestRuleBindingModel()

ctrl := gomock.NewController(t)
Expand All @@ -276,7 +277,7 @@ func TestShouldCreateRuleBindingThroughInstanaAPI(t *testing.T) {

func TestShouldReturnErrorWhenCreateRuleBindingFailsThroughInstanaAPI(t *testing.T) {
data := createFullTestRuleBindingData()
resourceData := createRuleBindingResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleBindingResourceData(data)
expectedError := errors.New("test")

ctrl := gomock.NewController(t)
Expand All @@ -297,7 +298,7 @@ func TestShouldReturnErrorWhenCreateRuleBindingFailsThroughInstanaAPI(t *testing
func TestShouldFailToCreateRuleBindingThroughInstanaAPIWhenSeverityCannotBeMappedToRepresentationOfInstanaAPI(t *testing.T) {
data := createFullTestRuleBindingData()
data[RuleBindingFieldSeverity] = "INVALID_SEVERITY"
resourceData := createRuleBindingResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleBindingResourceData(data)

ctrl := gomock.NewController(t)
defer ctrl.Finish()
Expand All @@ -313,7 +314,7 @@ func TestShouldFailToCreateRuleBindingThroughInstanaAPIWhenSeverityCannotBeMappe
func TestShouldDeleteRuleBindingThroughInstanaAPI(t *testing.T) {
id := "test-id"
data := createFullTestRuleBindingData()
resourceData := createRuleBindingResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleBindingResourceData(data)
resourceData.SetId(id)

ctrl := gomock.NewController(t)
Expand All @@ -337,7 +338,7 @@ func TestShouldDeleteRuleBindingThroughInstanaAPI(t *testing.T) {
func TestShouldReturnErrorWhenDeleteRuleBindingFailsThroughInstanaAPI(t *testing.T) {
id := "test-id"
data := createFullTestRuleBindingData()
resourceData := createRuleBindingResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleBindingResourceData(data)
resourceData.SetId(id)
expectedError := errors.New("test")

Expand Down
37 changes: 19 additions & 18 deletions instana/resource-rule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import (

. "github.com/gessnerfl/terraform-provider-instana/instana"
"github.com/gessnerfl/terraform-provider-instana/instana/restapi"
mocks "github.com/gessnerfl/terraform-provider-instana/mocks"
testutils "github.com/gessnerfl/terraform-provider-instana/test-utils"
"github.com/gessnerfl/terraform-provider-instana/mocks"
"github.com/gessnerfl/terraform-provider-instana/testutils"
)

var testRuleProviders = map[string]terraform.ResourceProvider{
Expand Down Expand Up @@ -114,14 +114,15 @@ func TestResourceRuleDefinition(t *testing.T) {
}

func validateRuleResourceSchema(schemaMap map[string]*schema.Schema, t *testing.T) {
validateRequiredSchemaOfTypeString(RuleFieldName, schemaMap, t)
validateRequiredSchemaOfTypeString(RuleFieldEntityType, schemaMap, t)
validateRequiredSchemaOfTypeString(RuleFieldMetricName, schemaMap, t)
validateOptionalSchemaOfTypeInt(RuleFieldRollup, schemaMap, t)
validateRequiredSchemaOfTypeInt(RuleFieldWindow, schemaMap, t)
validateRequiredSchemaOfTypeString(RuleFieldAggregation, schemaMap, t)
validateRequiredSchemaOfTypeString(RuleFieldConditionOperator, schemaMap, t)
validateRequiredSchemaOfTypeFloat(RuleFieldConditionValue, schemaMap, t)
schemaAssert := testutils.NewTerraformSchemaAssert(schemaMap, t)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(RuleFieldName)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(RuleFieldEntityType)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(RuleFieldMetricName)
schemaAssert.AssertSchemaIsOptionalAndOfTypeInt(RuleFieldRollup)
schemaAssert.AssertSchemaIsRequiredAndOfTypeInt(RuleFieldWindow)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(RuleFieldAggregation)
schemaAssert.AssertSchemaIsRequiredAndOfTypeString(RuleFieldConditionOperator)
schemaAssert.AssertSchemaIsRequiredAndTypeFloat(RuleFieldConditionValue)
}

func TestShouldSuccessfullyReadRuleFromInstanaAPIWhenBaseDataIsReturned(t *testing.T) {
Expand All @@ -135,7 +136,7 @@ func TestShouldSuccessfullyReadRuleFromInstanaAPIWhenBaseDataWithRollupIsReturne
}

func testShouldSuccessfullyReadRuleFromInstanaAPI(expectedModel restapi.Rule, t *testing.T) {
resourceData := createEmptyRuleResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleResourceData()
ruleID := "rule-id"
resourceData.SetId(ruleID)

Expand All @@ -156,7 +157,7 @@ func testShouldSuccessfullyReadRuleFromInstanaAPI(expectedModel restapi.Rule, t
}

func TestShouldFailToReadRuleFromInstanaAPIWhenIDIsMissing(t *testing.T) {
resourceData := createEmptyRuleResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleResourceData()

ctrl := gomock.NewController(t)
defer ctrl.Finish()
Expand All @@ -170,7 +171,7 @@ func TestShouldFailToReadRuleFromInstanaAPIWhenIDIsMissing(t *testing.T) {
}

func TestShouldFailToReadRuleFromInstanaAPIAndDeleteResourceWhenRoleDoesNotExist(t *testing.T) {
resourceData := createEmptyRuleResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleResourceData()
ruleID := "rule-id"
resourceData.SetId(ruleID)

Expand All @@ -193,7 +194,7 @@ func TestShouldFailToReadRuleFromInstanaAPIAndDeleteResourceWhenRoleDoesNotExist
}

func TestShouldFailToReadRuleFromInstanaAPIAndReturnErrorWhenAPICallFails(t *testing.T) {
resourceData := createEmptyRuleResourceData(t)
resourceData := NewTestHelper(t).CreateEmptyRuleResourceData()
ruleID := "rule-id"
resourceData.SetId(ruleID)
expectedError := errors.New("test")
Expand All @@ -218,7 +219,7 @@ func TestShouldFailToReadRuleFromInstanaAPIAndReturnErrorWhenAPICallFails(t *tes

func TestShouldCreateRuleThroughInstanaAPI(t *testing.T) {
data := createFullTestRuleData()
resourceData := createRuleResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleResourceData(data)
expectedModel := createTestRuleModelWithRollup()

ctrl := gomock.NewController(t)
Expand All @@ -239,7 +240,7 @@ func TestShouldCreateRuleThroughInstanaAPI(t *testing.T) {

func TestShouldReturnErrorWhenCreateRuleFailsThroughInstanaAPI(t *testing.T) {
data := createFullTestRuleData()
resourceData := createRuleResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleResourceData(data)
expectedError := errors.New("test")

ctrl := gomock.NewController(t)
Expand All @@ -260,7 +261,7 @@ func TestShouldReturnErrorWhenCreateRuleFailsThroughInstanaAPI(t *testing.T) {
func TestShouldDeleteRuleThroughInstanaAPI(t *testing.T) {
id := "test-id"
data := createFullTestRuleData()
resourceData := createRuleResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleResourceData(data)
resourceData.SetId(id)

ctrl := gomock.NewController(t)
Expand All @@ -284,7 +285,7 @@ func TestShouldDeleteRuleThroughInstanaAPI(t *testing.T) {
func TestShouldReturnErrorWhenDeleteRuleFailsThroughInstanaAPI(t *testing.T) {
id := "test-id"
data := createFullTestRuleData()
resourceData := createRuleResourceData(t, data)
resourceData := NewTestHelper(t).CreateRuleResourceData(data)
resourceData.SetId(id)
expectedError := errors.New("test")

Expand Down
Loading

0 comments on commit c5adb25

Please sign in to comment.