2017-07-26 20:37:59 +00:00
|
|
|
package google
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
func TestResourceWithOnlyBaseVersionFields(t *testing.T) {
|
|
|
|
d := &ResourceDataMock{
|
2017-09-07 20:43:00 +00:00
|
|
|
FieldsInSchema: map[string]interface{}{
|
|
|
|
"normal_field": "foo",
|
|
|
|
},
|
2017-07-26 20:37:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
resourceVersion := v1
|
|
|
|
computeApiVersion := getComputeApiVersion(d, resourceVersion, []Feature{})
|
|
|
|
if computeApiVersion != resourceVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", resourceVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
|
|
|
|
computeApiVersion = getComputeApiVersionUpdate(d, resourceVersion, []Feature{}, []Feature{})
|
|
|
|
if computeApiVersion != resourceVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", resourceVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResourceWithBetaFields(t *testing.T) {
|
|
|
|
resourceVersion := v1
|
|
|
|
d := &ResourceDataMock{
|
2017-09-07 20:43:00 +00:00
|
|
|
FieldsInSchema: map[string]interface{}{
|
|
|
|
"normal_field": "foo",
|
|
|
|
"beta_field": "bar",
|
|
|
|
},
|
2017-07-26 20:37:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
expectedVersion := v0beta
|
|
|
|
computeApiVersion := getComputeApiVersion(d, resourceVersion, []Feature{{Version: expectedVersion, Item: "beta_field"}})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
|
|
|
|
computeApiVersion = getComputeApiVersionUpdate(d, resourceVersion, []Feature{{Version: expectedVersion, Item: "beta_field"}}, []Feature{})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResourceWithBetaFieldsNotInSchema(t *testing.T) {
|
|
|
|
resourceVersion := v1
|
|
|
|
d := &ResourceDataMock{
|
2017-09-07 20:43:00 +00:00
|
|
|
FieldsInSchema: map[string]interface{}{
|
|
|
|
"normal_field": "foo",
|
|
|
|
},
|
2017-07-26 20:37:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
expectedVersion := v1
|
|
|
|
computeApiVersion := getComputeApiVersion(d, resourceVersion, []Feature{{Version: expectedVersion, Item: "beta_field"}})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
|
|
|
|
computeApiVersion = getComputeApiVersionUpdate(d, resourceVersion, []Feature{{Version: expectedVersion, Item: "beta_field"}}, []Feature{})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResourceWithBetaUpdateFields(t *testing.T) {
|
|
|
|
resourceVersion := v1
|
|
|
|
d := &ResourceDataMock{
|
2017-09-07 20:43:00 +00:00
|
|
|
FieldsInSchema: map[string]interface{}{
|
|
|
|
"normal_field": "foo",
|
|
|
|
"beta_field": "bar",
|
|
|
|
},
|
2017-07-26 20:37:59 +00:00
|
|
|
FieldsWithHasChange: []string{"beta_update_field"},
|
|
|
|
}
|
|
|
|
|
|
|
|
expectedVersion := v1
|
|
|
|
computeApiVersion := getComputeApiVersion(d, resourceVersion, []Feature{})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
|
|
|
|
expectedVersion = v0beta
|
|
|
|
computeApiVersion = getComputeApiVersionUpdate(d, resourceVersion, []Feature{}, []Feature{{Version: expectedVersion, Item: "beta_update_field"}})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
2017-09-07 20:43:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestResourceWithOnlyBaseNestedFields(t *testing.T) {
|
|
|
|
resourceVersion := v1
|
|
|
|
d := &ResourceDataMock{
|
|
|
|
FieldsInSchema: map[string]interface{}{
|
|
|
|
"list_field.#": 2,
|
|
|
|
"list_field.0.normal_field": "foo",
|
|
|
|
"list_field.1.normal_field": "bar",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
computeApiVersion := getComputeApiVersion(d, resourceVersion, []Feature{})
|
|
|
|
if computeApiVersion != resourceVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", resourceVersion, computeApiVersion)
|
|
|
|
}
|
2017-07-26 20:37:59 +00:00
|
|
|
|
2017-09-07 20:43:00 +00:00
|
|
|
computeApiVersion = getComputeApiVersionUpdate(d, resourceVersion, []Feature{}, []Feature{{Version: resourceVersion, Item: "list_field.*.beta_nested_field"}})
|
|
|
|
if computeApiVersion != resourceVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", resourceVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResourceWithBetaNestedFields(t *testing.T) {
|
|
|
|
resourceVersion := v1
|
|
|
|
d := &ResourceDataMock{
|
|
|
|
FieldsInSchema: map[string]interface{}{
|
|
|
|
"list_field.#": 2,
|
|
|
|
"list_field.0.normal_field": "foo",
|
|
|
|
"list_field.1.normal_field": "bar",
|
|
|
|
"list_field.1.beta_nested_field": "baz",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
expectedVersion := v0beta
|
|
|
|
computeApiVersion := getComputeApiVersion(d, resourceVersion, []Feature{{Version: expectedVersion, Item: "list_field.*.beta_nested_field"}})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
|
|
|
|
computeApiVersion = getComputeApiVersionUpdate(d, resourceVersion, []Feature{{Version: expectedVersion, Item: "list_field.*.beta_nested_field"}}, []Feature{})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResourceWithBetaDoubleNestedFields(t *testing.T) {
|
|
|
|
resourceVersion := v1
|
|
|
|
d := &ResourceDataMock{
|
|
|
|
FieldsInSchema: map[string]interface{}{
|
|
|
|
"list_field.#": 1,
|
|
|
|
"list_field.0.nested_list_field.#": 1,
|
|
|
|
"list_field.0.nested_list_field.0.beta_nested_field": "foo",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
expectedVersion := v0beta
|
|
|
|
computeApiVersion := getComputeApiVersion(d, resourceVersion, []Feature{{Version: expectedVersion, Item: "list_field.*.nested_list_field.*.beta_nested_field"}})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
|
|
|
|
|
|
|
computeApiVersion = getComputeApiVersionUpdate(d, resourceVersion, []Feature{{Version: expectedVersion, Item: "list_field.*.nested_list_field.*.beta_nested_field"}}, []Feature{})
|
|
|
|
if computeApiVersion != expectedVersion {
|
|
|
|
t.Errorf("Expected to see version: %v. Saw version: %v.", expectedVersion, computeApiVersion)
|
|
|
|
}
|
2017-07-26 20:37:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type ResourceDataMock struct {
|
2017-09-07 20:43:00 +00:00
|
|
|
FieldsInSchema map[string]interface{}
|
2017-07-26 20:37:59 +00:00
|
|
|
FieldsWithHasChange []string
|
|
|
|
}
|
|
|
|
|
|
|
|
func (d *ResourceDataMock) HasChange(key string) bool {
|
|
|
|
exists := false
|
|
|
|
for _, val := range d.FieldsWithHasChange {
|
|
|
|
if key == val {
|
|
|
|
exists = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return exists
|
|
|
|
}
|
|
|
|
|
|
|
|
func (d *ResourceDataMock) GetOk(key string) (interface{}, bool) {
|
2017-09-07 20:43:00 +00:00
|
|
|
for k, v := range d.FieldsInSchema {
|
|
|
|
if key == k {
|
|
|
|
return v, true
|
2017-07-26 20:37:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-09-07 20:43:00 +00:00
|
|
|
return nil, false
|
2017-07-26 20:37:59 +00:00
|
|
|
}
|