You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

webauthn_test.go 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package auth_test
  4. import (
  5. "testing"
  6. auth_model "code.gitea.io/gitea/models/auth"
  7. "code.gitea.io/gitea/models/db"
  8. "code.gitea.io/gitea/models/unittest"
  9. "github.com/go-webauthn/webauthn/webauthn"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func TestGetWebAuthnCredentialByID(t *testing.T) {
  13. assert.NoError(t, unittest.PrepareTestDatabase())
  14. res, err := auth_model.GetWebAuthnCredentialByID(db.DefaultContext, 1)
  15. assert.NoError(t, err)
  16. assert.Equal(t, "WebAuthn credential", res.Name)
  17. _, err = auth_model.GetWebAuthnCredentialByID(db.DefaultContext, 342432)
  18. assert.Error(t, err)
  19. assert.True(t, auth_model.IsErrWebAuthnCredentialNotExist(err))
  20. }
  21. func TestGetWebAuthnCredentialsByUID(t *testing.T) {
  22. assert.NoError(t, unittest.PrepareTestDatabase())
  23. res, err := auth_model.GetWebAuthnCredentialsByUID(db.DefaultContext, 32)
  24. assert.NoError(t, err)
  25. assert.Len(t, res, 1)
  26. assert.Equal(t, "WebAuthn credential", res[0].Name)
  27. }
  28. func TestWebAuthnCredential_TableName(t *testing.T) {
  29. assert.Equal(t, "webauthn_credential", auth_model.WebAuthnCredential{}.TableName())
  30. }
  31. func TestWebAuthnCredential_UpdateSignCount(t *testing.T) {
  32. assert.NoError(t, unittest.PrepareTestDatabase())
  33. cred := unittest.AssertExistsAndLoadBean(t, &auth_model.WebAuthnCredential{ID: 1})
  34. cred.SignCount = 1
  35. assert.NoError(t, cred.UpdateSignCount(db.DefaultContext))
  36. unittest.AssertExistsIf(t, true, &auth_model.WebAuthnCredential{ID: 1, SignCount: 1})
  37. }
  38. func TestWebAuthnCredential_UpdateLargeCounter(t *testing.T) {
  39. assert.NoError(t, unittest.PrepareTestDatabase())
  40. cred := unittest.AssertExistsAndLoadBean(t, &auth_model.WebAuthnCredential{ID: 1})
  41. cred.SignCount = 0xffffffff
  42. assert.NoError(t, cred.UpdateSignCount(db.DefaultContext))
  43. unittest.AssertExistsIf(t, true, &auth_model.WebAuthnCredential{ID: 1, SignCount: 0xffffffff})
  44. }
  45. func TestCreateCredential(t *testing.T) {
  46. assert.NoError(t, unittest.PrepareTestDatabase())
  47. res, err := auth_model.CreateCredential(db.DefaultContext, 1, "WebAuthn Created Credential", &webauthn.Credential{ID: []byte("Test")})
  48. assert.NoError(t, err)
  49. assert.Equal(t, "WebAuthn Created Credential", res.Name)
  50. assert.Equal(t, []byte("Test"), res.CredentialID)
  51. unittest.AssertExistsIf(t, true, &auth_model.WebAuthnCredential{Name: "WebAuthn Created Credential", UserID: 1})
  52. }