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.
cloudreve/models/user_authn_test.go

101 lines
2.1 KiB

package model
import (
"github.com/DATA-DOG/go-sqlmock"
"github.com/duo-labs/webauthn/webauthn"
"github.com/jinzhu/gorm"
"github.com/stretchr/testify/assert"
"testing"
)
func TestUser_RegisterAuthn(t *testing.T) {
asserts := assert.New(t)
credential := webauthn.Credential{}
user := User{
Model: gorm.Model{ID: 1},
}
{
mock.ExpectBegin()
mock.ExpectExec("UPDATE(.+)").
WillReturnResult(sqlmock.NewResult(1, 1))
mock.ExpectCommit()
user.RegisterAuthn(&credential)
asserts.NoError(mock.ExpectationsWereMet())
}
}
func TestUser_WebAuthnCredentials(t *testing.T) {
asserts := assert.New(t)
user := User{
Model: gorm.Model{ID: 1},
Authn: `[{"ID":"123","PublicKey":"+4sg1vYcjg/+=","AttestationType":"packed","Authenticator":{"AAGUID":"+lg==","SignCount":0,"CloneWarning":false}}]`,
}
{
credentials := user.WebAuthnCredentials()
asserts.Len(credentials, 1)
}
}
func TestUser_WebAuthnDisplayName(t *testing.T) {
asserts := assert.New(t)
user := User{
Model: gorm.Model{ID: 1},
Nick: "123",
}
{
nick := user.WebAuthnDisplayName()
asserts.Equal("123", nick)
}
}
func TestUser_WebAuthnIcon(t *testing.T) {
asserts := assert.New(t)
user := User{
Model: gorm.Model{ID: 1},
}
{
icon := user.WebAuthnIcon()
asserts.NotEmpty(icon)
}
}
func TestUser_WebAuthnID(t *testing.T) {
asserts := assert.New(t)
user := User{
Model: gorm.Model{ID: 1},
}
{
id := user.WebAuthnID()
asserts.Len(id, 8)
}
}
func TestUser_WebAuthnName(t *testing.T) {
asserts := assert.New(t)
user := User{
Model: gorm.Model{ID: 1},
Email: "abslant@foxmail.com",
}
{
name := user.WebAuthnName()
asserts.Equal("abslant@foxmail.com", name)
}
}
func TestUser_RemoveAuthn(t *testing.T) {
asserts := assert.New(t)
user := User{
Model: gorm.Model{ID: 1},
Authn: `[{"ID":"123","PublicKey":"+4sg1vYcjg/+=","AttestationType":"packed","Authenticator":{"AAGUID":"+lg==","SignCount":0,"CloneWarning":false}}]`,
}
{
mock.ExpectBegin()
mock.ExpectExec("UPDATE(.+)").
WillReturnResult(sqlmock.NewResult(1, 1))
mock.ExpectCommit()
user.RemoveAuthn("123")
asserts.NoError(mock.ExpectationsWereMet())
}
}