Skip to content

Commit 9117d8c

Browse files
committed
Merge remote-tracking branch 'upstream/release/v1.17' into codeberg-1.17
2 parents dfc4a98 + 8769df1 commit 9117d8c

File tree

41 files changed

+932
-199
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+932
-199
lines changed

CHANGELOG.md

Lines changed: 38 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,7 @@ This changelog goes through all the changes that have been made in each release
44
without substantial changes to our git log; to see the highlights of what has
55
been added to each release, please refer to the [blog](https://blog.gitea.io).
66

7-
## [1.17.0-rc2](https://github.com/go-gitea/gitea/releases/tag/v1.17.0-rc2) - 2022-07-13
8-
9-
* SECURITY
10-
* Use git.HOME_PATH for Git HOME directory (#20114) (#20293)
11-
* Add write check for creating Commit Statuses (#20332) (#20333)
12-
* ENHANCEMENTS
13-
* Make notification bell more prominent on mobile (#20108, #20236, #20251) (#20269)
14-
* Adjust max-widths for the repository file table (#20243) (#20247)
15-
* Display full name (#20171) (#20246)
16-
* BUGFIXES
17-
* Allow RSA 2047 bit keys (#20272) (#20396)
18-
* Add missing return for when topic isn't found (#20351) (#20395)
19-
* Fix commit status icon when in subdirectory (#20285) (#20385)
20-
* Initialize cron last (#20373) (#20384)
21-
* Set target on create release with existing tag (#20381) (#20382)
22-
* Update xorm.io/xorm to fix a interpreting db column sizes issue on 32bit systems (#20371) (#20372)
23-
* Make sure `repo_dir` is an empty directory or doesn't exist before 'dump-repo' (#20205) (#20370)
24-
* Prevent context deadline error propagation in GetCommitsInfo (#20346) (#20361)
25-
* Correctly handle draft releases without a tag (#20314) (#20335)
26-
* Prevent "empty" scrollbars on Firefox (#20294) (#20308)
27-
* Refactor SSH init code, fix directory creation for TrustedUserCAKeys file (#20299) (#20306)
28-
* Bump goldmark to v1.4.13 (#20300) (#20301)
29-
* Do not create empty ".ssh" directory when loading config (#20289) (#20298)
30-
* Fix NPE when using non-numeric (#20277) (#20278)
31-
* Store read access in access for team repositories (#20275) (#20276)
32-
* EscapeFilter the group dn membership (#20200) (#20254)
33-
* Only show Followers that current user can access (#20220) (#20252)
34-
* Update Bluemonday to v1.0.19 (#20199) (#20209)
35-
* Refix indices on actions table (#20158) (#20198)
36-
* Check if project has the same repository id with issue when assign project to issue (#20133) (#20188)
37-
* Fix remove file on initial comment (#20127) (#20128)
38-
* Catch the error before the response is processed by goth (#20000) (#20102)
39-
* Dashboard feed respect setting.UI.FeedPagingNum again (#20094) (#20099)
40-
* Alter hook_task TEXT fields to LONGTEXT (#20038) (#20041)
41-
* Respond with a 401 on git push when password isn't changed yet (#20026) (#20027)
42-
* Return 404 when tag is broken (#20017) (#20024)
43-
44-
## [1.17.0-rc1](https://github.com/go-gitea/gitea/releases/tag/v1.17.0-rc1) - 2022-06-18
7+
## [1.17.0](https://github.com/go-gitea/gitea/releases/tag/v1.17.0) - 2022-07-30
458

469
* BREAKING
4710
* Require go1.18 for Gitea 1.17 (#19918)
@@ -66,6 +29,8 @@ been added to each release, please refer to the [blog](https://blog.gitea.io).
6629
* Restrict email address validation (#17688)
6730
* Refactor Router Logger (#17308)
6831
* SECURITY
32+
* Use git.HOME_PATH for Git HOME directory (#20114) (#20293)
33+
* Add write check for creating Commit Statuses (#20332) (#20333)
6934
* Remove deprecated SSH ciphers from default (#18697)
7035
* FEDERATION
7136
* Return statistic information for nodeinfo (#19561)
@@ -104,6 +69,9 @@ been added to each release, please refer to the [blog](https://blog.gitea.io).
10469
* Return primary language and repository language stats API URL (#18396)
10570
* Implement http signatures support for the API (#17565)
10671
* ENHANCEMENTS
72+
* Make notification bell more prominent on mobile (#20108, #20236, #20251) (#20269)
73+
* Adjust max-widths for the repository file table (#20243) (#20247)
74+
* Display full name (#20171) (#20246)
10775
* Add dbconsistency checks for Stopwatches (#20010)
10876
* Add fetch.writeCommitGraph to gitconfig (#20006)
10977
* Add fgprof pprof profiler (#20005)
@@ -148,7 +116,6 @@ been added to each release, please refer to the [blog](https://blog.gitea.io).
148116
* PullService lock via pullID (#19520)
149117
* Make repository file list useable on mobile (#19515)
150118
* more context for models (#19511)
151-
* Allow package dump skipping (#19506)
152119
* Refactor readme file renderer (#19502)
153120
* By default force vertical tabs on mobile (#19486)
154121
* Github style following followers (#19482)
@@ -165,7 +132,6 @@ been added to each release, please refer to the [blog](https://blog.gitea.io).
165132
* Move access and repo permission to models/perm/access (#19350)
166133
* Disallow selecting the text of buttons (#19330)
167134
* Allow custom redirect for landing page (#19324)
168-
* Repository level enable package or disable (#19323)
169135
* Remove dependent on session auth for api/v1 routers (#19321)
170136
* Never use /api/v1 from Gitea UI Pages (#19318)
171137
* Remove legacy unmaintained packages, refactor to support change default locale (#19308)
@@ -222,13 +188,44 @@ been added to each release, please refer to the [blog](https://blog.gitea.io).
222188
* Allow custom default merge message with .gitea/default_merge_message/<merge_style>_TEMPLATE.md (#18177)
223189
* Prettify number of issues (#17760)
224190
* Add a "admin user generate-access-token" subcommand (#17722)
225-
* Move project files into models/project sub package (#17704)
226191
* Custom regexp external issues (#17624)
227192
* Add smtp password to install page (#17564)
228193
* Add config options to hide issue events (#17414)
229194
* Prevent double click new issue/pull/comment button (#16157)
230195
* Show issue assignee on project board (#15232)
231196
* BUGFIXES
197+
* WebAuthn CredentialID field needs to be increased in size (#20530) (#20555)
198+
* Ensure that all unmerged files are merged when conflict checking (#20528) (#20536)
199+
* Stop logging EOFs and exit(1)s in ssh handler (#20476) (#20529)
200+
* Add labels to two buttons that were missing them (#20419) (#20524)
201+
* Fix ROOT_URL detection for URLs without trailing slash (#20502) (#20503)
202+
* Dismiss prior pull reviews if done via web in review dismiss (#20197) (#20407)
203+
* Allow RSA 2047 bit keys (#20272) (#20396)
204+
* Add missing return for when topic isn't found (#20351) (#20395)
205+
* Fix commit status icon when in subdirectory (#20285) (#20385)
206+
* Initialize cron last (#20373) (#20384)
207+
* Set target on create release with existing tag (#20381) (#20382)
208+
* Update xorm.io/xorm to fix a interpreting db column sizes issue on 32bit systems (#20371) (#20372)
209+
* Make sure `repo_dir` is an empty directory or doesn't exist before 'dump-repo' (#20205) (#20370)
210+
* Prevent context deadline error propagation in GetCommitsInfo (#20346) (#20361)
211+
* Correctly handle draft releases without a tag (#20314) (#20335)
212+
* Prevent "empty" scrollbars on Firefox (#20294) (#20308)
213+
* Refactor SSH init code, fix directory creation for TrustedUserCAKeys file (#20299) (#20306)
214+
* Bump goldmark to v1.4.13 (#20300) (#20301)
215+
* Do not create empty ".ssh" directory when loading config (#20289) (#20298)
216+
* Fix NPE when using non-numeric (#20277) (#20278)
217+
* Store read access in access for team repositories (#20275) (#20276)
218+
* EscapeFilter the group dn membership (#20200) (#20254)
219+
* Only show Followers that current user can access (#20220) (#20252)
220+
* Update Bluemonday to v1.0.19 (#20199) (#20209)
221+
* Refix indices on actions table (#20158) (#20198)
222+
* Check if project has the same repository id with issue when assign project to issue (#20133) (#20188)
223+
* Fix remove file on initial comment (#20127) (#20128)
224+
* Catch the error before the response is processed by goth (#20000) (#20102)
225+
* Dashboard feed respect setting.UI.FeedPagingNum again (#20094) (#20099)
226+
* Alter hook_task TEXT fields to LONGTEXT (#20038) (#20041)
227+
* Respond with a 401 on git push when password isn't changed yet (#20026) (#20027)
228+
* Return 404 when tag is broken (#20017) (#20024)
232229
* Alter hook_task TEXT fields to LONGTEXT (#20038) (#20041)
233230
* Respond with a 401 on git push when password isn't changed yet (#20026) (#20027)
234231
* Return 404 when tag is broken (#20017) (#20024)
@@ -303,7 +300,6 @@ been added to each release, please refer to the [blog](https://blog.gitea.io).
303300
* MISC
304301
* Fix aria for logo (#19955)
305302
* In code search, get code unit accessible repos in one (main) query (#19764)
306-
* Enable packages by default again (#19746)
307303
* Add tooltip to pending PR comments (#19662)
308304
* Improve sync performance for pull-mirrors (#19125)
309305
* Improve dashboard's repo list performance (#18963)

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
gitea.com/go-chi/cache v0.2.0
1010
gitea.com/go-chi/captcha v0.0.0-20211013065431-70641c1a35d5
1111
gitea.com/go-chi/session v0.0.0-20211218221615-e3605d8b28b8
12-
gitea.com/lunny/levelqueue v0.4.1
12+
gitea.com/lunny/levelqueue v0.4.2-0.20220729054728-f020868cc2f7
1313
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121
1414
github.com/NYTimes/gziphandler v1.1.1
1515
github.com/PuerkitoBio/goquery v1.8.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ gitea.com/go-chi/cache v0.2.0 h1:E0npuTfDW6CT1yD8NMDVc1SK6IeRjfmRL2zlEsCEd7w=
7878
gitea.com/go-chi/cache v0.2.0/go.mod h1:iQlVK2aKTZ/rE9UcHyz9pQWGvdP9i1eI2spOpzgCrtE=
7979
gitea.com/go-chi/session v0.0.0-20211218221615-e3605d8b28b8 h1:tJQRXgZigkLeeW9LPlps9G9aMoE6LAmqigLA+wxmd1Q=
8080
gitea.com/go-chi/session v0.0.0-20211218221615-e3605d8b28b8/go.mod h1:fc/pjt5EqNKgqQXYzcas1Z5L5whkZHyOvTA7OzWVJck=
81-
gitea.com/lunny/levelqueue v0.4.1 h1:RZ+AFx5gBsZuyqCvofhAkPQ9uaVDPJnsULoJZIYaJNw=
82-
gitea.com/lunny/levelqueue v0.4.1/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU=
81+
gitea.com/lunny/levelqueue v0.4.2-0.20220729054728-f020868cc2f7 h1:Zc3RQWC2xOVglLciQH/ZIC5IqSk3Jn96LflGQLv18Rg=
82+
gitea.com/lunny/levelqueue v0.4.2-0.20220729054728-f020868cc2f7/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU=
8383
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
8484
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
8585
gitee.com/travelliu/dm v1.8.11192/go.mod h1:DHTzyhCrM843x9VdKVbZ+GKXGRbKM2sJ4LxihRxShkE=

integrations/api_packages_container_test.go

Lines changed: 70 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626

2727
func TestPackageContainer(t *testing.T) {
2828
defer prepareTestEnv(t)()
29+
2930
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User)
3031

3132
has := func(l packages_model.PackagePropertyList, name string) bool {
@@ -36,6 +37,15 @@ func TestPackageContainer(t *testing.T) {
3637
}
3738
return false
3839
}
40+
getAllByName := func(l packages_model.PackagePropertyList, name string) []string {
41+
values := make([]string, 0, len(l))
42+
for _, pp := range l {
43+
if pp.Name == name {
44+
values = append(values, pp.Value)
45+
}
46+
}
47+
return values
48+
}
3949

4050
images := []string{"test", "te/st"}
4151
tags := []string{"latest", "main"}
@@ -66,7 +76,7 @@ func TestPackageContainer(t *testing.T) {
6676
Token string `json:"token"`
6777
}
6878

69-
authenticate := []string{`Bearer realm="` + setting.AppURL + `v2/token"`}
79+
authenticate := []string{`Bearer realm="` + setting.AppURL + `v2/token",service="container_registry",scope="*"`}
7080

7181
t.Run("Anonymous", func(t *testing.T) {
7282
defer PrintCurrentTest(t)()
@@ -236,7 +246,8 @@ func TestPackageContainer(t *testing.T) {
236246
assert.Nil(t, pd.SemVer)
237247
assert.Equal(t, image, pd.Package.Name)
238248
assert.Equal(t, tag, pd.Version.Version)
239-
assert.True(t, has(pd.Properties, container_module.PropertyManifestTagged))
249+
assert.ElementsMatch(t, []string{strings.ToLower(user.LowerName + "/" + image)}, getAllByName(pd.PackageProperties, container_module.PropertyRepository))
250+
assert.True(t, has(pd.VersionProperties, container_module.PropertyManifestTagged))
240251

241252
assert.IsType(t, &container_module.Metadata{}, pd.Metadata)
242253
metadata := pd.Metadata.(*container_module.Metadata)
@@ -330,7 +341,8 @@ func TestPackageContainer(t *testing.T) {
330341
assert.Nil(t, pd.SemVer)
331342
assert.Equal(t, image, pd.Package.Name)
332343
assert.Equal(t, untaggedManifestDigest, pd.Version.Version)
333-
assert.False(t, has(pd.Properties, container_module.PropertyManifestTagged))
344+
assert.ElementsMatch(t, []string{strings.ToLower(user.LowerName + "/" + image)}, getAllByName(pd.PackageProperties, container_module.PropertyRepository))
345+
assert.False(t, has(pd.VersionProperties, container_module.PropertyManifestTagged))
334346

335347
assert.IsType(t, &container_module.Metadata{}, pd.Metadata)
336348

@@ -362,18 +374,10 @@ func TestPackageContainer(t *testing.T) {
362374
assert.Nil(t, pd.SemVer)
363375
assert.Equal(t, image, pd.Package.Name)
364376
assert.Equal(t, multiTag, pd.Version.Version)
365-
assert.True(t, has(pd.Properties, container_module.PropertyManifestTagged))
377+
assert.ElementsMatch(t, []string{strings.ToLower(user.LowerName + "/" + image)}, getAllByName(pd.PackageProperties, container_module.PropertyRepository))
378+
assert.True(t, has(pd.VersionProperties, container_module.PropertyManifestTagged))
366379

367-
getAllByName := func(l packages_model.PackagePropertyList, name string) []string {
368-
values := make([]string, 0, len(l))
369-
for _, pp := range l {
370-
if pp.Name == name {
371-
values = append(values, pp.Value)
372-
}
373-
}
374-
return values
375-
}
376-
assert.ElementsMatch(t, []string{manifestDigest, untaggedManifestDigest}, getAllByName(pd.Properties, container_module.PropertyManifestReference))
380+
assert.ElementsMatch(t, []string{manifestDigest, untaggedManifestDigest}, getAllByName(pd.VersionProperties, container_module.PropertyManifestReference))
377381

378382
assert.IsType(t, &container_module.Metadata{}, pd.Metadata)
379383
metadata := pd.Metadata.(*container_module.Metadata)
@@ -528,4 +532,56 @@ func TestPackageContainer(t *testing.T) {
528532
})
529533
})
530534
}
535+
536+
t.Run("OwnerNameChange", func(t *testing.T) {
537+
defer PrintCurrentTest(t)()
538+
539+
checkCatalog := func(owner string) func(t *testing.T) {
540+
return func(t *testing.T) {
541+
defer PrintCurrentTest(t)()
542+
543+
req := NewRequest(t, "GET", fmt.Sprintf("%sv2/_catalog", setting.AppURL))
544+
addTokenAuthHeader(req, userToken)
545+
resp := MakeRequest(t, req, http.StatusOK)
546+
547+
type RepositoryList struct {
548+
Repositories []string `json:"repositories"`
549+
}
550+
551+
repoList := &RepositoryList{}
552+
DecodeJSON(t, resp, &repoList)
553+
554+
assert.Len(t, repoList.Repositories, len(images))
555+
names := make([]string, 0, len(images))
556+
for _, image := range images {
557+
names = append(names, strings.ToLower(owner+"/"+image))
558+
}
559+
assert.ElementsMatch(t, names, repoList.Repositories)
560+
}
561+
}
562+
563+
t.Run(fmt.Sprintf("Catalog[%s]", user.LowerName), checkCatalog(user.LowerName))
564+
565+
session := loginUser(t, user.Name)
566+
567+
newOwnerName := "newUsername"
568+
569+
req := NewRequestWithValues(t, "POST", "/user/settings", map[string]string{
570+
"_csrf": GetCSRF(t, session, "/user/settings"),
571+
"name": newOwnerName,
572+
"email": "[email protected]",
573+
"language": "en-US",
574+
})
575+
session.MakeRequest(t, req, http.StatusSeeOther)
576+
577+
t.Run(fmt.Sprintf("Catalog[%s]", newOwnerName), checkCatalog(newOwnerName))
578+
579+
req = NewRequestWithValues(t, "POST", "/user/settings", map[string]string{
580+
"_csrf": GetCSRF(t, session, "/user/settings"),
581+
"name": user.Name,
582+
"email": "[email protected]",
583+
"language": "en-US",
584+
})
585+
session.MakeRequest(t, req, http.StatusSeeOther)
586+
})
531587
}

integrations/api_packages_npm_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ func TestPackageNpm(t *testing.T) {
8585
assert.IsType(t, &npm.Metadata{}, pd.Metadata)
8686
assert.Equal(t, packageName, pd.Package.Name)
8787
assert.Equal(t, packageVersion, pd.Version.Version)
88-
assert.Len(t, pd.Properties, 1)
89-
assert.Equal(t, npm.TagProperty, pd.Properties[0].Name)
90-
assert.Equal(t, packageTag, pd.Properties[0].Value)
88+
assert.Len(t, pd.VersionProperties, 1)
89+
assert.Equal(t, npm.TagProperty, pd.VersionProperties[0].Name)
90+
assert.Equal(t, packageTag, pd.VersionProperties[0].Value)
9191

9292
pfs, err := packages.GetFilesByVersionID(db.DefaultContext, pvs[0].ID)
9393
assert.NoError(t, err)

models/auth/webauthn.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package auth
66

77
import (
88
"context"
9-
"encoding/base32"
109
"fmt"
1110
"strings"
1211

@@ -20,14 +19,14 @@ import (
2019
// ErrWebAuthnCredentialNotExist represents a "ErrWebAuthnCRedentialNotExist" kind of error.
2120
type ErrWebAuthnCredentialNotExist struct {
2221
ID int64
23-
CredentialID string
22+
CredentialID []byte
2423
}
2524

2625
func (err ErrWebAuthnCredentialNotExist) Error() string {
27-
if err.CredentialID == "" {
26+
if len(err.CredentialID) == 0 {
2827
return fmt.Sprintf("WebAuthn credential does not exist [id: %d]", err.ID)
2928
}
30-
return fmt.Sprintf("WebAuthn credential does not exist [credential_id: %s]", err.CredentialID)
29+
return fmt.Sprintf("WebAuthn credential does not exist [credential_id: %x]", err.CredentialID)
3130
}
3231

3332
// IsErrWebAuthnCredentialNotExist checks if an error is a ErrWebAuthnCredentialNotExist.
@@ -43,7 +42,7 @@ type WebAuthnCredential struct {
4342
Name string
4443
LowerName string `xorm:"unique(s)"`
4544
UserID int64 `xorm:"INDEX unique(s)"`
46-
CredentialID string `xorm:"INDEX VARCHAR(410)"`
45+
CredentialID []byte `xorm:"INDEX VARBINARY(1024)"`
4746
PublicKey []byte
4847
AttestationType string
4948
AAGUID []byte
@@ -94,9 +93,8 @@ type WebAuthnCredentialList []*WebAuthnCredential
9493
func (list WebAuthnCredentialList) ToCredentials() []webauthn.Credential {
9594
creds := make([]webauthn.Credential, 0, len(list))
9695
for _, cred := range list {
97-
credID, _ := base32.HexEncoding.DecodeString(cred.CredentialID)
9896
creds = append(creds, webauthn.Credential{
99-
ID: credID,
97+
ID: cred.CredentialID,
10098
PublicKey: cred.PublicKey,
10199
AttestationType: cred.AttestationType,
102100
Authenticator: webauthn.Authenticator{
@@ -164,11 +162,11 @@ func HasWebAuthnRegistrationsByUID(uid int64) (bool, error) {
164162
}
165163

166164
// GetWebAuthnCredentialByCredID returns WebAuthn credential by credential ID
167-
func GetWebAuthnCredentialByCredID(userID int64, credID string) (*WebAuthnCredential, error) {
165+
func GetWebAuthnCredentialByCredID(userID int64, credID []byte) (*WebAuthnCredential, error) {
168166
return getWebAuthnCredentialByCredID(db.DefaultContext, userID, credID)
169167
}
170168

171-
func getWebAuthnCredentialByCredID(ctx context.Context, userID int64, credID string) (*WebAuthnCredential, error) {
169+
func getWebAuthnCredentialByCredID(ctx context.Context, userID int64, credID []byte) (*WebAuthnCredential, error) {
172170
cred := new(WebAuthnCredential)
173171
if found, err := db.GetEngine(ctx).Where("user_id = ? AND credential_id = ?", userID, credID).Get(cred); err != nil {
174172
return nil, err
@@ -187,7 +185,7 @@ func createCredential(ctx context.Context, userID int64, name string, cred *weba
187185
c := &WebAuthnCredential{
188186
UserID: userID,
189187
Name: name,
190-
CredentialID: base32.HexEncoding.EncodeToString(cred.ID),
188+
CredentialID: cred.ID,
191189
PublicKey: cred.PublicKey,
192190
AttestationType: cred.AttestationType,
193191
AAGUID: cred.Authenticator.AAGUID,

models/auth/webauthn_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package auth
66

77
import (
8-
"encoding/base32"
98
"testing"
109

1110
"code.gitea.io/gitea/models/unittest"
@@ -61,9 +60,7 @@ func TestCreateCredential(t *testing.T) {
6160
res, err := CreateCredential(1, "WebAuthn Created Credential", &webauthn.Credential{ID: []byte("Test")})
6261
assert.NoError(t, err)
6362
assert.Equal(t, "WebAuthn Created Credential", res.Name)
64-
bs, err := base32.HexEncoding.DecodeString(res.CredentialID)
65-
assert.NoError(t, err)
66-
assert.Equal(t, []byte("Test"), bs)
63+
assert.Equal(t, []byte("Test"), res.CredentialID)
6764

6865
unittest.AssertExistsIf(t, true, &WebAuthnCredential{Name: "WebAuthn Created Credential", UserID: 1})
6966
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-
2+
id: 1
3+
credential_id: "TVHE44TOH7DF7V48SEAIT3EMMJ7TGBOQ289E5AQB34S98LFCUFJ7U2NAVI8RJG6K2F4TC8AQ8KBNO7AGEOQOL9NE43GR63HTEHJSLOG="
4+
-
5+
id: 2
6+
credential_id: "051CLMMKB62S6M9M2A4H54K7MMCQALFJ36G4TGB2S9A47APLTILU6C6744CEBG4EKCGV357N21BSLH8JD33GQMFAR6DQ70S76P34J6FR="
7+
-
8+
id: 4
9+
credential_id: "APU4B1NDTEVTEM60V4T0FRL7SRJMO9KIE2AKFQ8JDGTQ7VHFI41FDEFTDLBVQEAE4ER49QV2GTGVFDNBO31BPOA3OQN6879OT6MTU3G="

0 commit comments

Comments
 (0)