Skip to content

Commit a0c2c30

Browse files
authored
Ft/rework acceptance tests follow up (#684)
* Enable CI Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> * Add default local file for IaaS image test Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> * Opensearch acceptance test typo Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> * Postgresflex acceptance test fix ignore Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> * Redis acceptance test remove mid uuid Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> * Objectstorage acceptance test ignore region for import Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> * Add more environment variables for CI build Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> --------- Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de>
1 parent e299534 commit a0c2c30

8 files changed

Lines changed: 71 additions & 26 deletions

File tree

.github/workflows/tf-acc-test.yaml

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,12 @@ jobs:
1616
- name: Install project tools and dependencies
1717
run: make project-tools
1818
- name: Run tests
19-
run: make test-acceptance-tf TF_ACC_PROJECT_ID=$${{ secrets.TF_ACC_PROJECT_ID }}
19+
run: |
20+
make test-acceptance-tf TF_ACC_PROJECT_ID=$${{ secrets.TF_ACC_PROJECT_ID }} TF_ACC_ORGANIZATION_ID=$${{ secrets.TF_ACC_ORGANIZATION_ID }}
2021
env:
21-
TF_ACC_ARGUS_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_ARGUS_CUSTOM_ENDPOINT }}
22-
TF_ACC_DNS_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_DNS_CUSTOM_ENDPOINT }}
23-
TF_ACC_LOGME_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_LOGME_CUSTOM_ENDPOINT }}
24-
TF_ACC_MARIADB_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_MARIADB_CUSTOM_ENDPOINT }}
25-
TF_ACC_OBSERVABILITY_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_OBSERVABILITY_CUSTOM_ENDPOINT }}
26-
TF_ACC_OPENSEARCH_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_OPENSEARCH_CUSTOM_ENDPOINT }}
27-
TF_ACC_POSTGRESFLEX_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_POSTGRESFLEX_CUSTOM_ENDPOINT }}
28-
TF_ACC_RABBITMQ_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_RABBITMQ_CUSTOM_ENDPOINT }}
29-
TF_ACC_REDIS_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_REDIS_CUSTOM_ENDPOINT }}
30-
TF_ACC_RESOURCEMANAGER_CUSTOM_ENDPOINT: ${{ secrets.TF_ACC_RESOURCEMANAGER_CUSTOM_ENDPOINT }}
31-
TF_ACC_SERVICE_ACCOUNT_TOKEN: ${{ secrets.TF_ACC_SERVICE_ACCOUNT_TOKEN }}
22+
STACKIT_SERVICE_ACCOUNT_TOKEN: ${{ secrets.TF_ACC_SERVICE_ACCOUNT_TOKEN }}
3223
TF_ACC_TEST_PROJECT_SERVICE_ACCOUNT_EMAIL: ${{ secrets.TF_ACC_TEST_PROJECT_SERVICE_ACCOUNT_EMAIL }}
3324
TF_ACC_TEST_PROJECT_SERVICE_ACCOUNT_TOKEN: ${{ secrets.TF_ACC_TEST_PROJECT_SERVICE_ACCOUNT_TOKEN }}
25+
TF_ACC_TEST_PROJECT_PARENT_CONTAINER_ID: ${{ secrets.TF_ACC_TEST_PROJECT_PARENT_CONTAINER_ID }}
26+
TF_ACC_TEST_PROJECT_PARENT_UUID: ${{ secrets.TF_ACC_TEST_PROJECT_PARENT_UUID }}
27+
TF_ACC_TEST_PROJECT_USER_EMAIL: ${{ secrets.TF_ACC_TEST_PROJECT_USER_EMAIL }}

Makefile

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ test:
3737

3838
test-acceptance-tf:
3939
@if [ -z $(TF_ACC_PROJECT_ID) ]; then echo "Input TF_ACC_PROJECT_ID missing"; exit 1; fi
40+
@if [ -z $(TF_ACC_ORGANIZATION_ID) ]; then echo "Input TF_ACC_ORGANIZATION_ID missing"; exit 1; fi
41+
@if [ -z $(TF_ACC_TEST_IMAGE_LOCAL_FILE_PATH) ]; then \
42+
echo "Input TF_ACC_TEST_IMAGE_LOCAL_FILE_PATH missing. Creating a default file for testing."; \
43+
fi
4044
@echo "Running acceptance tests for the terraform provider"
41-
@cd $(ROOT_DIR)/stackit && TF_ACC=1 TF_ACC_PROJECT_ID=$(TF_ACC_PROJECT_ID) go test ./... -count=1 -timeout=30m && cd $(ROOT_DIR)
42-
45+
@cd $(ROOT_DIR)/stackit && TF_ACC=1 \
46+
TF_ACC_PROJECT_ID=$(TF_ACC_PROJECT_ID) \
47+
TF_ACC_ORGANIZATION_ID=$(TF_ACC_ORGANIZATION_ID) \
48+
go test ./... -count=1 -timeout=30m && \
49+
cd $(ROOT_DIR)

