Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions rabbitmq/data_source_exchange.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package rabbitmq

import (
"context"
"fmt"
"log"

rabbithole "github.com/michaelklishin/rabbit-hole/v2"
Expand Down Expand Up @@ -68,7 +67,7 @@ func dataSourcesReadExchange(ctx context.Context, d *schema.ResourceData, meta a

name := d.Get("name").(string)
vhost := d.Get("vhost").(string)
id := fmt.Sprintf("%s@%s", name, vhost)
id := buildVHostResourceId(name, vhost)

exchangeSettings, err := rmqc.GetExchange(vhost, name)
if err != nil {
Expand Down
6 changes: 3 additions & 3 deletions rabbitmq/resource_exchange.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func CreateExchange(d *schema.ResourceData, meta any) error {
return err
}

id := fmt.Sprintf("%s@%s", name, vhost)
id := buildVHostResourceId(name, vhost)
d.SetId(id)

return ReadExchange(d, meta)
Expand All @@ -92,7 +92,7 @@ func CreateExchange(d *schema.ResourceData, meta any) error {
func ReadExchange(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

name, vhost, err := parseResourceId(d)
name, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand Down Expand Up @@ -122,7 +122,7 @@ func ReadExchange(d *schema.ResourceData, meta any) error {
func DeleteExchange(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

name, vhost, err := parseResourceId(d)
name, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand Down
51 changes: 46 additions & 5 deletions rabbitmq/resource_exchange_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import (
"fmt"
"strings"
"testing"

rabbithole "github.com/michaelklishin/rabbit-hole/v2"
Expand All @@ -11,7 +10,7 @@
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
)

func TestAccExchange(t *testing.T) {
func TestAccExchange_basic(t *testing.T) {
var exchangeInfo rabbithole.ExchangeInfo
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Expand All @@ -28,6 +27,23 @@
})
}

func TestAccExchange_atSymbolEscaping(t *testing.T) {
var exchangeInfo rabbithole.ExchangeInfo
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccExchangeCheckDestroy(&exchangeInfo),
Steps: []resource.TestStep{
{
Config: testAccExchangeConfig_atSymbolsAreOk,
Check: testAccExchangeCheck(
"rabbitmq_exchange.test", &exchangeInfo,
),
},
},
})
}

func testAccExchangeCheck(rn string, exchangeInfo *rabbithole.ExchangeInfo) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[rn]
Expand All @@ -40,15 +56,15 @@
}

rmqc := testAccProvider.Meta().(*rabbithole.Client)
exchParts := strings.Split(rs.Primary.ID, "@")
name, vhost, err := parseVHostResourceIdString(rs.Primary.ID)

Check failure on line 59 in rabbitmq/resource_exchange_test.go

View workflow job for this annotation

GitHub Actions / lint

ineffectual assignment to err (ineffassign)

exchanges, err := rmqc.ListExchangesIn(exchParts[1])
exchanges, err := rmqc.ListExchangesIn(vhost)
if err != nil {
return fmt.Errorf("error retrieving exchange: %s", err)
}

for _, exchange := range exchanges {
if exchange.Name == exchParts[0] && exchange.Vhost == exchParts[1] {
if exchange.Name == name && exchange.Vhost == vhost {
exchangeInfo = &exchange
return nil
}
Expand Down Expand Up @@ -101,3 +117,28 @@
auto_delete = true
}
}`

const testAccExchangeConfig_atSymbolsAreOk = `
resource "rabbitmq_vhost" "test" {
name = "foo@test"
}

resource "rabbitmq_permissions" "guest" {
user = "guest"
vhost = "${rabbitmq_vhost.test.name}"
permissions {
configure = ".*"
write = ".*"
read = ".*"
}
}

resource "rabbitmq_exchange" "test" {
name = "bar@exchange"
vhost = "${rabbitmq_permissions.guest.vhost}"
settings {
type = "fanout"
durable = false
auto_delete = true
}
}`
8 changes: 4 additions & 4 deletions rabbitmq/resource_federation_upstream.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ func CreateFederationUpstream(d *schema.ResourceData, meta any) error {
return err
}

id := fmt.Sprintf("%s@%s", name, vhost)
id := buildVHostResourceId(name, vhost)
d.SetId(id)

return ReadFederationUpstream(d, meta)
Expand All @@ -137,7 +137,7 @@ func CreateFederationUpstream(d *schema.ResourceData, meta any) error {
func ReadFederationUpstream(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

name, vhost, err := parseResourceId(d)
name, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand Down Expand Up @@ -179,7 +179,7 @@ func ReadFederationUpstream(d *schema.ResourceData, meta any) error {
func UpdateFederationUpstream(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

name, vhost, err := parseResourceId(d)
name, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand All @@ -204,7 +204,7 @@ func UpdateFederationUpstream(d *schema.ResourceData, meta any) error {
func DeleteFederationUpstream(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

name, vhost, err := parseResourceId(d)
name, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand Down
5 changes: 1 addition & 4 deletions rabbitmq/resource_federation_upstream_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import (
"fmt"
"regexp"
"strings"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
Expand Down Expand Up @@ -123,9 +122,7 @@
return fmt.Errorf("federation upstream id not set")
}

id := strings.Split(rs.Primary.ID, "@")
name := id[0]
vhost := id[1]
name, vhost, err := parseVHostResourceIdString(rs.Primary.ID)

Check failure on line 125 in rabbitmq/resource_federation_upstream_test.go

View workflow job for this annotation

GitHub Actions / lint

ineffectual assignment to err (ineffassign)

rmqc := testAccProvider.Meta().(*rabbithole.Client)
upstreams, err := rmqc.ListFederationUpstreamsIn(vhost)
Expand Down
9 changes: 5 additions & 4 deletions rabbitmq/resource_operator_policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,16 @@ func CreateOperatorPolicy(d *schema.ResourceData, meta any) error {
return err
}

d.SetId(fmt.Sprintf("%s@%s", name, vhost))
id := buildVHostResourceId(name, vhost)
d.SetId(id)

return ReadOperatorPolicy(d, meta)
}

func ReadOperatorPolicy(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

name, vhost, err := parseResourceId(d)
name, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand Down Expand Up @@ -138,7 +139,7 @@ func ReadOperatorPolicy(d *schema.ResourceData, meta any) error {
func UpdateOperatorPolicy(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

name, vhost, err := parseResourceId(d)
name, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand All @@ -163,7 +164,7 @@ func UpdateOperatorPolicy(d *schema.ResourceData, meta any) error {
func DeleteOperatorPolicy(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

name, vhost, err := parseResourceId(d)
name, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand Down
5 changes: 2 additions & 3 deletions rabbitmq/resource_operator_policy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import (
"fmt"
"strings"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
Expand Down Expand Up @@ -57,15 +56,15 @@
}

rmqc := testAccProvider.Meta().(*rabbithole.Client)
operatorPolicyParts := strings.Split(rs.Primary.ID, "@")
name, vhost, err := parseVHostResourceIdString(rs.Primary.ID)

Check failure on line 59 in rabbitmq/resource_operator_policy_test.go

View workflow job for this annotation

GitHub Actions / lint

ineffectual assignment to err (ineffassign)

operatorPolicies, err := rmqc.ListOperatorPolicies()
if err != nil {
return fmt.Errorf("error retrieving operator policies: %s", err)
}

for _, p := range operatorPolicies {
if p.Name == operatorPolicyParts[0] && p.Vhost == operatorPolicyParts[1] {
if p.Name == name && p.Vhost == vhost {
operatorPolicy = &p
return nil
}
Expand Down
8 changes: 4 additions & 4 deletions rabbitmq/resource_permissions.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func CreatePermissions(d *schema.ResourceData, meta any) error {
return err
}

id := fmt.Sprintf("%s@%s", user, vhost)
id := buildVHostResourceId(user, vhost)
d.SetId(id)

return ReadPermissions(d, meta)
Expand All @@ -85,7 +85,7 @@ func CreatePermissions(d *schema.ResourceData, meta any) error {
func ReadPermissions(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

user, vhost, err := parseResourceId(d)
user, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand Down Expand Up @@ -114,7 +114,7 @@ func ReadPermissions(d *schema.ResourceData, meta any) error {
func UpdatePermissions(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

user, vhost, err := parseResourceId(d)
user, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand All @@ -139,7 +139,7 @@ func UpdatePermissions(d *schema.ResourceData, meta any) error {
func DeletePermissions(d *schema.ResourceData, meta any) error {
rmqc := meta.(*rabbithole.Client)

user, vhost, err := parseResourceId(d)
user, vhost, err := parseVHostResourceId(d)
if err != nil {
return err
}
Expand Down
47 changes: 42 additions & 5 deletions rabbitmq/resource_permissions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package rabbitmq

import (
"fmt"
"strings"
"testing"

rabbithole "github.com/michaelklishin/rabbit-hole/v2"
Expand All @@ -11,7 +10,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
)

func TestAccPermissions(t *testing.T) {
func TestAccPermissions_basic(t *testing.T) {
var permissionInfo rabbithole.PermissionInfo
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Expand All @@ -34,7 +33,24 @@ func TestAccPermissions(t *testing.T) {
})
}

func TestAccPermissions_Empty(t *testing.T) {
func TestAccPermissions_atSymbolEscaping(t *testing.T) {
var permissionInfo rabbithole.PermissionInfo
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccPermissionsCheckDestroy(&permissionInfo),
Steps: []resource.TestStep{
{
Config: testAccPermissionsConfig_atSymbolsAreOk,
Check: testAccPermissionsCheck(
"rabbitmq_permissions.test", &permissionInfo,
),
},
},
})
}

func TestAccPermissions_empty(t *testing.T) {

configCreate := `
resource "rabbitmq_vhost" "test" {
Expand Down Expand Up @@ -88,9 +104,9 @@ func testAccPermissionsCheck(rn string, permissionInfo *rabbithole.PermissionInf
return fmt.Errorf("error retrieving permissions: %s", err)
}

userParts := strings.Split(rs.Primary.ID, "@")
name, vhost, err := parseVHostResourceIdString(rs.Primary.ID)
for _, perm := range perms {
if perm.User == userParts[0] && perm.Vhost == userParts[1] {
if perm.User == name && perm.Vhost == vhost {
permissionInfo = &perm
return nil
}
Expand Down Expand Up @@ -159,3 +175,24 @@ resource "rabbitmq_permissions" "test" {
read = ""
}
}`

const testAccPermissionsConfig_atSymbolsAreOk = `
resource "rabbitmq_vhost" "test" {
name = "test"
}

resource "rabbitmq_user" "test" {
name = "someone@test"
password = "foobar"
tags = ["administrator"]
}

resource "rabbitmq_permissions" "test" {
user = "${rabbitmq_user.test.name}"
vhost = "${rabbitmq_vhost.test.name}"
permissions {
configure = ".*"
write = ".*"
read = ".*"
}
}`
Loading
Loading