Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed network zone #586

Merged
merged 1 commit into from
Aug 16, 2021
Merged
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
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ require (
github.com/hashicorp/go-hclog v0.16.2
github.com/hashicorp/go-retryablehttp v0.7.0
github.com/hashicorp/terraform-plugin-sdk/v2 v2.7.0
github.com/okta/okta-sdk-golang/v2 v2.5.3-0.20210813160422-23c2af2d9eaf
github.com/okta/okta-sdk-golang/v2 v2.5.3-0.20210816134726-462cb1f78692
)
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,10 @@ github.com/okta/okta-sdk-golang/v2 v2.5.2 h1:qsxG+1RzM3Rqsr8z33Zd2gnjFIy69PRKFSK
github.com/okta/okta-sdk-golang/v2 v2.5.2/go.mod h1:0y8stgdplWMjaEbMr4mVtw0R+BdktpGZRw2sWKZWsMs=
github.com/okta/okta-sdk-golang/v2 v2.5.3-0.20210813160422-23c2af2d9eaf h1:oIdfpLl2iDhdLR+p41OLnH/qfxZIcVCg6R5LEeZ71zI=
github.com/okta/okta-sdk-golang/v2 v2.5.3-0.20210813160422-23c2af2d9eaf/go.mod h1:0y8stgdplWMjaEbMr4mVtw0R+BdktpGZRw2sWKZWsMs=
github.com/okta/okta-sdk-golang/v2 v2.5.3-0.20210816114222-86747c53b21a h1:hBeBBwkH0UrmLvlTkepEgAYpTYSjK8XbIMEjeNUvqyc=
github.com/okta/okta-sdk-golang/v2 v2.5.3-0.20210816114222-86747c53b21a/go.mod h1:0y8stgdplWMjaEbMr4mVtw0R+BdktpGZRw2sWKZWsMs=
github.com/okta/okta-sdk-golang/v2 v2.5.3-0.20210816134726-462cb1f78692 h1:hANyuskmS6ewdqNZgvGQ6CUyaq4GATcGbYXyqUPFAPw=
github.com/okta/okta-sdk-golang/v2 v2.5.3-0.20210816134726-462cb1f78692/go.mod h1:0y8stgdplWMjaEbMr4mVtw0R+BdktpGZRw2sWKZWsMs=
github.com/patrickmn/go-cache v0.0.0-20180815053127-5633e0862627 h1:pSCLCl6joCFRnjpeojzOpEYs4q7Vditq8fySFG5ap3Y=
github.com/patrickmn/go-cache v0.0.0-20180815053127-5633e0862627/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
Expand Down
24 changes: 13 additions & 11 deletions okta/resource_okta_app_user_base_schema_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,6 @@ func resourceAppUserBaseSchemaResourceV0() *schema.Resource {
}

func resourceAppUserBaseSchemaCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
err := validateAppUserBaseSchema(d)
if err != nil {
return diag.FromErr(err)
}
if err := updateAppUserBaseSubschema(ctx, d, m); err != nil {
return err
}
Expand All @@ -83,10 +79,6 @@ func resourceAppUserBaseSchemaRead(ctx context.Context, d *schema.ResourceData,
}

func resourceAppUserBaseSchemaUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
err := validateAppUserBaseSchema(d)
if err != nil {
return diag.FromErr(err)
}
if err := updateAppUserBaseSubschema(ctx, d, m); err != nil {
return err
}
Expand All @@ -100,9 +92,19 @@ func resourceAppUserBaseSchemaDelete(context.Context, *schema.ResourceData, inte

// create or modify a subschema
func updateAppUserBaseSubschema(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
base := buildBaseUserSchema(d.Get("index").(string), buildUserBaseSchemaAttribute(d))
_, _, err := getOktaClientFromMetadata(m).UserSchema.
UpdateApplicationUserProfile(ctx, d.Get("app_id").(string), *base)
err := validateAppUserBaseSchema(d)
if err != nil {
return diag.FromErr(err)
}
base := buildBaseUserSchema(d)
url := fmt.Sprintf("/api/v1/meta/schemas/apps/%v/default", d.Get("app_id").(string))
re := getOktaClientFromMetadata(m).GetRequestExecutor()
req, err := re.WithAccept("application/json").WithContentType("application/json").
NewRequest("POST", url, base)
if err != nil {
return diag.FromErr(err)
}
_, err = re.Do(ctx, req, nil)
if err != nil {
return diag.Errorf("failed to update application user base schema: %v", err)
}
Expand Down
12 changes: 5 additions & 7 deletions okta/resource_okta_network_zone.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,11 @@ func resourceNetworkZoneCreate(ctx context.Context, d *schema.ResourceData, m in
if err != nil {
return diag.FromErr(err)
}
networkZone := buildNetworkZone(d)
_, _, err = getOktaClientFromMetadata(m).NetworkZone.CreateNetworkZone(ctx, *networkZone)
zone, _, err := getOktaClientFromMetadata(m).NetworkZone.CreateNetworkZone(ctx, buildNetworkZone(d))
if err != nil {
return diag.Errorf("failed to create network zone: %v", err)
}
d.SetId(networkZone.Id)
d.SetId(zone.Id)
return resourceNetworkZoneRead(ctx, d, m)
}

Expand Down Expand Up @@ -109,8 +108,7 @@ func resourceNetworkZoneUpdate(ctx context.Context, d *schema.ResourceData, m in
if err != nil {
return diag.FromErr(err)
}
networkZone := buildNetworkZone(d)
_, _, err = getOktaClientFromMetadata(m).NetworkZone.UpdateNetworkZone(ctx, d.Id(), *networkZone)
_, _, err = getOktaClientFromMetadata(m).NetworkZone.UpdateNetworkZone(ctx, d.Id(), buildNetworkZone(d))
if err != nil {
return diag.Errorf("failed to update network zone: %v", err)
}
Expand All @@ -125,7 +123,7 @@ func resourceNetworkZoneDelete(ctx context.Context, d *schema.ResourceData, m in
return nil
}

func buildNetworkZone(d *schema.ResourceData) *okta.NetworkZone {
func buildNetworkZone(d *schema.ResourceData) okta.NetworkZone {
var gatewaysList, proxiesList []*okta.NetworkZoneAddress
var locationsList []*okta.NetworkZoneLocation
zoneType := d.Get("type").(string)
Expand All @@ -148,7 +146,7 @@ func buildNetworkZone(d *schema.ResourceData) *okta.NetworkZone {
}
}

return &okta.NetworkZone{
return okta.NetworkZone{
Name: d.Get("name").(string),
Type: zoneType,
Gateways: gatewaysList,
Expand Down
1 change: 0 additions & 1 deletion okta/resource_okta_template_sms_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,5 @@ func TestAccOktaSmsTemplate_crud(t *testing.T) {

func doesSmsTemplateExist(id string) (bool, error) {
_, response, err := getOktaClientFromMetadata(testAccProvider.Meta()).SmsTemplate.GetSmsTemplate(context.Background(), id)

return doesResourceExist(response, err)
}
39 changes: 22 additions & 17 deletions okta/resource_okta_user_base_schema_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,18 +63,8 @@ func resourceUserBaseSchemaResourceV0() *schema.Resource {
}

func resourceUserBaseSchemaCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
err := validateUserBaseSchema(d)
if err != nil {
return diag.FromErr(err)
}
typeSchemaID, err := getUserTypeSchemaID(ctx, getOktaClientFromMetadata(m), d.Get("user_type").(string))
if err != nil {
return diag.Errorf("failed to create user base schema: %v", err)
}
base := buildBaseUserSchema(d.Get("index").(string), buildUserBaseSchemaAttribute(d))
_, _, err = getOktaClientFromMetadata(m).UserSchema.UpdateUserProfile(ctx, typeSchemaID, *base)
if err != nil {
return diag.Errorf("failed to create user base schema: %v", err)
if err := updateUserBaseSubschema(ctx, d, m); err != nil {
return err
}
d.SetId(d.Get("index").(string))
return resourceUserBaseSchemaRead(ctx, d, m)
Expand All @@ -99,20 +89,35 @@ func resourceUserBaseSchemaRead(ctx context.Context, d *schema.ResourceData, m i
}

func resourceUserBaseSchemaUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
if err := updateUserBaseSubschema(ctx, d, m); err != nil {
return err
}
return resourceUserBaseSchemaRead(ctx, d, m)
}

// create or modify a subschema
func updateUserBaseSubschema(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
err := validateUserBaseSchema(d)
if err != nil {
return diag.FromErr(err)
}
typeSchemaID, err := getUserTypeSchemaID(ctx, getOktaClientFromMetadata(m), d.Get("user_type").(string))
schemaID, err := getUserTypeSchemaID(ctx, getOktaClientFromMetadata(m), d.Get("user_type").(string))
if err != nil {
return diag.Errorf("failed to create user base schema: %v", err)
}
base := buildBaseUserSchema(d)
url := fmt.Sprintf("/api/v1/meta/schemas/user/%v", schemaID)
re := getOktaClientFromMetadata(m).GetRequestExecutor()
req, err := re.WithAccept("application/json").WithContentType("application/json").
NewRequest("POST", url, base)
if err != nil {
return diag.Errorf("failed to update user base schema: %v", err)
return diag.FromErr(err)
}
base := buildBaseUserSchema(d.Get("index").(string), buildUserBaseSchemaAttribute(d))
_, _, err = getOktaClientFromMetadata(m).UserSchema.UpdateUserProfile(ctx, typeSchemaID, *base)
_, err = re.Do(ctx, req, nil)
if err != nil {
return diag.Errorf("failed to create user base schema: %v", err)
}
return resourceUserBaseSchemaRead(ctx, d, m)
return nil
}

// can't delete Base schema
Expand Down
4 changes: 2 additions & 2 deletions okta/resource_okta_user_custom_schema_property_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func TestAccOktaUserSchema_crud(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "enum.2", "L"),
resource.TestCheckResourceAttr(resourceName, "enum.3", "XL"),
resource.TestCheckResourceAttr(resourceName, "one_of.#", "4"),
resource.TestCheckResourceAttr(resourceName, "pattern", ""),
// resource.TestCheckResourceAttr(resourceName, "pattern", ""),
resource.TestCheckResourceAttr(resourceName, "scope", "SELF"),
),
},
Expand Down Expand Up @@ -109,7 +109,7 @@ func TestAccOktaUserSchema_crud(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "permissions", "READ_WRITE"),
resource.TestCheckResourceAttr(resourceName, "master", "OKTA"),
resource.TestCheckResourceAttr(resourceName, "unique", "UNIQUE_VALIDATED"),
resource.TestCheckResourceAttr(resourceName, "pattern", ""),
// resource.TestCheckResourceAttr(resourceName, "pattern", ""),
),
},
{
Expand Down
25 changes: 18 additions & 7 deletions okta/user_schema.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package okta

import (
"encoding/json"
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand Down Expand Up @@ -204,8 +205,6 @@ func syncBaseUserSchema(d *schema.ResourceData, subschema *okta.UserSchemaAttrib
}
if subschema.Pattern != nil {
_ = d.Set("pattern", &subschema.Pattern)
} else {
_ = d.Set("pattern", "")
}
}

Expand Down Expand Up @@ -311,25 +310,37 @@ func buildUserBaseSchemaAttribute(d *schema.ResourceData) *okta.UserSchemaAttrib
p, ok := d.GetOk("pattern")
if ok {
userSchemaAttribute.Pattern = stringPtr(p.(string))
} else {
userSchemaAttribute.Pattern = nil
}
}
return userSchemaAttribute
}

func buildBaseUserSchema(index string, schema *okta.UserSchemaAttribute) *okta.UserSchema {
return &okta.UserSchema{
func buildBaseUserSchema(d *schema.ResourceData) []byte {
us := &okta.UserSchema{
Definitions: &okta.UserSchemaDefinitions{
Base: &okta.UserSchemaBase{
Id: "#base",
Properties: map[string]*okta.UserSchemaAttribute{
index: schema,
d.Get("index").(string): buildUserBaseSchemaAttribute(d),
},
Type: "object",
},
},
}
type localIDX okta.UserSchema
m, _ := json.Marshal((*localIDX)(us))
if d.Get("index").(string) != "login" {
return m
}
var a interface{}
_ = json.Unmarshal(m, &a)
b := a.(map[string]interface{})
p := us.Definitions.Base.Properties["login"].Pattern
if p == nil {
b["definitions"].(map[string]interface{})["base"].(map[string]interface{})["properties"].(map[string]interface{})["login"].(map[string]interface{})["pattern"] = nil
}
m, _ = json.Marshal(b)
return m
}

func buildCustomUserSchema(index string, schema *okta.UserSchemaAttribute) *okta.UserSchema {
Expand Down