fix: update database response handling and refactor role mapping
Some checks failed
CI Workflow / Check GoReleaser config (pull_request) Successful in 4s
CI Workflow / CI (pull_request) Failing after 15m11s
CI Workflow / Code coverage report (pull_request) Has been skipped
CI Workflow / Test readiness for publishing provider (pull_request) Successful in 19m5s
Some checks failed
CI Workflow / Check GoReleaser config (pull_request) Successful in 4s
CI Workflow / CI (pull_request) Failing after 15m11s
CI Workflow / Code coverage report (pull_request) Has been skipped
CI Workflow / Test readiness for publishing provider (pull_request) Successful in 19m5s
This commit is contained in:
parent
8b2d76482b
commit
9f07e3021e
3 changed files with 49 additions and 35 deletions
|
|
@ -419,7 +419,7 @@ func (r *databaseResource) Update(
|
|||
}
|
||||
|
||||
// Update existing database
|
||||
res, err := r.client.UpdateDatabasePartiallyRequest(
|
||||
err := r.client.UpdateDatabasePartiallyRequest(
|
||||
ctx,
|
||||
projectId,
|
||||
region,
|
||||
|
|
@ -434,12 +434,26 @@ func (r *databaseResource) Update(
|
|||
ctx = core.LogResponse(ctx)
|
||||
|
||||
// Map response body to schema
|
||||
err = mapResourceFields(res.Database, &model)
|
||||
databaseResp, err := getDatabaseById(ctx, r.client, projectId, region, instanceId, databaseId64)
|
||||
if err != nil {
|
||||
oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped
|
||||
if (ok && oapiErr.StatusCode == http.StatusNotFound) || errors.Is(err, errDatabaseNotFound) {
|
||||
resp.State.RemoveResource(ctx)
|
||||
return
|
||||
}
|
||||
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading database", fmt.Sprintf("Calling API: %v", err))
|
||||
return
|
||||
}
|
||||
|
||||
ctx = core.LogResponse(ctx)
|
||||
|
||||
// Map response body to schema
|
||||
err = mapResourceFields(databaseResp, &model)
|
||||
if err != nil {
|
||||
core.LogAndAddError(
|
||||
ctx,
|
||||
&resp.Diagnostics,
|
||||
"Error updating database",
|
||||
"Error reading database",
|
||||
fmt.Sprintf("Processing API payload: %v", err),
|
||||
)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ func TestMapDataSourceFields(t *testing.T) {
|
|||
"simple_values",
|
||||
&sqlserverflexalpha.GetUserResponse{
|
||||
|
||||
Roles: &[]sqlserverflexalpha.UserRole{
|
||||
Roles: &[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
"",
|
||||
|
|
@ -79,7 +79,7 @@ func TestMapDataSourceFields(t *testing.T) {
|
|||
"null_fields_and_int_conversions",
|
||||
&sqlserverflexalpha.GetUserResponse{
|
||||
Id: utils.Ptr(int64(1)),
|
||||
Roles: &[]sqlserverflexalpha.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: nil,
|
||||
Host: nil,
|
||||
Port: utils.Ptr(int64(2123456789)),
|
||||
|
|
@ -180,7 +180,7 @@ func TestMapFieldsCreate(t *testing.T) {
|
|||
"simple_values",
|
||||
&sqlserverflexalpha.CreateUserResponse{
|
||||
Id: utils.Ptr(int64(2)),
|
||||
Roles: &[]sqlserverflexalpha.UserRole{
|
||||
Roles: &[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
"",
|
||||
|
|
@ -221,7 +221,7 @@ func TestMapFieldsCreate(t *testing.T) {
|
|||
"null_fields_and_int_conversions",
|
||||
&sqlserverflexalpha.CreateUserResponse{
|
||||
Id: utils.Ptr(int64(3)),
|
||||
Roles: &[]sqlserverflexalpha.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: nil,
|
||||
Password: utils.Ptr(""),
|
||||
Host: nil,
|
||||
|
|
@ -329,7 +329,7 @@ func TestMapFields(t *testing.T) {
|
|||
{
|
||||
"simple_values",
|
||||
&sqlserverflexalpha.GetUserResponse{
|
||||
Roles: &[]sqlserverflexalpha.UserRole{
|
||||
Roles: &[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
"",
|
||||
|
|
@ -364,7 +364,7 @@ func TestMapFields(t *testing.T) {
|
|||
"null_fields_and_int_conversions",
|
||||
&sqlserverflexalpha.GetUserResponse{
|
||||
Id: utils.Ptr(int64(1)),
|
||||
Roles: &[]sqlserverflexalpha.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: nil,
|
||||
Host: nil,
|
||||
Port: utils.Ptr(int64(2123456789)),
|
||||
|
|
@ -435,16 +435,16 @@ func TestToCreatePayload(t *testing.T) {
|
|||
tests := []struct {
|
||||
description string
|
||||
input *resourceModel
|
||||
inputRoles []sqlserverflexalpha.UserRole
|
||||
inputRoles []string
|
||||
expected *sqlserverflexalpha.CreateUserRequestPayload
|
||||
isValid bool
|
||||
}{
|
||||
{
|
||||
"default_values",
|
||||
&resourceModel{},
|
||||
[]sqlserverflexalpha.UserRole{},
|
||||
[]string{},
|
||||
&sqlserverflexalpha.CreateUserRequestPayload{
|
||||
Roles: &[]sqlserverflexalpha.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: nil,
|
||||
},
|
||||
true,
|
||||
|
|
@ -454,12 +454,12 @@ func TestToCreatePayload(t *testing.T) {
|
|||
&resourceModel{
|
||||
Username: types.StringValue("username"),
|
||||
},
|
||||
[]sqlserverflexalpha.UserRole{
|
||||
[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
},
|
||||
&sqlserverflexalpha.CreateUserRequestPayload{
|
||||
Roles: &[]sqlserverflexalpha.UserRole{
|
||||
Roles: &[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
},
|
||||
|
|
@ -472,11 +472,11 @@ func TestToCreatePayload(t *testing.T) {
|
|||
&resourceModel{
|
||||
Username: types.StringNull(),
|
||||
},
|
||||
[]sqlserverflexalpha.UserRole{
|
||||
[]string{
|
||||
"",
|
||||
},
|
||||
&sqlserverflexalpha.CreateUserRequestPayload{
|
||||
Roles: &[]sqlserverflexalpha.UserRole{
|
||||
Roles: &[]string{
|
||||
"",
|
||||
},
|
||||
Username: nil,
|
||||
|
|
@ -486,7 +486,7 @@ func TestToCreatePayload(t *testing.T) {
|
|||
{
|
||||
"nil_model",
|
||||
nil,
|
||||
[]sqlserverflexalpha.UserRole{},
|
||||
[]string{},
|
||||
nil,
|
||||
false,
|
||||
},
|
||||
|
|
@ -495,9 +495,9 @@ func TestToCreatePayload(t *testing.T) {
|
|||
&resourceModel{
|
||||
Username: types.StringValue("username"),
|
||||
},
|
||||
[]sqlserverflexalpha.UserRole{},
|
||||
[]string{},
|
||||
&sqlserverflexalpha.CreateUserRequestPayload{
|
||||
Roles: &[]sqlserverflexalpha.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: utils.Ptr("username"),
|
||||
},
|
||||
true,
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ func TestMapDataSourceFields(t *testing.T) {
|
|||
"simple_values",
|
||||
&sqlserverflexbeta.GetUserResponse{
|
||||
|
||||
Roles: &[]sqlserverflexbeta.UserRole{
|
||||
Roles: &[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
"",
|
||||
|
|
@ -81,7 +81,7 @@ func TestMapDataSourceFields(t *testing.T) {
|
|||
"null_fields_and_int_conversions",
|
||||
&sqlserverflexbeta.GetUserResponse{
|
||||
Id: utils.Ptr(int64(1)),
|
||||
Roles: &[]sqlserverflexbeta.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: nil,
|
||||
Host: nil,
|
||||
Port: utils.Ptr(int64(2123456789)),
|
||||
|
|
@ -182,7 +182,7 @@ func TestMapFieldsCreate(t *testing.T) {
|
|||
"simple_values",
|
||||
&sqlserverflexbeta.CreateUserResponse{
|
||||
Id: utils.Ptr(int64(2)),
|
||||
Roles: &[]sqlserverflexbeta.UserRole{
|
||||
Roles: &[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
"",
|
||||
|
|
@ -223,7 +223,7 @@ func TestMapFieldsCreate(t *testing.T) {
|
|||
"null_fields_and_int_conversions",
|
||||
&sqlserverflexbeta.CreateUserResponse{
|
||||
Id: utils.Ptr(int64(3)),
|
||||
Roles: &[]sqlserverflexbeta.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: nil,
|
||||
Password: utils.Ptr(""),
|
||||
Host: nil,
|
||||
|
|
@ -331,7 +331,7 @@ func TestMapFields(t *testing.T) {
|
|||
{
|
||||
"simple_values",
|
||||
&sqlserverflexbeta.GetUserResponse{
|
||||
Roles: &[]sqlserverflexbeta.UserRole{
|
||||
Roles: &[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
"",
|
||||
|
|
@ -366,7 +366,7 @@ func TestMapFields(t *testing.T) {
|
|||
"null_fields_and_int_conversions",
|
||||
&sqlserverflexbeta.GetUserResponse{
|
||||
Id: utils.Ptr(int64(1)),
|
||||
Roles: &[]sqlserverflexbeta.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: nil,
|
||||
Host: nil,
|
||||
Port: utils.Ptr(int64(2123456789)),
|
||||
|
|
@ -437,16 +437,16 @@ func TestToCreatePayload(t *testing.T) {
|
|||
tests := []struct {
|
||||
description string
|
||||
input *resourceModel
|
||||
inputRoles []sqlserverflexbeta.UserRole
|
||||
inputRoles []string
|
||||
expected *sqlserverflexbeta.CreateUserRequestPayload
|
||||
isValid bool
|
||||
}{
|
||||
{
|
||||
"default_values",
|
||||
&resourceModel{},
|
||||
[]sqlserverflexbeta.UserRole{},
|
||||
[]string{},
|
||||
&sqlserverflexbeta.CreateUserRequestPayload{
|
||||
Roles: &[]sqlserverflexbeta.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: nil,
|
||||
},
|
||||
true,
|
||||
|
|
@ -456,12 +456,12 @@ func TestToCreatePayload(t *testing.T) {
|
|||
&resourceModel{
|
||||
Username: types.StringValue("username"),
|
||||
},
|
||||
[]sqlserverflexbeta.UserRole{
|
||||
[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
},
|
||||
&sqlserverflexbeta.CreateUserRequestPayload{
|
||||
Roles: &[]sqlserverflexbeta.UserRole{
|
||||
Roles: &[]string{
|
||||
"role_1",
|
||||
"role_2",
|
||||
},
|
||||
|
|
@ -474,11 +474,11 @@ func TestToCreatePayload(t *testing.T) {
|
|||
&resourceModel{
|
||||
Username: types.StringNull(),
|
||||
},
|
||||
[]sqlserverflexbeta.UserRole{
|
||||
[]string{
|
||||
"",
|
||||
},
|
||||
&sqlserverflexbeta.CreateUserRequestPayload{
|
||||
Roles: &[]sqlserverflexbeta.UserRole{
|
||||
Roles: &[]string{
|
||||
"",
|
||||
},
|
||||
Username: nil,
|
||||
|
|
@ -488,7 +488,7 @@ func TestToCreatePayload(t *testing.T) {
|
|||
{
|
||||
"nil_model",
|
||||
nil,
|
||||
[]sqlserverflexbeta.UserRole{},
|
||||
[]string{},
|
||||
nil,
|
||||
false,
|
||||
},
|
||||
|
|
@ -497,9 +497,9 @@ func TestToCreatePayload(t *testing.T) {
|
|||
&resourceModel{
|
||||
Username: types.StringValue("username"),
|
||||
},
|
||||
[]sqlserverflexbeta.UserRole{},
|
||||
[]string{},
|
||||
&sqlserverflexbeta.CreateUserRequestPayload{
|
||||
Roles: &[]sqlserverflexbeta.UserRole{},
|
||||
Roles: &[]string{},
|
||||
Username: utils.Ptr("username"),
|
||||
},
|
||||
true,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue