Skip to content

Commit 9c54d52

Browse files
authored
fix(provider): add test for multiple providers (#1283)
1 parent 8b1bb00 commit 9c54d52

File tree

3 files changed

+898
-0
lines changed

3 files changed

+898
-0
lines changed

scaleway/provider_test.go

+116
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package scaleway
33
import (
44
"context"
55
"flag"
6+
"fmt"
67
"net/http"
78
"os"
89
"path/filepath"
@@ -13,7 +14,9 @@ import (
1314

1415
"github.com/dnaeon/go-vcr/cassette"
1516
"github.com/dnaeon/go-vcr/recorder"
17+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1618
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
19+
"github.com/scaleway/scaleway-sdk-go/scw"
1720
"github.com/scaleway/scaleway-sdk-go/strcase"
1821
"github.com/stretchr/testify/assert"
1922
"github.com/stretchr/testify/require"
@@ -114,3 +117,116 @@ func NewTestTools(t *testing.T) *TestTools {
114117
Cleanup: cleanup,
115118
}
116119
}
120+
121+
func TestAccScalewayProvider_SSHKeys(t *testing.T) {
122+
tt := NewTestTools(t)
123+
defer tt.Cleanup()
124+
125+
SSHKeyName := "TestAccScalewayProvider_SSHKeys"
126+
SSHKey := "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEEYrzDOZmhItdKaDAEqJQ4ORS2GyBMtBozYsK5kiXXX [email protected]"
127+
128+
ctx := context.Background()
129+
130+
resource.ParallelTest(t, resource.TestCase{
131+
PreCheck: func() { testAccPreCheck(t) },
132+
ProviderFactories: func() map[string]func() (*schema.Provider, error) {
133+
metaProd, err := buildMeta(ctx, &metaConfig{
134+
terraformVersion: "terraform-tests",
135+
httpClient: tt.Meta.httpClient,
136+
})
137+
require.NoError(t, err)
138+
139+
metaDev, err := buildMeta(ctx, &metaConfig{
140+
terraformVersion: "terraform-tests",
141+
httpClient: tt.Meta.httpClient,
142+
})
143+
require.NoError(t, err)
144+
145+
return map[string]func() (*schema.Provider, error){
146+
"prod": func() (*schema.Provider, error) {
147+
return Provider(&ProviderConfig{Meta: metaProd})(), nil
148+
},
149+
"dev": func() (*schema.Provider, error) {
150+
return Provider(&ProviderConfig{Meta: metaDev})(), nil
151+
},
152+
}
153+
}(),
154+
CheckDestroy: testAccCheckScalewayAccountSSHKeyDestroy(tt),
155+
Steps: []resource.TestStep{
156+
{
157+
Config: fmt.Sprintf(`
158+
resource "scaleway_account_ssh_key" "prod" {
159+
provider = "prod"
160+
name = "%[1]s"
161+
public_key = "%[2]s"
162+
}
163+
164+
resource "scaleway_account_ssh_key" "dev" {
165+
provider = "dev"
166+
name = "%[1]s"
167+
public_key = "%[2]s"
168+
}
169+
`, SSHKeyName, SSHKey),
170+
Check: resource.ComposeTestCheckFunc(
171+
testAccCheckScalewayAccountSSHKeyExists(tt, "scaleway_account_ssh_key.prod"),
172+
testAccCheckScalewayAccountSSHKeyExists(tt, "scaleway_account_ssh_key.dev"),
173+
),
174+
},
175+
},
176+
})
177+
}
178+
179+
func TestAccScalewayProvider_InstanceIPZones(t *testing.T) {
180+
tt := NewTestTools(t)
181+
defer tt.Cleanup()
182+
183+
ctx := context.Background()
184+
185+
resource.ParallelTest(t, resource.TestCase{
186+
PreCheck: func() { testAccPreCheck(t) },
187+
ProviderFactories: func() map[string]func() (*schema.Provider, error) {
188+
metaProd, err := buildMeta(ctx, &metaConfig{
189+
terraformVersion: "terraform-tests",
190+
forceZone: scw.ZoneFrPar2,
191+
httpClient: tt.Meta.httpClient,
192+
})
193+
require.NoError(t, err)
194+
195+
metaDev, err := buildMeta(ctx, &metaConfig{
196+
terraformVersion: "terraform-tests",
197+
forceZone: scw.ZoneFrPar1,
198+
httpClient: tt.Meta.httpClient,
199+
})
200+
require.NoError(t, err)
201+
202+
return map[string]func() (*schema.Provider, error){
203+
"prod": func() (*schema.Provider, error) {
204+
return Provider(&ProviderConfig{Meta: metaProd})(), nil
205+
},
206+
"dev": func() (*schema.Provider, error) {
207+
return Provider(&ProviderConfig{Meta: metaDev})(), nil
208+
},
209+
}
210+
}(),
211+
CheckDestroy: testAccCheckScalewayAccountSSHKeyDestroy(tt),
212+
Steps: []resource.TestStep{
213+
{
214+
Config: `
215+
resource scaleway_instance_ip dev {
216+
provider = "dev"
217+
}
218+
219+
resource scaleway_instance_ip prod {
220+
provider = "prod"
221+
}
222+
`,
223+
Check: resource.ComposeTestCheckFunc(
224+
testAccCheckScalewayInstanceIPExists(tt, "scaleway_instance_ip.prod"),
225+
testAccCheckScalewayInstanceIPExists(tt, "scaleway_instance_ip.dev"),
226+
resource.TestCheckResourceAttr("scaleway_instance_ip.prod", "zone", "fr-par-2"),
227+
resource.TestCheckResourceAttr("scaleway_instance_ip.dev", "zone", "fr-par-1"),
228+
),
229+
},
230+
},
231+
})
232+
}

0 commit comments

Comments
 (0)