github.com/darmach/terratest@v0.34.8-0.20210517103231-80931f95e3ff/modules/aws/rds_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestGetRecommendedRdsInstanceTypeHappyPath(t *testing.T) { 11 type TestingScenerios struct { 12 name string 13 region string 14 databaseEngine string 15 databaseEngineVersion string 16 instanceTypes []string 17 expected string 18 } 19 20 testingScenerios := []TestingScenerios{ 21 { 22 name: "US region, mysql, first offering available", 23 region: "us-east-2", 24 databaseEngine: "mysql", 25 databaseEngineVersion: "8.0.21", 26 instanceTypes: []string{"db.t2.micro", "db.t3.micro"}, 27 expected: "db.t2.micro", 28 }, 29 { 30 name: "EU region, postgres, 2nd offering available based on region", 31 region: "eu-north-1", 32 databaseEngine: "postgres", 33 databaseEngineVersion: "13.1", 34 instanceTypes: []string{"db.t2.micro", "db.m5.large"}, 35 expected: "db.m5.large", 36 }, 37 { 38 name: "US region, oracle-ee, 2nd offering available based on db type", 39 region: "us-west-2", 40 databaseEngine: "oracle-ee", 41 databaseEngineVersion: "19.0.0.0.ru-2021-01.rur-2021-01.r1", 42 instanceTypes: []string{"db.m5d.xlarge", "db.m5.large"}, 43 expected: "db.m5.large", 44 }, 45 { 46 name: "US region, oracle-ee, 2nd offering available based on db engine version", 47 region: "us-west-2", 48 databaseEngine: "oracle-ee", 49 databaseEngineVersion: "19.0.0.0.ru-2021-01.rur-2021-01.r1", 50 instanceTypes: []string{"db.t3.micro", "db.t3.small"}, 51 expected: "db.t3.small", 52 }, 53 } 54 55 for _, scenerio := range testingScenerios { 56 scenerio := scenerio 57 58 t.Run(scenerio.name, func(t *testing.T) { 59 t.Parallel() 60 61 actual, err := GetRecommendedRdsInstanceTypeE(t, scenerio.region, scenerio.databaseEngine, scenerio.databaseEngineVersion, scenerio.instanceTypes) 62 assert.NoError(t, err) 63 assert.Equal(t, scenerio.expected, actual) 64 }) 65 } 66 } 67 68 func TestGetRecommendedRdsInstanceTypeErrors(t *testing.T) { 69 type TestingScenerios struct { 70 name string 71 region string 72 databaseEngine string 73 databaseEngineVersion string 74 instanceTypes []string 75 } 76 77 testingScenerios := []TestingScenerios{ 78 { 79 name: "All empty", 80 region: "", 81 databaseEngine: "", 82 databaseEngineVersion: "", 83 instanceTypes: nil, 84 }, 85 { 86 name: "No engine, version, or instance type", 87 region: "us-east-2", 88 databaseEngine: "", 89 databaseEngineVersion: "", 90 instanceTypes: nil, 91 }, 92 { 93 name: "No instance types or version", 94 region: "us-east-2", 95 databaseEngine: "mysql", 96 databaseEngineVersion: "", 97 instanceTypes: nil, 98 }, 99 { 100 name: "No engine version", 101 region: "us-east-2", 102 databaseEngine: "mysql", 103 databaseEngineVersion: "", 104 instanceTypes: []string{"db.t3.small"}, 105 }, 106 { 107 name: "Invalid instance types", 108 region: "us-east-2", 109 databaseEngine: "mysql", 110 databaseEngineVersion: "8.0.21", 111 instanceTypes: []string{"garbage"}, 112 }, 113 { 114 name: "Region has no instance type available", 115 region: "eu-north-1", 116 databaseEngine: "mysql", 117 databaseEngineVersion: "8.0.21", 118 instanceTypes: []string{"db.t2.micro"}, 119 }, 120 { 121 name: "No instance type available for engine", 122 region: "us-east-1", 123 databaseEngine: "oracle-ee", 124 databaseEngineVersion: "19.0.0.0.ru-2021-01.rur-2021-01.r1", 125 instanceTypes: []string{"db.r5d.large"}, 126 }, 127 { 128 name: "No instance type available for engine version", 129 region: "us-east-1", 130 databaseEngine: "oracle-ee", 131 databaseEngineVersion: "19.0.0.0.ru-2021-01.rur-2021-01.r1", 132 instanceTypes: []string{"db.t3.micro"}, 133 }, 134 } 135 136 for _, scenerio := range testingScenerios { 137 scenerio := scenerio 138 139 t.Run(scenerio.name, func(t *testing.T) { 140 t.Parallel() 141 142 _, err := GetRecommendedRdsInstanceTypeE(t, scenerio.region, scenerio.databaseEngine, scenerio.databaseEngineVersion, scenerio.instanceTypes) 143 fmt.Println(err) 144 assert.EqualError(t, err, NoRdsInstanceTypeError{InstanceTypeOptions: scenerio.instanceTypes, DatabaseEngine: scenerio.databaseEngine, DatabaseEngineVersion: scenerio.databaseEngineVersion}.Error()) 145 }) 146 } 147 }