Skip to content

Commit 785e3e5

Browse files
committed
chore: minor refactoring for consistency
1 parent c49b627 commit 785e3e5

6 files changed

Lines changed: 36 additions & 22 deletions

File tree

examples/data-sources/forgejo_personal_access_token/data-source.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ data "forgejo_user" "test_user" {
1717

1818
# Existing personal access token
1919
data "forgejo_personal_access_token" "test_token" {
20-
user_id = data.forgejo_user.test_user.id
21-
name = "test token"
20+
user = data.forgejo_user.test_user.login
21+
name = "test token"
2222
}

examples/resources/forgejo_personal_access_token/resource.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ resource "forgejo_user" "test_user" {
2121
}
2222

2323
resource "forgejo_personal_access_token" "test_token" {
24-
user_id = forgejo_user.test_user.id
25-
name = "test token"
24+
user = forgejo_user.test_user.login
25+
name = "test token"
2626
scopes = [
2727
"read:repository"
2828
]

internal/provider/personal_access_token_data_source.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"slices"
7+
"strings"
78

89
"github.com/hashicorp/terraform-plugin-framework/datasource"
910
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
@@ -26,7 +27,7 @@ type personalAccessTokenDataSource struct {
2627
}
2728

2829
// personalAccessTokenDataSourceModel maps the data source schema data.
29-
// https://pkg.go.dev/codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v3#CreateAccessTokenOption
30+
// https://pkg.go.dev/codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v3#AccessToken
3031
type personalAccessTokenDataSourceModel struct {
3132
User types.String `tfsdk:"user"`
3233
ID types.Int64 `tfsdk:"id"`
@@ -120,6 +121,9 @@ func (d *personalAccessTokenDataSource) Read(ctx context.Context, req datasource
120121
data.TokenLastEight = types.StringValue(token.TokenLastEight)
121122
data.Scopes, diags = types.SetValueFrom(ctx, types.StringType, token.Scopes)
122123
resp.Diagnostics.Append(diags...)
124+
if resp.Diagnostics.HasError() {
125+
return
126+
}
123127

124128
// Save data into Terraform state
125129
diags = resp.State.Set(ctx, &data)
@@ -159,13 +163,13 @@ func getPersonalAccessToken(
159163
switch res.StatusCode {
160164
case 403:
161165
msg = fmt.Sprintf(
162-
"Personal access tokens from user %s forbidden: %s",
166+
"Personal access tokens for user '%s' forbidden: %s",
163167
user,
164168
err,
165169
)
166170
case 404:
167171
msg = fmt.Sprintf(
168-
"Personal access tokens from user %s not found: %s",
172+
"Personal access tokens for user '%s' not found: %s",
169173
user,
170174
err,
171175
)
@@ -178,18 +182,19 @@ func getPersonalAccessToken(
178182
}
179183
}
180184
diags.AddError("Unable to list personal access tokens", msg)
185+
181186
return nil, diags
182187
}
183188

184189
// Search for personal access token with given name
185190
idx := slices.IndexFunc(tokens, func(t *forgejo.AccessToken) bool {
186-
return t.Name == tokenName
191+
return strings.EqualFold(t.Name, tokenName)
187192
})
188193
if idx == -1 {
189194
diags.AddError(
190195
"Unable to find personal access token by name",
191196
fmt.Sprintf(
192-
"Personal access token from user %s and name %s not found",
197+
"Personal access token with user '%s' and name '%s' not found",
193198
user,
194199
tokenName,
195200
),

internal/provider/personal_access_token_data_source_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ data "forgejo_personal_access_token" "test" {
2323
user = "non_existing_user"
2424
name = "tftest"
2525
}`,
26-
ExpectError: regexp.MustCompile("Personal access tokens from user non_existing_user not found"),
26+
ExpectError: regexp.MustCompile("Personal access tokens for user 'non_existing_user' not found"),
2727
},
2828
// Read testing (non-existent resource)
2929
{
@@ -37,7 +37,7 @@ data "forgejo_personal_access_token" "test" {
3737
user = forgejo_user.test.login
3838
name = "non_existent"
3939
}`,
40-
ExpectError: regexp.MustCompile("Personal access token from user test_user and name non_existent not found"),
40+
ExpectError: regexp.MustCompile("Personal access token with user 'test_user' and name 'non_existent' not found"),
4141
},
4242
// Read testing
4343
{

internal/provider/personal_access_token_resource.go

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ func (m *personalAccessTokenResourceModel) from(ctx context.Context, t *forgejo.
5656
m.Scopes, d = types.SetValueFrom(ctx, types.StringType, t.Scopes)
5757
diags.Append(d...)
5858

59+
// Token intentionally omitted (API only returns it once during initial creation)
60+
5961
return diags
6062
}
6163

@@ -84,9 +86,9 @@ func (r *personalAccessTokenResource) Metadata(_ context.Context, req resource.M
8486
// Schema defines the schema for the resource.
8587
func (r *personalAccessTokenResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) {
8688
resp.Schema = schema.Schema{
87-
Description: `Forgejo repository personal access token resource.
89+
MarkdownDescription: `Forgejo personal access token resource.
8890
89-
**Note**: Due to an upstream limitation, one cannot create access tokens when authorised with access tokens. Use basic-auth instead.`,
91+
**Note**: Due to an upstream limitation, one cannot create access tokens when authorized with access tokens. Use basic-auth instead.`,
9092

9193
Attributes: map[string]schema.Attribute{
9294
"user": schema.StringAttribute{
@@ -245,18 +247,18 @@ func (r *personalAccessTokenResource) Create(ctx context.Context, req resource.C
245247
)
246248
case 401:
247249
msg = fmt.Sprintf(
248-
"Authentication method is not allowed, use basic-auth: %s",
250+
"Authentication method not allowed, use basic-auth: %s",
249251
err,
250252
)
251253
case 403:
252254
msg = fmt.Sprintf(
253-
"User %s forbidden: %s",
255+
"Personal access token for user %s forbidden: %s",
254256
data.User.String(),
255257
err,
256258
)
257259
case 404:
258260
msg = fmt.Sprintf(
259-
"User %s not found: %s",
261+
"Personal access token for user %s not found: %s",
260262
data.User.String(),
261263
err,
262264
)
@@ -280,7 +282,7 @@ func (r *personalAccessTokenResource) Create(ctx context.Context, req resource.C
280282
return
281283
}
282284

283-
// The actual token is only returned on creation.
285+
// The actual token is only returned once during initial creation
284286
data.Token = types.StringValue(token.Token)
285287

286288
// Save data into Terraform state
@@ -302,7 +304,12 @@ func (r *personalAccessTokenResource) Read(ctx context.Context, req resource.Rea
302304
}
303305

304306
// Use Forgejo client to get personal access token
305-
token, diags := getPersonalAccessToken(ctx, r.client, data.User.ValueString(), data.Name.ValueString())
307+
token, diags := getPersonalAccessToken(
308+
ctx,
309+
r.client,
310+
data.User.ValueString(),
311+
data.Name.ValueString(),
312+
)
306313
resp.Diagnostics.Append(diags...)
307314
if resp.Diagnostics.HasError() {
308315
return
@@ -368,14 +375,16 @@ func (r *personalAccessTokenResource) Delete(ctx context.Context, req resource.D
368375
switch res.StatusCode {
369376
case 403:
370377
msg = fmt.Sprintf(
371-
"User %s forbidden: %s",
378+
"Personal access token with user %s and ID %d forbidden: %s",
372379
data.User.String(),
380+
data.ID.ValueInt64(),
373381
err,
374382
)
375383
case 404:
376384
msg = fmt.Sprintf(
377-
"User %s not found: %s",
385+
"Personal access token with user %s and ID %d not found: %s",
378386
data.User.String(),
387+
data.ID.ValueInt64(),
379388
err,
380389
)
381390
case 422:
@@ -388,7 +397,7 @@ func (r *personalAccessTokenResource) Delete(ctx context.Context, req resource.D
388397
)
389398
}
390399
}
391-
resp.Diagnostics.AddError("Unable to delete deploy key", msg)
400+
resp.Diagnostics.AddError("Unable to delete personal access token", msg)
392401
}
393402

394403
// NewpersonalAccessTokenResource is a helper function to simplify the provider implementation.

internal/provider/personal_access_token_resource_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ resource "forgejo_personal_access_token" "test" {
2424
name = "tftest"
2525
scopes = ["all"]
2626
}`,
27-
ExpectError: regexp.MustCompile("User \"non_existing_user\" not found"),
27+
ExpectError: regexp.MustCompile("Personal access token for user \"non_existing_user\" not found"),
2828
},
2929
// Create and Read testing
3030
{

0 commit comments

Comments
 (0)