code.gitea.io/gitea@v1.22.3/models/auth/webauthn_test.go (about)

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