Skip to content

Commit

Permalink
go fmt & fix update jc user display name
Browse files Browse the repository at this point in the history
  • Loading branch information
cheelim1 committed Apr 16, 2024
1 parent b49daed commit 19af6e2
Show file tree
Hide file tree
Showing 12 changed files with 108 additions and 108 deletions.
2 changes: 1 addition & 1 deletion jumpcloud/data_source_jumpcloud_application.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func dataSourceJumpCloudApplicationRead(d *schema.ResourceData, m interface{}) e

for _, application := range applications {
log.Printf("[DEBUG] Checking application with DisplayName: %s, DisplayLabel: %s\n", application.DisplayName, application.DisplayLabel)

if (nameExists && application.DisplayName == applicationName) || (displayLabelExists && application.DisplayLabel == displayLabel) {
d.SetId(application.Id)
return nil
Expand Down
8 changes: 4 additions & 4 deletions jumpcloud/data_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
// "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

//Make sure to replace "your-jumpcloud-api-key" with your actual JumpCloud API key.
// Make sure to replace "your-jumpcloud-api-key" with your actual JumpCloud API key.
const testConfig = `
provider "jumpcloud" {
# Configure your JumpCloud API key
Expand All @@ -21,9 +21,9 @@ data "jumpcloud_user" "test" {

func TestAccDataSourceJumpCloudUser(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: nil,
CheckDestroy: nil,
Steps: []resource.TestStep{
{
Config: testConfig,
Expand All @@ -34,4 +34,4 @@ func TestAccDataSourceJumpCloudUser(t *testing.T) {
},
},
})
}
}
5 changes: 1 addition & 4 deletions jumpcloud/data_source_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,12 @@ func getUserDetails(client *jcapiv1.APIClient, email string) (*jcapiv1.Systemuse
filterJson := fmt.Sprintf("[{\"email\": \"%s\"}]", email)
var filter interface{}
json.Unmarshal([]byte(filterJson), &filter)

optionals := map[string]interface{}{
"body": jcapiv1.Search{
Filter: &filter,
},
}



res, _, err := client.SearchApi.SearchSystemusersPost(ctx, contentType, accept, optionals)
if err != nil {
Expand All @@ -62,7 +60,6 @@ func getUserDetails(client *jcapiv1.APIClient, email string) (*jcapiv1.Systemuse
return &user, nil
}


func dataSourceJumpCloudUserRead(d *schema.ResourceData, m interface{}) error {
configv1 := convertV2toV1Config(m.(*jcapiv2.Configuration))
client := jcapiv1.NewAPIClient(configv1)
Expand Down
17 changes: 8 additions & 9 deletions jumpcloud/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,18 @@ func Provider() *schema.Provider {
},
},
ResourcesMap: map[string]*schema.Resource{
"jumpcloud_application": resourceApplication(),
"jumpcloud_user": resourceUser(),
"jumpcloud_user_group": resourceUserGroup(),
"jumpcloud_user_group_membership": resourceUserGroupMembership(),
"jumpcloud_system_group": resourceGroupsSystem(),
"jumpcloud_application": resourceApplication(),
"jumpcloud_user": resourceUser(),
"jumpcloud_user_group": resourceUserGroup(),
"jumpcloud_user_group_membership": resourceUserGroupMembership(),
"jumpcloud_system_group": resourceGroupsSystem(),
"jumpcloud_user_group_association": resourceUserGroupAssociation(),
},
DataSourcesMap: map[string]*schema.Resource{
"jumpcloud_user": dataSourceJumpCloudUser(),
"jumpcloud_user_group": dataSourceJumpCloudUserGroup(),
"jumpcloud_user": dataSourceJumpCloudUser(),
"jumpcloud_user_group": dataSourceJumpCloudUserGroup(),
"jumpcloud_application": dataSourceJumpCloudApplication(),

},
},
ConfigureFunc: providerConfigure,
}
}
Expand Down
2 changes: 1 addition & 1 deletion jumpcloud/resource_application_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ resource "jumpcloud_application" "example_app" {
aws_session_duration = 432000
}
`, displayLabel, randSuffix)
}
}
2 changes: 1 addition & 1 deletion jumpcloud/resource_system_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"fmt"

jcapiv2 "github.com/TheJumpCloud/jcapi-go/v2"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
)