stackit/internal/services/iaas/iaas_acc_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package iaas_test
33
import (
44
"context"
55
"fmt"
6+
"os"
7+
"path/filepath"
68
"strings"
79
"testing"
810

@@ -124,6 +126,9 @@ var imageResource = map[string]string{
124126
"boot_menu": "true",
125127
}
126128

129+
// if no local file is provided the test should create a default file and work with this instead of failing
130+
var localFileForIaasImage os.File
131+
127132
func networkResourceConfig(name, nameservers string) string {
128133
return fmt.Sprintf(`
129134
resource "stackit_network" "network" {
@@ -331,6 +336,14 @@ func serviceAccountAttachmentResourceConfig() string {
331336
}
332337

333338
func imageResourceConfig(name string) string {
339+
if imageResource["local_file_path"] == "default" {
340+
localFileForIaasImage = testutil.CreateDefaultLocalFile()
341+
filePath, err := filepath.Abs(localFileForIaasImage.Name())
342+
if err != nil {
343+
fmt.Println("Absolute path for localFileForIaasImage could not be retrieved.")
344+
}
345+
imageResource["local_file_path"] = filePath
346+
}
334347
return fmt.Sprintf(`
335348
resource "stackit_image" "image" {
336349
project_id = "%s"
@@ -1866,6 +1879,15 @@ func testAccCheckIaaSImageDestroy(s *terraform.State) error {
18661879
ctx := context.Background()
18671880
var client *iaas.APIClient
18681881
var err error
1882+
1883+
if _, err := os.Stat(localFileForIaasImage.Name()); err == nil {
1884+
// file exists, delete it
1885+
err := os.Remove(localFileForIaasImage.Name())
1886+
if err != nil {
1887+
return fmt.Errorf("Error deleting localFileForIaasImage file: %w", err)
1888+
}
1889+
}
1890+
18691891
if testutil.IaaSCustomEndpoint == "" {
18701892
client, err = iaas.NewAPIClient(
18711893
config.WithRegion("eu01"),

stackit/internal/services/objectstorage/objectstorage_acc_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,9 @@ func TestAccObjectStorageResource(t *testing.T) {
192192

193193
return fmt.Sprintf("%s,%s", testutil.ProjectId, credentialsGroupId), nil
194194
},
195-
ImportState: true,
196-
ImportStateVerify: true,
195+
ImportState: true,
196+
ImportStateVerify: true,
197+
ImportStateVerifyIgnore: []string{"region"},
197198
},
198199
{
199200
ResourceName: "stackit_objectstorage_credential.credential",
@@ -214,7 +215,7 @@ func TestAccObjectStorageResource(t *testing.T) {
214215
},
215216
ImportState: true,
216217
ImportStateVerify: true,
217-
ImportStateVerifyIgnore: []string{"access_key", "secret_access_key"},
218+
ImportStateVerifyIgnore: []string{"access_key", "secret_access_key", "region"},
218219
},
219220
// Deletion is done by the framework implicitly
220221
},

stackit/internal/services/opensearch/opensearch_acc_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func TestAccOpenSearchResource(t *testing.T) {
102102
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "plan_name", instanceResource["plan_name"]),
103103
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "version", instanceResource["version"]),
104104
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "name", instanceResource["name"]),
105-
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.sgw_acl", instanceResource["sqw_acl-1"]),
105+
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.sgw_acl", instanceResource["sgw_acl-1"]),
106106
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.max_disk_threshold", instanceResource["max_disk_threshold"]),
107107
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.enable_monitoring", instanceResource["enable_monitoring"]),
108108
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.syslog.#", "1"),
@@ -153,7 +153,7 @@ func TestAccOpenSearchResource(t *testing.T) {
153153
"data.stackit_opensearch_credential.credential", "credential_id"),
154154
resource.TestCheckResourceAttr("data.stackit_opensearch_instance.instance", "plan_id", instanceResource["plan_id"]),
155155
resource.TestCheckResourceAttr("data.stackit_opensearch_instance.instance", "name", instanceResource["name"]),
156-
resource.TestCheckResourceAttr("data.stackit_opensearch_instance.instance", "parameters.sgw_acl", instanceResource["sqw_acl-1"]),
156+
resource.TestCheckResourceAttr("data.stackit_opensearch_instance.instance", "parameters.sgw_acl", instanceResource["sgw_acl-1"]),
157157
resource.TestCheckResourceAttr("data.stackit_opensearch_instance.instance", "parameters.max_disk_threshold", instanceResource["max_disk_threshold"]),
158158
resource.TestCheckResourceAttr("data.stackit_opensearch_instance.instance", "parameters.enable_monitoring", instanceResource["enable_monitoring"]),
159159
resource.TestCheckResourceAttr("data.stackit_opensearch_instance.instance", "parameters.syslog.#", "1"),
@@ -223,7 +223,7 @@ func TestAccOpenSearchResource(t *testing.T) {
223223
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "plan_name", instanceResource["plan_name"]),
224224
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "version", instanceResource["version"]),
225225
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "name", instanceResource["name"]),
226-
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.sgw_acl", instanceResource["sqw_acl-2"]),
226+
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.sgw_acl", instanceResource["sgw_acl-2"]),
227227
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.max_disk_threshold", instanceResource["max_disk_threshold"]),
228228
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.enable_monitoring", instanceResource["enable_monitoring"]),
229229
resource.TestCheckResourceAttr("stackit_opensearch_instance.instance", "parameters.syslog.#", "1"),

stackit/internal/services/postgresflex/postgresflex_acc_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,9 @@ func TestAccPostgresFlexFlexResource(t *testing.T) {
239239

240240
return fmt.Sprintf("%s,%s", testutil.ProjectId, instanceId), nil
241241
},
242-
ImportState: true,
243-
ImportStateVerify: true,
242+
ImportState: true,
243+
ImportStateVerify: true,
244+
ImportStateVerifyIgnore: []string{"password"},
244245
},
245246
{
246247
ResourceName: "stackit_postgresflex_user.user",
@@ -262,7 +263,7 @@ func TestAccPostgresFlexFlexResource(t *testing.T) {
262263
},
263264
ImportState: true,
264265
ImportStateVerify: true,
265-
ImportStateVerifyIgnore: []string{"password"},
266+
ImportStateVerifyIgnore: []string{"password", "uri"},
266267
},
267268
{
268269
ResourceName: "stackit_postgresflex_database.database",

stackit/internal/services/redis/redis_acc_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ func TestAccRedisResource(t *testing.T) {
116116
"metrics_frequency": "10",
117117
"metrics_prefix": "prefix",
118118
"min_replicas_max_lag": "15",
119-
"monitoring_instance_id": "mid",
120119
"notify_keyspace_events": "Ex",
121120
"syslog": `["syslog.example.com:123"]`,
122121
"tls_protocols": "TLSv1.2",
@@ -146,7 +145,6 @@ func TestAccRedisResource(t *testing.T) {
146145
resource.TestCheckResourceAttr("stackit_redis_instance.instance", "parameters.metrics_frequency", "10"),
147146
resource.TestCheckResourceAttr("stackit_redis_instance.instance", "parameters.metrics_prefix", "prefix"),
148147
resource.TestCheckResourceAttr("stackit_redis_instance.instance", "parameters.min_replicas_max_lag", "15"),
149-
resource.TestCheckResourceAttr("stackit_redis_instance.instance", "parameters.monitoring_instance_id", "mid"),
150148
resource.TestCheckResourceAttr("stackit_redis_instance.instance", "parameters.notify_keyspace_events", "Ex"),
151149
resource.TestCheckResourceAttr("stackit_redis_instance.instance", "parameters.syslog.#", "1"),
152150
resource.TestCheckResourceAttr("stackit_redis_instance.instance", "parameters.syslog.0", "syslog.example.com:123"),

stackit/internal/testutil/testutil.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ var (
4848
// Default email: acc-test@sa.stackit.cloud
4949
TestProjectUserEmail = getenv("TF_ACC_TEST_PROJECT_USER_EMAIL", "acc-test@sa.stackit.cloud")
5050
// TestImageLocalFilePath is the local path to an image file used for image acceptance tests
51-
TestImageLocalFilePath = os.Getenv("TF_ACC_TEST_IMAGE_LOCAL_FILE_PATH")
51+
TestImageLocalFilePath = getenv("TF_ACC_TEST_IMAGE_LOCAL_FILE_PATH", "default")
5252

5353
ArgusCustomEndpoint = os.Getenv("TF_ACC_ARGUS_CUSTOM_ENDPOINT")
5454
DnsCustomEndpoint = os.Getenv("TF_ACC_DNS_CUSTOM_ENDPOINT")
@@ -432,3 +432,25 @@ func getenv(key, defaultValue string) string {
432432
}
433433
return val
434434
}
435+
436+
// helper for local_file_path
437+
// no real data is created
438+
func CreateDefaultLocalFile() os.File {
439+
// Define the file name and size
440+
fileName := "test-512k.img"
441+
size := 512 * 1024 // 512 KB
442+
443+
// Create the file
444+
file, err := os.Create(fileName)
445+
if err != nil {
446+
panic(err)
447+
}
448+
449+
// Seek to the desired position (512 KB)
450+
_, err = file.Seek(int64(size), 0)
451+
if err != nil {
452+
panic(err)
453+
}
454+
455+
return *file
456+
}

0 commit comments

Comments
 (0)