Skip to content

Commit

Permalink
skip_groups and skip_roles on data source okta_user. Addresses #1007
Browse files Browse the repository at this point in the history
  • Loading branch information
monde committed Mar 10, 2022
1 parent 439dc16 commit fdb92b1
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 10 deletions.
6 changes: 6 additions & 0 deletions examples/okta_user/datasource.tf
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,9 @@ data "okta_user" "test" {
data "okta_user" "read_by_id" {
user_id = okta_user.test.id
}

data "okta_user" "read_by_id_with_skip" {
user_id = okta_user.test.id
skip_groups = true
skip_roles = true
}
39 changes: 33 additions & 6 deletions okta/data_source_okta_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,18 @@ func dataSourceUser() *schema.Resource {
},
},
},
"skip_groups": {
Type: schema.TypeBool,
Optional: true,
Default: false,
Description: "Do not populate user groups information (prevents additional API call)",
},
"skip_roles": {
Type: schema.TypeBool,
Optional: true,
Default: false,
Description: "Do not populate user roles information (prevents additional API call)",
},
}),
}
}
Expand Down Expand Up @@ -78,14 +90,29 @@ func dataSourceUserRead(ctx context.Context, d *schema.ResourceData, m interface
if err != nil {
return diag.Errorf("failed to set user's properties: %v", err)
}
err = setAdminRoles(ctx, d, m)
if err != nil {
return diag.Errorf("failed to set user's admin roles: %v", err)

skip := false
if val, exists := d.GetOk("skip_roles"); exists {
skip = val.(bool)
}
err = setAllGroups(ctx, d, client)
if err != nil {
return diag.Errorf("failed to set user's groups: %v", err)
if !skip {
err = setAdminRoles(ctx, d, m)
if err != nil {
return diag.Errorf("failed to set user's admin roles: %v", err)
}
}

skip = false
if val, exists := d.GetOk("skip_groups"); exists {
skip = val.(bool)
}
if !skip {
err = setAllGroups(ctx, d, client)
if err != nil {
return diag.Errorf("failed to set user's groups: %v", err)
}
}

return nil
}

Expand Down
19 changes: 15 additions & 4 deletions okta/data_source_okta_user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ import (
func TestAccOktaDataSourceUser_read(t *testing.T) {
ri := acctest.RandInt()
mgr := newFixtureManager(user)
config := mgr.GetFixtures("datasource.tf", ri, t)
createUser := mgr.GetFixtures("datasource_create_user.tf", ri, t)
baseConfig := mgr.GetFixtures("datasource.tf", ri, t)
createUserConfig := mgr.GetFixtures("datasource_create_user.tf", ri, t)
rolesGroupsSkipsConfig := mgr.GetFixtures("datasource.tf", ri, t)

resource.Test(t, resource.TestCase{
PreCheck: func() {
Expand All @@ -20,13 +21,13 @@ func TestAccOktaDataSourceUser_read(t *testing.T) {
ProviderFactories: testAccProvidersFactories,
Steps: []resource.TestStep{
{
Config: createUser,
Config: createUserConfig,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("okta_user.test", "id"),
),
},
{
Config: config,
Config: baseConfig,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("data.okta_user.test", "id"),
resource.TestCheckResourceAttr("data.okta_user.test", "first_name", "TestAcc"),
Expand All @@ -36,6 +37,16 @@ func TestAccOktaDataSourceUser_read(t *testing.T) {
resource.TestCheckResourceAttr("data.okta_user.read_by_id", "last_name", "Smith"),
),
},
{
Config: rolesGroupsSkipsConfig,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("data.okta_user.read_by_id_with_skip", "id"),
resource.TestCheckResourceAttrSet("data.okta_user.read_by_id_with_skip", "skip_groups"),
resource.TestCheckResourceAttrSet("data.okta_user.read_by_id_with_skip", "skip_roles"),
resource.TestCheckResourceAttr("data.okta_user.read_by_id_with_skip", "skip_groups", "true"),
resource.TestCheckResourceAttr("data.okta_user.read_by_id_with_skip", "skip_roles", "true"),
),
},
},
})
}
4 changes: 4 additions & 0 deletions website/docs/d/user.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ data "okta_user" "example" {
- `comparison` - (Optional) Comparison to use.
- `value` - (Required) Value to compare with.

- `skip_groups` - (Optional) Additional API to collect user's groups will not be made.

- `skip_roles` - (Optional) Additional API to collect user's roles will not be made.

## Attributes Reference

- `admin_roles` - Administrator roles assigned to user.
Expand Down

0 comments on commit fdb92b1

Please sign in to comment.