Skip to content

Commit

Permalink
add missing merge conflict code
Browse files Browse the repository at this point in the history
  • Loading branch information
sureshperiyappan committed Aug 1, 2024
1 parent 13e0c6a commit e8f4c37
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 61 deletions.
2 changes: 1 addition & 1 deletion genesyscloud/user/resource_genesyscloud_user_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ func UserExporter() *resourceExporter.ResourceExporter {
return &resourceExporter.ResourceExporter{
GetResourcesFunc: provider.GetAllWithPooledClient(GetAllUsers),
RefAttrs: map[string]*resourceExporter.RefAttrSettings{
"manager": {RefType: "genesyscloud_user"},
"manager": {RefType: resourceName},
"division_id": {RefType: "genesyscloud_auth_division"},
"routing_skills.skill_id": {RefType: "genesyscloud_routing_skill"},
"routing_languages.language_id": {RefType: "genesyscloud_routing_language"},
Expand Down
86 changes: 43 additions & 43 deletions genesyscloud/user/resource_genesyscloud_user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -239,14 +239,14 @@ func TestAccResourceUserAddresses(t *testing.T) {
fmt.Sprintf("depends_on = [%s.%s]", extensionPool.ResourceName, extensionPoolResource1),
) + extensionPool.GenerateExtensionPoolResource(&extensionPoolResource),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "name", addrUserName1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.number", addrPhone1),
resource.TestCheckNoResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.extension"),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeWork),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.other_emails.0.address", addrEmail2),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.other_emails.0.type", addrTypeHome),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "name", addrUserName1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.number", addrPhone1),
resource.TestCheckNoResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.extension"),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeWork),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.other_emails.0.address", addrEmail2),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.other_emails.0.type", addrTypeHome),
),
},
{
Expand Down Expand Up @@ -275,14 +275,14 @@ func TestAccResourceUserAddresses(t *testing.T) {
),
),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "name", addrUserName1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.number", addrPhone2),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", smsMediaType),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeHome),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.extension", addrPhoneExt1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.other_emails.0.address", addrEmail3),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.other_emails.0.type", addrTypeWork),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "name", addrUserName1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.number", addrPhone2),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", smsMediaType),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeHome),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.extension", addrPhoneExt1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.other_emails.0.address", addrEmail3),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.other_emails.0.type", addrTypeWork),
),
},
{
Expand All @@ -301,14 +301,14 @@ func TestAccResourceUserAddresses(t *testing.T) {
),
),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource2, "email", addrEmail2),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource2, "name", addrUserName2),
resource.TestCheckNoResourceAttr("genesyscloud_user."+addrUserResource2, "addresses.0.phone_numbers.0.number"),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource2, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource2, "addresses.0.phone_numbers.0.type", addrTypeHome),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource2, "addresses.0.phone_numbers.0.extension", addrPhoneExt2),
resource.TestCheckNoResourceAttr("genesyscloud_user."+addrUserResource2, "addresses.0.other_emails.0.address"),
resource.TestCheckNoResourceAttr("genesyscloud_user."+addrUserResource2, "addresses.0.other_emails.0.type"),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource2, "email", addrEmail2),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource2, "name", addrUserName2),
resource.TestCheckNoResourceAttr(resourceName+"."+addrUserResource2, "addresses.0.phone_numbers.0.number"),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource2, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource2, "addresses.0.phone_numbers.0.type", addrTypeHome),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource2, "addresses.0.phone_numbers.0.extension", addrPhoneExt2),
resource.TestCheckNoResourceAttr(resourceName+"."+addrUserResource2, "addresses.0.other_emails.0.address"),
resource.TestCheckNoResourceAttr(resourceName+"."+addrUserResource2, "addresses.0.other_emails.0.type"),
),
},
},
Expand Down Expand Up @@ -362,12 +362,12 @@ func TestAccResourceUserPhone(t *testing.T) {
fmt.Sprintf("depends_on = [%s.%s]", extensionPool.ResourceName, extensionPoolResource1),
) + extensionPool.GenerateExtensionPoolResource(&extensionPoolResource),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "name", addrUserName),
resource.TestCheckNoResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.number"),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.extension", addrPhone1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeWork),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "name", addrUserName),
resource.TestCheckNoResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.number"),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.extension", addrPhone1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeWork),
),
},
{
Expand All @@ -385,12 +385,12 @@ func TestAccResourceUserPhone(t *testing.T) {
),
),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "name", addrUserName),
resource.TestCheckNoResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.number"),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.extension", addrPhone2),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeWork),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "name", addrUserName),
resource.TestCheckNoResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.number"),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.extension", addrPhone2),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeWork),
),
},
{
Expand All @@ -408,12 +408,12 @@ func TestAccResourceUserPhone(t *testing.T) {
),
),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "name", addrUserName),
resource.TestCheckNoResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.extension"),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.number", addrPhone2),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr("genesyscloud_user."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeWork),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "email", addrEmail1),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "name", addrUserName),
resource.TestCheckNoResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.extension"),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.number", addrPhone2),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.media_type", phoneMediaType),
resource.TestCheckResourceAttr(resourceName+"."+addrUserResource1, "addresses.0.phone_numbers.0.type", addrTypeWork),
),
},
{
Expand Down Expand Up @@ -518,7 +518,7 @@ func TestAccResourceUserSkills(t *testing.T) {
"routing_skills = []",
),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckNoResourceAttr("genesyscloud_user."+userResource1, "skills.%"),
resource.TestCheckNoResourceAttr(resourceName+"."+userResource1, "skills.%"),
func(s *terraform.State) error {
time.Sleep(30 * time.Second) // Wait for 30 seconds for proper updation
return nil
Expand Down
76 changes: 59 additions & 17 deletions genesyscloud/user/resource_genesyscloud_user_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"terraform-provider-genesyscloud/genesyscloud/provider"
"terraform-provider-genesyscloud/genesyscloud/util"
chunksProcess "terraform-provider-genesyscloud/genesyscloud/util/chunks"
"terraform-provider-genesyscloud/genesyscloud/util/feature_toggles"
"terraform-provider-genesyscloud/genesyscloud/util/lists"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
Expand Down Expand Up @@ -613,33 +614,74 @@ func flattenUserAddresses(d *schema.ResourceData, addresses *[]platformclientv2.
phoneNumber := make(map[string]interface{})
phoneNumber["media_type"] = *address.MediaType

// Strip off any parentheses from phone numbers
if address.Address != nil {
phoneNumber["number"] = strings.Trim(*address.Address, "()")
} else if address.Display != nil {
// Some numbers are only returned in Display
isNumber, isExtension := getNumbers(d, i)
if feature_toggles.NewUserAddressesLogicExists() {
log.Printf("Feature toggle %s is set. Using new User Addressing logic.", feature_toggles.NewUserAddressesLogicToggleName())
// PHONE and SMS Addresses have four different ways they can return in the API
// We need to be able to handle them all, and strip off any parentheses that can surround
// values

if isNumber && phoneNumber["number"] != "" {
phoneNumber["number"] = strings.Trim(*address.Display, "()")
// 1.) Addresses that return an "address" field are phone numbers without extensions
if address.Address != nil {
phoneNumber["number"], _ = util.FormatAsE164Number(strings.Trim(*address.Address, "()"))
}
if isExtension {

// 2.) Addresses that return an "extension" field that matches the "display" field are
// true internal extensions that have been mapped to an extension pool
if address.Extension != nil {
if address.Display != nil {
if *address.Extension == *address.Display {
phoneNumber["extension"] = strings.Trim(*address.Extension, "()")
}
}
}

// 3.) Addresses that include both an "extension" and "display" field, but they do not
// match indicate that this is a phone number plus an extension
if address.Extension != nil {
if address.Display != nil {
if *address.Extension != *address.Display {
phoneNumber["extension"] = *address.Extension
phoneNumber["number"], _ = util.FormatAsE164Number(strings.Trim(*address.Display, "()"))
}
}
}

// 4.) Addresses that only include a "display" field (but not "address" or "extension") are
// considered an extension that has not been mapped to an internal extension pool yet.
if address.Address == nil && address.Extension == nil && address.Display != nil {
phoneNumber["extension"] = strings.Trim(*address.Display, "()")
}

if !isNumber && !isExtension {
if address.Extension == nil {
phoneNumber["extension"] = strings.Trim(*address.Display, "()")
} else if phoneNumber["number"] != "" {
} else {

// Strip off any parentheses from phone numbers
if address.Address != nil {
phoneNumber["number"] = strings.Trim(*address.Address, "()")
} else if address.Display != nil {
// Some numbers are only returned in Display
isNumber, isExtension := getNumbers(d, i)

if isNumber && phoneNumber["number"] != "" {
phoneNumber["number"] = strings.Trim(*address.Display, "()")
}
if isExtension {
phoneNumber["extension"] = strings.Trim(*address.Display, "()")
}

if !isNumber && !isExtension {
if address.Extension == nil {
phoneNumber["extension"] = strings.Trim(*address.Display, "()")
} else if phoneNumber["number"] != "" {
phoneNumber["number"] = strings.Trim(*address.Display, "()")
}
}
}
}

if address.Extension != nil {
phoneNumber["extension"] = *address.Extension
}
if address.Extension != nil {
phoneNumber["extension"] = *address.Extension
}

}
if address.VarType != nil {
phoneNumber["type"] = *address.VarType
}
Expand Down

0 comments on commit e8f4c37

Please sign in to comment.