mirror of
https://github.com/netbirdio/netbird.git
synced 2025-01-23 14:28:51 +01:00
[management] Fix getSetupKey call (#2927)
This commit is contained in:
parent
1bbabf70b0
commit
9db1932664
@ -439,17 +439,13 @@ components:
|
|||||||
example: 5
|
example: 5
|
||||||
required:
|
required:
|
||||||
- accessible_peers_count
|
- accessible_peers_count
|
||||||
SetupKey:
|
SetupKeyBase:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
description: Setup Key ID
|
description: Setup Key ID
|
||||||
type: string
|
type: string
|
||||||
example: 2531583362
|
example: 2531583362
|
||||||
key:
|
|
||||||
description: Setup Key value
|
|
||||||
type: string
|
|
||||||
example: A616097E-FCF0-48FA-9354-CA4A61142761
|
|
||||||
name:
|
name:
|
||||||
description: Setup key name identifier
|
description: Setup key name identifier
|
||||||
type: string
|
type: string
|
||||||
@ -518,6 +514,28 @@ components:
|
|||||||
- updated_at
|
- updated_at
|
||||||
- usage_limit
|
- usage_limit
|
||||||
- ephemeral
|
- ephemeral
|
||||||
|
SetupKeyClear:
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/SetupKeyBase'
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: Setup Key as plain text
|
||||||
|
type: string
|
||||||
|
example: A616097E-FCF0-48FA-9354-CA4A61142761
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
SetupKey:
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/SetupKeyBase'
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: Setup Key as secret
|
||||||
|
type: string
|
||||||
|
example: A6160****
|
||||||
|
required:
|
||||||
|
- key
|
||||||
SetupKeyRequest:
|
SetupKeyRequest:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -1918,7 +1936,7 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/SetupKey'
|
$ref: '#/components/schemas/SetupKeyClear'
|
||||||
'400':
|
'400':
|
||||||
"$ref": "#/components/responses/bad_request"
|
"$ref": "#/components/responses/bad_request"
|
||||||
'401':
|
'401':
|
||||||
|
@ -1062,7 +1062,94 @@ type SetupKey struct {
|
|||||||
// Id Setup Key ID
|
// Id Setup Key ID
|
||||||
Id string `json:"id"`
|
Id string `json:"id"`
|
||||||
|
|
||||||
// Key Setup Key value
|
// Key Setup Key as secret
|
||||||
|
Key string `json:"key"`
|
||||||
|
|
||||||
|
// LastUsed Setup key last usage date
|
||||||
|
LastUsed time.Time `json:"last_used"`
|
||||||
|
|
||||||
|
// Name Setup key name identifier
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// Revoked Setup key revocation status
|
||||||
|
Revoked bool `json:"revoked"`
|
||||||
|
|
||||||
|
// State Setup key status, "valid", "overused","expired" or "revoked"
|
||||||
|
State string `json:"state"`
|
||||||
|
|
||||||
|
// Type Setup key type, one-off for single time usage and reusable
|
||||||
|
Type string `json:"type"`
|
||||||
|
|
||||||
|
// UpdatedAt Setup key last update date
|
||||||
|
UpdatedAt time.Time `json:"updated_at"`
|
||||||
|
|
||||||
|
// UsageLimit A number of times this key can be used. The value of 0 indicates the unlimited usage.
|
||||||
|
UsageLimit int `json:"usage_limit"`
|
||||||
|
|
||||||
|
// UsedTimes Usage count of setup key
|
||||||
|
UsedTimes int `json:"used_times"`
|
||||||
|
|
||||||
|
// Valid Setup key validity status
|
||||||
|
Valid bool `json:"valid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetupKeyBase defines model for SetupKeyBase.
|
||||||
|
type SetupKeyBase struct {
|
||||||
|
// AutoGroups List of group IDs to auto-assign to peers registered with this key
|
||||||
|
AutoGroups []string `json:"auto_groups"`
|
||||||
|
|
||||||
|
// Ephemeral Indicate that the peer will be ephemeral or not
|
||||||
|
Ephemeral bool `json:"ephemeral"`
|
||||||
|
|
||||||
|
// Expires Setup Key expiration date
|
||||||
|
Expires time.Time `json:"expires"`
|
||||||
|
|
||||||
|
// Id Setup Key ID
|
||||||
|
Id string `json:"id"`
|
||||||
|
|
||||||
|
// LastUsed Setup key last usage date
|
||||||
|
LastUsed time.Time `json:"last_used"`
|
||||||
|
|
||||||
|
// Name Setup key name identifier
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// Revoked Setup key revocation status
|
||||||
|
Revoked bool `json:"revoked"`
|
||||||
|
|
||||||
|
// State Setup key status, "valid", "overused","expired" or "revoked"
|
||||||
|
State string `json:"state"`
|
||||||
|
|
||||||
|
// Type Setup key type, one-off for single time usage and reusable
|
||||||
|
Type string `json:"type"`
|
||||||
|
|
||||||
|
// UpdatedAt Setup key last update date
|
||||||
|
UpdatedAt time.Time `json:"updated_at"`
|
||||||
|
|
||||||
|
// UsageLimit A number of times this key can be used. The value of 0 indicates the unlimited usage.
|
||||||
|
UsageLimit int `json:"usage_limit"`
|
||||||
|
|
||||||
|
// UsedTimes Usage count of setup key
|
||||||
|
UsedTimes int `json:"used_times"`
|
||||||
|
|
||||||
|
// Valid Setup key validity status
|
||||||
|
Valid bool `json:"valid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetupKeyClear defines model for SetupKeyClear.
|
||||||
|
type SetupKeyClear struct {
|
||||||
|
// AutoGroups List of group IDs to auto-assign to peers registered with this key
|
||||||
|
AutoGroups []string `json:"auto_groups"`
|
||||||
|
|
||||||
|
// Ephemeral Indicate that the peer will be ephemeral or not
|
||||||
|
Ephemeral bool `json:"ephemeral"`
|
||||||
|
|
||||||
|
// Expires Setup Key expiration date
|
||||||
|
Expires time.Time `json:"expires"`
|
||||||
|
|
||||||
|
// Id Setup Key ID
|
||||||
|
Id string `json:"id"`
|
||||||
|
|
||||||
|
// Key Setup Key as plain text
|
||||||
Key string `json:"key"`
|
Key string `json:"key"`
|
||||||
|
|
||||||
// LastUsed Setup key last usage date
|
// LastUsed Setup key last usage date
|
||||||
|
@ -379,7 +379,7 @@ func (am *DefaultAccountManager) GetSetupKey(ctx context.Context, accountID, use
|
|||||||
return nil, status.NewAdminPermissionError()
|
return nil, status.NewAdminPermissionError()
|
||||||
}
|
}
|
||||||
|
|
||||||
setupKey, err := am.Store.GetSetupKeyByID(ctx, LockingStrengthShare, keyID, accountID)
|
setupKey, err := am.Store.GetSetupKeyByID(ctx, LockingStrengthShare, accountID, keyID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -210,22 +210,41 @@ func TestGetSetupKeys(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = manager.SaveGroup(context.Background(), account.Id, userID, &nbgroup.Group{
|
plainKey, err := manager.CreateSetupKey(context.Background(), account.Id, "key1", SetupKeyReusable, time.Hour, nil, SetupKeyUnlimitedUsage, userID, false)
|
||||||
ID: "group_1",
|
|
||||||
Name: "group_name_1",
|
|
||||||
Peers: []string{},
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = manager.SaveGroup(context.Background(), account.Id, userID, &nbgroup.Group{
|
type testCase struct {
|
||||||
ID: "group_2",
|
name string
|
||||||
Name: "group_name_2",
|
keyId string
|
||||||
Peers: []string{},
|
expectedFailure bool
|
||||||
|
}
|
||||||
|
|
||||||
|
testCase1 := testCase{
|
||||||
|
name: "Should get existing Setup Key",
|
||||||
|
keyId: plainKey.Id,
|
||||||
|
expectedFailure: false,
|
||||||
|
}
|
||||||
|
testCase2 := testCase{
|
||||||
|
name: "Should fail to get non-existent Setup Key",
|
||||||
|
keyId: "some key",
|
||||||
|
expectedFailure: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tCase := range []testCase{testCase1, testCase2} {
|
||||||
|
t.Run(tCase.name, func(t *testing.T) {
|
||||||
|
key, err := manager.GetSetupKey(context.Background(), account.Id, userID, tCase.keyId)
|
||||||
|
|
||||||
|
if tCase.expectedFailure {
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected to fail")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.NotEqual(t, plainKey.Key, key.Key)
|
||||||
})
|
})
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user