@@ -3,6 +3,7 @@ package scaleway
33import (
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