mirror of
				https://github.com/cloudreve/cloudreve.git
				synced 2025-10-30 08:07:01 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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())
 | |
| 	}
 | |
| }
 | 