func resourceGroupsSystem() *schema.Resource {
Expand Down
12 changes: 9 additions & 3 deletions jumpcloud/resource_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,14 +211,11 @@ func resourceUserUpdate(d *schema.ResourceData, m interface{}) error {
return err
}

// The code from the create function is almost identical, but the structure is different :
// jcapiv1.Systemuserput != jcapiv1.Systemuserputpost
payload := jcapiv1.Systemuserput{
Username: d.Get("username").(string),
Email: d.Get("email").(string),
Firstname: d.Get("firstname").(string),
Lastname: d.Get("lastname").(string),
Displayname: d.Get("display_name").(string),
Password: d.Get("password").(string),
EnableUserPortalMultifactor: d.Get("enable_mfa").(bool),
LdapBindingUser: d.Get("ldap_binding_user").(bool),
Expand All @@ -228,6 +225,15 @@ func resourceUserUpdate(d *schema.ResourceData, m interface{}) error {
PhoneNumbers: phoneNumbers,
}

// Dynamically set the display name if there's a change
if d.HasChange("display_name") {
if displayName, ok := d.GetOk("display_name"); ok {
payload.Displayname = displayName.(string)
} else {
payload.Displayname = "" // Clear display name if not provided in the config
}
}

req := map[string]interface{}{
"body": payload,
}
Expand Down
12 changes: 5 additions & 7 deletions jumpcloud/resource_user_group_association.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import (
func resourceUserGroupAssociation() *schema.Resource {
return &schema.Resource{
Description: "Provides a resource for associating a JumpCloud user group to objects like SSO applications, G Suite, Office 365, LDAP and more.",
Create: resourceUserGroupAssociationCreate,
Read: resourceUserGroupAssociationRead,
Update: nil,
Delete: resourceUserGroupAssociationDelete,
Create: resourceUserGroupAssociationCreate,
Read: resourceUserGroupAssociationRead,
Update: nil,
Delete: resourceUserGroupAssociationDelete,
Schema: map[string]*schema.Schema{
"group_id": {
Description: "The ID of the `resource_user_group` resource.",
Expand Down Expand Up @@ -59,7 +59,6 @@ func resourceUserGroupAssociation() *schema.Resource {
}
}


func modifyUserGroupAssociation(client *jcapiv2.APIClient,
d *schema.ResourceData, action string) diag.Diagnostics {

Expand Down Expand Up @@ -90,7 +89,6 @@ func resourceUserGroupAssociationCreate(d *schema.ResourceData, meta interface{}
return resourceUserGroupAssociationRead(d, meta)
}


func resourceUserGroupAssociationRead(d *schema.ResourceData, meta interface{}) error {
config := meta.(*jcapiv2.Configuration)
client := jcapiv2.NewAPIClient(config)
Expand Down Expand Up @@ -128,4 +126,4 @@ func resourceUserGroupAssociationDelete(d *schema.ResourceData, meta interface{}
return fmt.Errorf("Error deleting user group association: %v", diags)
}
return nil
}
}
8 changes: 4 additions & 4 deletions jumpcloud/resource_user_group_association_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ func TestAccUserGroupAssociation(t *testing.T) {
randSuffix := acctest.RandStringFromCharSet(10, acctest.CharSetAlpha)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: nil,
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: nil,
Steps: []resource.TestStep{
{
Config: testUserGroupAssocConfig(randSuffix),
Expand Down Expand Up @@ -42,4 +42,4 @@ resource "jumpcloud_user_group_association" "test_association" {
type = "application"
}
`, randSuffix, randSuffix, randSuffix)
}
}
140 changes: 70 additions & 70 deletions jumpcloud/resource_user_group_membership.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,85 +11,85 @@ import (
)

func resourceUserGroupMembership() *schema.Resource {
return &schema.Resource{
Description: "Provides a resource for managing user group memberships.",
Create: resourceUserGroupMembershipCreate,
Read: resourceUserGroupMembershipRead,
Update: nil, // No update routine, as association cannot be updated
Delete: resourceUserGroupMembershipDelete,
Schema: map[string]*schema.Schema{
"userid": {
Description: "The ID of the `resource_user` object.",
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"groupid": {
Description: "The ID of the `resource_user_group` object.",
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
},
Importer: &schema.ResourceImporter{
State: userGroupMembershipImporter,
},
}
return &schema.Resource{
Description: "Provides a resource for managing user group memberships.",
Create: resourceUserGroupMembershipCreate,
Read: resourceUserGroupMembershipRead,
Update: nil, // No update routine, as association cannot be updated
Delete: resourceUserGroupMembershipDelete,
Schema: map[string]*schema.Schema{
"userid": {
Description: "The ID of the `resource_user` object.",
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"groupid": {
Description: "The ID of the `resource_user_group` object.",
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
},
Importer: &schema.ResourceImporter{
State: userGroupMembershipImporter,
},
}
}

func userGroupMembershipImporter(d *schema.ResourceData, m interface{}) ([]*schema.ResourceData, error) {
ids := strings.Split(d.Id(), "/")
if len(ids) != 2 {
return nil, fmt.Errorf("Invalid import format. Expected 'groupid/userid'")
}
groupID, userID := ids[0], ids[1]
ids := strings.Split(d.Id(), "/")
if len(ids) != 2 {
return nil, fmt.Errorf("Invalid import format. Expected 'groupid/userid'")
}
groupID, userID := ids[0], ids[1]

_ = d.Set("groupid", groupID)
_ = d.Set("userid", userID)
_ = d.Set("groupid", groupID)
_ = d.Set("userid", userID)

config := m.(*jcapiv2.Configuration)
client := jcapiv2.NewAPIClient(config)
config := m.(*jcapiv2.Configuration)
client := jcapiv2.NewAPIClient(config)

isMember, err := checkUserGroupMembership(client, groupID, userID)
if err != nil {
return nil, err
}
isMember, err := checkUserGroupMembership(client, groupID, userID)
if err != nil {
return nil, err
}

if isMember {
d.SetId(groupID + "/" + userID)
return []*schema.ResourceData{d}, nil
}
if isMember {
d.SetId(groupID + "/" + userID)
return []*schema.ResourceData{d}, nil
}

return nil, fmt.Errorf("User %s is not a member of group %s", userID, groupID)
return nil, fmt.Errorf("User %s is not a member of group %s", userID, groupID)
}

func checkUserGroupMembership(client *jcapiv2.APIClient, groupID, userID string) (bool, error) {
for i := 0; ; i++ {
optionals := map[string]interface{}{
"groupId": groupID,
"limit": int32(100),
"skip": int32(i * 100),
}

graphconnect, _, err := client.UserGroupMembersMembershipApi.GraphUserGroupMembersList(
context.TODO(), groupID, "", "", optionals)
if err != nil {
return false, err
}

for _, v := range graphconnect {
if v.To.Id == userID {
return true, nil
}
}

if len(graphconnect) < 100 {
break
} else {
time.Sleep(100 * time.Millisecond)
}
}
return false, nil
for i := 0; ; i++ {
optionals := map[string]interface{}{
"groupId": groupID,
"limit": int32(100),
"skip": int32(i * 100),
}

graphconnect, _, err := client.UserGroupMembersMembershipApi.GraphUserGroupMembersList(
context.TODO(), groupID, "", "", optionals)
if err != nil {
return false, err
}

for _, v := range graphconnect {
if v.To.Id == userID {
return true, nil
}
}

if len(graphconnect) < 100 {
break
} else {
time.Sleep(100 * time.Millisecond)
}
}
return false, nil
}

func modifyUserGroupMembership(client *jcapiv2.APIClient,
Expand All @@ -108,7 +108,7 @@ func modifyUserGroupMembership(client *jcapiv2.APIClient,
_, err := client.UserGroupMembersMembershipApi.GraphUserGroupMembersPost(
context.TODO(), d.Get("groupid").(string), "", "", req)

return err
return err
}

func resourceUserGroupMembershipCreate(d *schema.ResourceData, m interface{}) error {
Expand All @@ -131,7 +131,7 @@ func resourceUserGroupMembershipRead(d *schema.ResourceData, m interface{}) erro
optionals := map[string]interface{}{
"groupId": d.Get("groupid").(string),
"limit": int32(100),
"skip": int32(i * 100),
"skip": int32(i * 100),
}

graphconnect, _, err := client.UserGroupMembersMembershipApi.GraphUserGroupMembersList(
Expand Down
6 changes: 3 additions & 3 deletions jumpcloud/structures_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ import (
jcapiv1 "github.com/TheJumpCloud/jcapi-go/v1"
)

func flattenPhoneNumbers(pn []jcapiv1.SystemuserreturnPhoneNumbers) []interface{} {
func flattenPhoneNumbers(pn []jcapiv1.SystemuserreturnPhoneNumbers) []interface{} {
if pn == nil {
return make([]interface{}, 0)
}

phoneNumbers := make([]interface{}, 0)
for _, v := range pn {
phoneNumbers = append(phoneNumbers, map[string]interface{}{
"type": v.Type_,
"type": v.Type_,
"number": v.Number,
})
}
Expand All @@ -30,7 +30,7 @@ func expandPhoneNumbers(input []interface{}) []map[string]string {
if phoneNumber, ok := v.(map[string]interface{}); ok {
phoneNumbers = append(phoneNumbers, map[string]string{
"number": phoneNumber["number"].(string),
"type": phoneNumber["type"].(string),
"type": phoneNumber["type"].(string),
})
}

Expand Down
2 changes: 1 addition & 1 deletion jumpcloud/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ func stringInSlice(a string, list []string) bool {
}
}
return false
}
}

0 comments on commit 19af6e2

Please sign in to comment.