Skip to content

Commit

Permalink
add https use case test with certs and config and fix lint
Browse files Browse the repository at this point in the history
  • Loading branch information
valyria257 committed May 30, 2024
1 parent 225e165 commit 9b79a7f
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 16 deletions.
67 changes: 58 additions & 9 deletions internal/services/nginx/nginx_configuration_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import (
"fmt"
"testing"

"github.com/hashicorp/go-azure-helpers/lang/pointer"
"github.com/hashicorp/go-azure-sdk/resource-manager/nginx/2024-01-01-preview/nginxconfiguration"
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/check"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/nginx"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
"github.com/hashicorp/terraform-provider-azurerm/utils"
)

type ConfigurationResource struct{}
Expand All @@ -26,9 +26,9 @@ func (a ConfigurationResource) Exists(ctx context.Context, client *clients.Clien
}
resp, err := client.Nginx.NginxConfiguration.ConfigurationsGet(ctx, *id)
if err != nil {
return nil, fmt.Errorf("retrieving Configuration %s: %+v", id, err)
return nil, fmt.Errorf("retrieving %s: %+v", id, err)
}
return utils.Bool(resp.Model != nil), nil
return pointer.To(resp.Model != nil), nil
}

func TestAccConfiguration_basic(t *testing.T) {
Expand All @@ -45,6 +45,20 @@ func TestAccConfiguration_basic(t *testing.T) {
})
}

func TestAccConfiguration_withCertificate(t *testing.T) {
data := acceptance.BuildTestData(t, nginx.ConfigurationResource{}.ResourceType(), "test")
r := ConfigurationResource{}
data.ResourceTest(t, r, []acceptance.TestStep{
{
Config: r.withCertificate(data),
Check: acceptance.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
),
},
data.ImportStep(),
})
}

func TestAccConfiguration_update(t *testing.T) {
data := acceptance.BuildTestData(t, nginx.ConfigurationResource{}.ResourceType(), "test")
r := ConfigurationResource{}
Expand Down Expand Up @@ -82,8 +96,6 @@ func TestAccConfiguration_requiresImport(t *testing.T) {

func (a ConfigurationResource) basic(data acceptance.TestData) string {
return fmt.Sprintf(`
%s
resource "azurerm_nginx_configuration" "test" {
Expand All @@ -103,10 +115,50 @@ resource "azurerm_nginx_configuration" "test" {
`, a.template(data))
}

func (a ConfigurationResource) requiresImport(data acceptance.TestData) string {
func (a ConfigurationResource) withCertificate(data acceptance.TestData) string {
return fmt.Sprintf(`
%s
locals {
config_content = base64encode(<<-EOT
http {
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/test.crt;
ssl_certificate_key /etc/nginx/ssl/test.key;
location / {
return 200 "Hello World";
}
}
}
EOT
)
}
resource "azurerm_nginx_certificate" "test" {
name = "acctest"
nginx_deployment_id = azurerm_nginx_deployment.test.id
key_virtual_path = "/etc/nginx/ssl/test.key"
certificate_virtual_path = "/etc/nginx/ssl/test.crt"
key_vault_secret_id = azurerm_key_vault_certificate.test.secret_id
}
resource "azurerm_nginx_configuration" "test" {
nginx_deployment_id = azurerm_nginx_deployment.test.id
root_file = "/etc/nginx/nginx.conf"
config_file {
content = local.config_content
virtual_path = "/etc/nginx/nginx.conf"
}
depends_on = [azurerm_nginx_certificate.test]
}
`, CertificateResource{}.template(data))
}

func (a ConfigurationResource) requiresImport(data acceptance.TestData) string {
return fmt.Sprintf(`
%s
resource "azurerm_nginx_configuration" "import" {
Expand All @@ -122,8 +174,6 @@ resource "azurerm_nginx_configuration" "import" {

func (a ConfigurationResource) update(data acceptance.TestData) string {
return fmt.Sprintf(`
%s
resource "azurerm_nginx_configuration" "test" {
Expand Down Expand Up @@ -238,7 +288,6 @@ resource "azurerm_nginx_deployment" "test" {
sku = "standard_Monthly"
location = azurerm_resource_group.test.location
//message: "Conflict managed resource group name: tenant: -91a, subscription xxx, resource group example."
managed_resource_group = "accmr%[1]d"
diagnose_support_enabled = true
Expand Down
2 changes: 1 addition & 1 deletion internal/services/nginx/nginx_deployment_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ resource "azurerm_nginx_deployment" "test" {
subnet_id = azurerm_subnet.test.id
}
capacity = 10
email = "test@test.com"
email = "test@test.com"
configuration {
root_file = "/etc/nginx/nginx.conf"
config_file {
Expand Down
2 changes: 1 addition & 1 deletion website/docs/d/nginx_configuration.html.markdown
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
subcategory: "Nginx"
subcategory: "NGINX"
layout: "azurerm"
page_title: "Azure Resource Manager: Data Source: azurerm_nginx_configuration"
description: |-
Expand Down
10 changes: 5 additions & 5 deletions website/docs/r/nginx_configuration.html.markdown
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
subcategory: "Nginx"
subcategory: "NGINX"
layout: "azurerm"
page_title: "Azure Resource Manager: azurerm_nginx_configuration"
description: |-
Expand Down Expand Up @@ -116,13 +116,13 @@ The following arguments are supported:

* `nginx_deployment_id` - (Required) The ID of the Nginx Deployment. Changing this forces a new Nginx Configuration to be created.

* `root_file` - (Required) Specify the root file path of this Nginx Configuration.
* `root_file` - (Required) Specifies the root file path of this Nginx Configuration.

---

-> **NOTE:** Either `package_data` or `config_file` must be specified - but not both.

* `package_data` - (Optional) Specify the package data for this configuration.
* `package_data` - (Optional) Specifies the package data for this configuration.

* `config_file` - (Optional) One or more `config_file` blocks as defined below.

Expand All @@ -134,15 +134,15 @@ A `config_file` block supports the following:

* `content` - (Required) Specifies the base-64 encoded contents of this config file.

* `virtual_path` - (Required) Specify the path of this config file.
* `virtual_path` - (Required) Specifies the path of this config file.

---

A `protected_file` (Protected File) block supports the following:

* `content` - (Required) Specifies the base-64 encoded contents of this config file (Sensitive).

* `virtual_path` - (Required) Specify the path of this config file.
* `virtual_path` - (Required) Specifies the path of this config file.

## Attributes Reference

Expand Down

0 comments on commit 9b79a7f

Please sign in to comment.