Skip to content

Commit

Permalink
Reintroduce support for azure blob client addon
Browse files Browse the repository at this point in the history
  • Loading branch information
sergiught committed Jun 27, 2023
1 parent 12bf1f6 commit 70f39a7
Show file tree
Hide file tree
Showing 3 changed files with 234 additions and 20 deletions.
40 changes: 32 additions & 8 deletions internal/auth0/client/expand.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ func expandClientAddons(d *schema.ResourceData) *management.ClientAddons {

d.GetRawConfig().GetAttr("addons").ForEachElement(func(_ cty.Value, addonsCfg cty.Value) (stop bool) {
addons.AWS = expandClientAddonAWS(addonsCfg.GetAttr("aws"))

addons.AzureBlob = expandClientAddonAzureBlob(addonsCfg.GetAttr("azure_blob"))
return stop
})

Expand All @@ -260,20 +260,44 @@ func expandClientAddonAWS(awsCfg cty.Value) *management.AWSClientAddon {
var awsAddon management.AWSClientAddon

awsCfg.ForEachElement(func(_ cty.Value, awsCfg cty.Value) (stop bool) {
awsAddon.Principal = value.String(awsCfg.GetAttr("principal"))
awsAddon.Role = value.String(awsCfg.GetAttr("role"))
awsAddon.LifetimeInSeconds = value.Int(awsCfg.GetAttr("lifetime_in_seconds"))
awsAddon = management.AWSClientAddon{
Principal: value.String(awsCfg.GetAttr("principal")),
Role: value.String(awsCfg.GetAttr("role")),
LifetimeInSeconds: value.Int(awsCfg.GetAttr("lifetime_in_seconds")),
}

return stop
})

if awsAddon == (management.AWSClientAddon{}) {
return nil
}

return &awsAddon
}

func expandClientAddonAzureBlob(azureCfg cty.Value) *management.AzureBlobClientAddon {
var azureAddon management.AzureBlobClientAddon

azureCfg.ForEachElement(func(_ cty.Value, azureCfg cty.Value) (stop bool) {
azureAddon = management.AzureBlobClientAddon{
AccountName: value.String(azureCfg.GetAttr("account_name")),
StorageAccessKey: value.String(azureCfg.GetAttr("storage_access_key")),
ContainerName: value.String(azureCfg.GetAttr("container_name")),
BlobName: value.String(azureCfg.GetAttr("blob_name")),
Expiration: value.Int(azureCfg.GetAttr("expiration")),
SignedIdentifier: value.String(azureCfg.GetAttr("signed_identifier")),
BlobRead: value.Bool(azureCfg.GetAttr("blob_read")),
BlobWrite: value.Bool(azureCfg.GetAttr("blob_write")),
BlobDelete: value.Bool(azureCfg.GetAttr("blob_delete")),
ContainerRead: value.Bool(azureCfg.GetAttr("container_read")),
ContainerWrite: value.Bool(azureCfg.GetAttr("container_write")),
ContainerDelete: value.Bool(azureCfg.GetAttr("container_delete")),
ContainerList: value.Bool(azureCfg.GetAttr("container_list")),
}

return stop
})

return &azureAddon
}

func clientHasChange(c *management.Client) bool {
return c.String() != "{}"
}
46 changes: 46 additions & 0 deletions internal/auth0/client/resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -753,6 +753,31 @@ resource "auth0_client" "my_client" {
}
`

const testAccUpdateClientWithAddonsAzureBlob = `
resource "auth0_client" "my_client" {
name = "Acceptance Test - SSO Integration - {{.testName}}"
app_type = "sso_integration"
addons {
azure_blob {
account_name = "acmeorg"
storage_access_key = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=="
container_name = "my-container"
blob_name = "my-blob"
expiration = 10
signed_identifier = "id123"
blob_read = true
blob_write = true
blob_delete = true
container_read = true
container_write = true
container_delete = true
container_list = true
}
}
}
`

func TestAccClientAddons(t *testing.T) {
acctest.Test(t, resource.TestCase{
Steps: []resource.TestStep{
Expand All @@ -767,6 +792,27 @@ func TestAccClientAddons(t *testing.T) {
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.aws.0.lifetime_in_seconds", "32000"),
),
},
{
Config: acctest.ParseTestName(testAccUpdateClientWithAddonsAzureBlob, t.Name()),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("auth0_client.my_client", "name", fmt.Sprintf("Acceptance Test - SSO Integration - %s", t.Name())),
resource.TestCheckResourceAttr("auth0_client.my_client", "app_type", "sso_integration"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.#", "1"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.account_name", "acmeorg"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.storage_access_key", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=="),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_name", "my-container"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.blob_name", "my-blob"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.expiration", "10"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.signed_identifier", "id123"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.blob_read", "true"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.blob_write", "true"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.blob_delete", "true"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_read", "true"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_write", "true"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_delete", "true"),
resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_list", "true"),
),
},
},
})
}
Expand Down
Loading

0 comments on commit 70f39a7

Please sign in to comment.