Browse Source

db: add tests for authentication through login sources (#7049)

Joe Chen 2 years ago
parent
commit
2e19f5a3c8

+ 1 - 1
.deepsource.toml

@@ -1,6 +1,6 @@
 version = 1
 
-exclude_patterns = ["**/mocks.go"]
+exclude_patterns = ["**/mocks_test.go"]
 
 [[analyzers]]
 name = "docker"

+ 0 - 4
.github/workflows/go.yml

@@ -38,10 +38,6 @@ jobs:
           args: --timeout=30m
       - name: Install Task
         uses: arduino/setup-task@v1
-      - name: Install goimports and go-mockgen
-        run: |
-          go install github.com/derision-test/go-mockgen/cmd/[email protected]
-          go install golang.org/x/tools/cmd/goimports@latest
       - name: Check Go module tidiness and generated files
         shell: bash
         run: |

+ 2 - 2
docs/dev/local_development.md

@@ -41,7 +41,7 @@ Gogs has the following dependencies:
     brew install go postgresql git npm go-task/tap/go-task
     npm install -g less
     npm install -g less-plugin-clean-css
-    go install github.com/derision-test/go-mockgen/cmd/go-mockgen@v1.2.0
+    go install github.com/derision-test/go-mockgen/cmd/go-mockgen@v1.3.3
     go install golang.org/x/tools/cmd/goimports@latest
     ```
 
@@ -79,7 +79,7 @@ Gogs has the following dependencies:
     sudo apt install -y make git-all postgresql postgresql-contrib golang-go nodejs
     npm install -g less
     go install github.com/go-task/task/v3/cmd/task@latest
-    go install github.com/derision-test/go-mockgen/cmd/go-mockgen@v1.2.0
+    go install github.com/derision-test/go-mockgen/cmd/go-mockgen@v1.3.3
     go install golang.org/x/tools/cmd/goimports@latest
     ```
 

+ 8 - 0
gen.go

@@ -0,0 +1,8 @@
+// Copyright 2022 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package main
+
+//go:generate go install golang.org/x/tools/cmd/[email protected]
+//go:generate go run github.com/derision-test/go-mockgen/cmd/[email protected]

+ 0 - 67
internal/db/mock_gen.go

@@ -1,67 +0,0 @@
-// Copyright 2020 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package db
-
-import (
-	"testing"
-)
-
-//go:generate go-mockgen -f gogs.io/gogs/internal/db -i AccessTokensStore -i LFSStore -i LoginSourcesStore -i LoginSourceFilesStore -i loginSourceFileStore -i PermsStore -i ReposStore -i TwoFactorsStore -i UsersStore -o mocks.go
-
-func SetMockAccessTokensStore(t *testing.T, mock AccessTokensStore) {
-	before := AccessTokens
-	AccessTokens = mock
-	t.Cleanup(func() {
-		AccessTokens = before
-	})
-}
-
-func SetMockLFSStore(t *testing.T, mock LFSStore) {
-	before := LFS
-	LFS = mock
-	t.Cleanup(func() {
-		LFS = before
-	})
-}
-
-func setMockLoginSourceFilesStore(t *testing.T, db *loginSources, mock loginSourceFilesStore) {
-	before := db.files
-	db.files = mock
-	t.Cleanup(func() {
-		db.files = before
-	})
-}
-
-func SetMockPermsStore(t *testing.T, mock PermsStore) {
-	before := Perms
-	Perms = mock
-	t.Cleanup(func() {
-		Perms = before
-	})
-}
-
-func SetMockReposStore(t *testing.T, mock ReposStore) {
-	before := Repos
-	Repos = mock
-	t.Cleanup(func() {
-		Repos = before
-	})
-}
-
-func SetMockTwoFactorsStore(t *testing.T, mock TwoFactorsStore) {
-	before := TwoFactors
-	TwoFactors = mock
-	t.Cleanup(func() {
-		TwoFactors = before
-	})
-}
-
-func SetMockUsersStore(t *testing.T, mock UsersStore) {
-	before := Users
-	Users = mock
-	t.Cleanup(func() {
-		Users = before
-	})
-}

+ 44 - 4458
internal/db/mocks.go

@@ -1,4487 +1,73 @@
-// Code generated by go-mockgen 1.2.0; DO NOT EDIT.
+// Copyright 2020 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
 
 package db
 
 import (
-	"context"
-	"sync"
-
-	lfsutil "gogs.io/gogs/internal/lfsutil"
+	"testing"
 )
 
-// MockAccessTokensStore is a mock implementation of the AccessTokensStore
-// interface (from the package gogs.io/gogs/internal/db) used for unit
-// testing.
-type MockAccessTokensStore struct {
-	// CreateFunc is an instance of a mock function object controlling the
-	// behavior of the method Create.
-	CreateFunc *AccessTokensStoreCreateFunc
-	// DeleteByIDFunc is an instance of a mock function object controlling
-	// the behavior of the method DeleteByID.
-	DeleteByIDFunc *AccessTokensStoreDeleteByIDFunc
-	// GetBySHA1Func is an instance of a mock function object controlling
-	// the behavior of the method GetBySHA1.
-	GetBySHA1Func *AccessTokensStoreGetBySHA1Func
-	// ListFunc is an instance of a mock function object controlling the
-	// behavior of the method List.
-	ListFunc *AccessTokensStoreListFunc
-	// TouchFunc is an instance of a mock function object controlling the
-	// behavior of the method Touch.
-	TouchFunc *AccessTokensStoreTouchFunc
-}
-
-// NewMockAccessTokensStore creates a new mock of the AccessTokensStore
-// interface. All methods return zero values for all results, unless
-// overwritten.
-func NewMockAccessTokensStore() *MockAccessTokensStore {
-	return &MockAccessTokensStore{
-		CreateFunc: &AccessTokensStoreCreateFunc{
-			defaultHook: func(context.Context, int64, string) (r0 *AccessToken, r1 error) {
-				return
-			},
-		},
-		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
-			defaultHook: func(context.Context, int64, int64) (r0 error) {
-				return
-			},
-		},
-		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
-			defaultHook: func(context.Context, string) (r0 *AccessToken, r1 error) {
-				return
-			},
-		},
-		ListFunc: &AccessTokensStoreListFunc{
-			defaultHook: func(context.Context, int64) (r0 []*AccessToken, r1 error) {
-				return
-			},
-		},
-		TouchFunc: &AccessTokensStoreTouchFunc{
-			defaultHook: func(context.Context, int64) (r0 error) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockAccessTokensStore creates a new mock of the
-// AccessTokensStore interface. All methods panic on invocation, unless
-// overwritten.
-func NewStrictMockAccessTokensStore() *MockAccessTokensStore {
-	return &MockAccessTokensStore{
-		CreateFunc: &AccessTokensStoreCreateFunc{
-			defaultHook: func(context.Context, int64, string) (*AccessToken, error) {
-				panic("unexpected invocation of MockAccessTokensStore.Create")
-			},
-		},
-		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
-			defaultHook: func(context.Context, int64, int64) error {
-				panic("unexpected invocation of MockAccessTokensStore.DeleteByID")
-			},
-		},
-		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
-			defaultHook: func(context.Context, string) (*AccessToken, error) {
-				panic("unexpected invocation of MockAccessTokensStore.GetBySHA1")
-			},
-		},
-		ListFunc: &AccessTokensStoreListFunc{
-			defaultHook: func(context.Context, int64) ([]*AccessToken, error) {
-				panic("unexpected invocation of MockAccessTokensStore.List")
-			},
-		},
-		TouchFunc: &AccessTokensStoreTouchFunc{
-			defaultHook: func(context.Context, int64) error {
-				panic("unexpected invocation of MockAccessTokensStore.Touch")
-			},
-		},
-	}
-}
-
-// NewMockAccessTokensStoreFrom creates a new mock of the
-// MockAccessTokensStore interface. All methods delegate to the given
-// implementation, unless overwritten.
-func NewMockAccessTokensStoreFrom(i AccessTokensStore) *MockAccessTokensStore {
-	return &MockAccessTokensStore{
-		CreateFunc: &AccessTokensStoreCreateFunc{
-			defaultHook: i.Create,
-		},
-		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
-			defaultHook: i.DeleteByID,
-		},
-		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
-			defaultHook: i.GetBySHA1,
-		},
-		ListFunc: &AccessTokensStoreListFunc{
-			defaultHook: i.List,
-		},
-		TouchFunc: &AccessTokensStoreTouchFunc{
-			defaultHook: i.Touch,
-		},
-	}
-}
-
-// AccessTokensStoreCreateFunc describes the behavior when the Create method
-// of the parent MockAccessTokensStore instance is invoked.
-type AccessTokensStoreCreateFunc struct {
-	defaultHook func(context.Context, int64, string) (*AccessToken, error)
-	hooks       []func(context.Context, int64, string) (*AccessToken, error)
-	history     []AccessTokensStoreCreateFuncCall
-	mutex       sync.Mutex
-}
-
-// Create delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockAccessTokensStore) Create(v0 context.Context, v1 int64, v2 string) (*AccessToken, error) {
-	r0, r1 := m.CreateFunc.nextHook()(v0, v1, v2)
-	m.CreateFunc.appendCall(AccessTokensStoreCreateFuncCall{v0, v1, v2, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the Create method of the
-// parent MockAccessTokensStore instance is invoked and the hook queue is
-// empty.
-func (f *AccessTokensStoreCreateFunc) SetDefaultHook(hook func(context.Context, int64, string) (*AccessToken, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Create method of the parent MockAccessTokensStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *AccessTokensStoreCreateFunc) PushHook(hook func(context.Context, int64, string) (*AccessToken, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *AccessTokensStoreCreateFunc) SetDefaultReturn(r0 *AccessToken, r1 error) {
-	f.SetDefaultHook(func(context.Context, int64, string) (*AccessToken, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *AccessTokensStoreCreateFunc) PushReturn(r0 *AccessToken, r1 error) {
-	f.PushHook(func(context.Context, int64, string) (*AccessToken, error) {
-		return r0, r1
-	})
-}
-
-func (f *AccessTokensStoreCreateFunc) nextHook() func(context.Context, int64, string) (*AccessToken, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *AccessTokensStoreCreateFunc) appendCall(r0 AccessTokensStoreCreateFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of AccessTokensStoreCreateFuncCall objects
-// describing the invocations of this function.
-func (f *AccessTokensStoreCreateFunc) History() []AccessTokensStoreCreateFuncCall {
-	f.mutex.Lock()
-	history := make([]AccessTokensStoreCreateFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// AccessTokensStoreCreateFuncCall is an object that describes an invocation
-// of method Create on an instance of MockAccessTokensStore.
-type AccessTokensStoreCreateFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 string
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *AccessToken
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c AccessTokensStoreCreateFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c AccessTokensStoreCreateFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// AccessTokensStoreDeleteByIDFunc describes the behavior when the
-// DeleteByID method of the parent MockAccessTokensStore instance is
-// invoked.
-type AccessTokensStoreDeleteByIDFunc struct {
-	defaultHook func(context.Context, int64, int64) error
-	hooks       []func(context.Context, int64, int64) error
-	history     []AccessTokensStoreDeleteByIDFuncCall
-	mutex       sync.Mutex
-}
-
-// DeleteByID delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockAccessTokensStore) DeleteByID(v0 context.Context, v1 int64, v2 int64) error {
-	r0 := m.DeleteByIDFunc.nextHook()(v0, v1, v2)
-	m.DeleteByIDFunc.appendCall(AccessTokensStoreDeleteByIDFuncCall{v0, v1, v2, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the DeleteByID method of
-// the parent MockAccessTokensStore instance is invoked and the hook queue
-// is empty.
-func (f *AccessTokensStoreDeleteByIDFunc) SetDefaultHook(hook func(context.Context, int64, int64) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// DeleteByID method of the parent MockAccessTokensStore instance invokes
-// the hook at the front of the queue and discards it. After the queue is
-// empty, the default hook function is invoked for any future action.
-func (f *AccessTokensStoreDeleteByIDFunc) PushHook(hook func(context.Context, int64, int64) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *AccessTokensStoreDeleteByIDFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(context.Context, int64, int64) error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *AccessTokensStoreDeleteByIDFunc) PushReturn(r0 error) {
-	f.PushHook(func(context.Context, int64, int64) error {
-		return r0
-	})
-}
-
-func (f *AccessTokensStoreDeleteByIDFunc) nextHook() func(context.Context, int64, int64) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *AccessTokensStoreDeleteByIDFunc) appendCall(r0 AccessTokensStoreDeleteByIDFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of AccessTokensStoreDeleteByIDFuncCall objects
-// describing the invocations of this function.
-func (f *AccessTokensStoreDeleteByIDFunc) History() []AccessTokensStoreDeleteByIDFuncCall {
-	f.mutex.Lock()
-	history := make([]AccessTokensStoreDeleteByIDFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// AccessTokensStoreDeleteByIDFuncCall is an object that describes an
-// invocation of method DeleteByID on an instance of MockAccessTokensStore.
-type AccessTokensStoreDeleteByIDFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c AccessTokensStoreDeleteByIDFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c AccessTokensStoreDeleteByIDFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// AccessTokensStoreGetBySHA1Func describes the behavior when the GetBySHA1
-// method of the parent MockAccessTokensStore instance is invoked.
-type AccessTokensStoreGetBySHA1Func struct {
-	defaultHook func(context.Context, string) (*AccessToken, error)
-	hooks       []func(context.Context, string) (*AccessToken, error)
-	history     []AccessTokensStoreGetBySHA1FuncCall
-	mutex       sync.Mutex
-}
-
-// GetBySHA1 delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockAccessTokensStore) GetBySHA1(v0 context.Context, v1 string) (*AccessToken, error) {
-	r0, r1 := m.GetBySHA1Func.nextHook()(v0, v1)
-	m.GetBySHA1Func.appendCall(AccessTokensStoreGetBySHA1FuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetBySHA1 method of
-// the parent MockAccessTokensStore instance is invoked and the hook queue
-// is empty.
-func (f *AccessTokensStoreGetBySHA1Func) SetDefaultHook(hook func(context.Context, string) (*AccessToken, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetBySHA1 method of the parent MockAccessTokensStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *AccessTokensStoreGetBySHA1Func) PushHook(hook func(context.Context, string) (*AccessToken, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *AccessTokensStoreGetBySHA1Func) SetDefaultReturn(r0 *AccessToken, r1 error) {
-	f.SetDefaultHook(func(context.Context, string) (*AccessToken, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *AccessTokensStoreGetBySHA1Func) PushReturn(r0 *AccessToken, r1 error) {
-	f.PushHook(func(context.Context, string) (*AccessToken, error) {
-		return r0, r1
-	})
-}
-
-func (f *AccessTokensStoreGetBySHA1Func) nextHook() func(context.Context, string) (*AccessToken, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *AccessTokensStoreGetBySHA1Func) appendCall(r0 AccessTokensStoreGetBySHA1FuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of AccessTokensStoreGetBySHA1FuncCall objects
-// describing the invocations of this function.
-func (f *AccessTokensStoreGetBySHA1Func) History() []AccessTokensStoreGetBySHA1FuncCall {
-	f.mutex.Lock()
-	history := make([]AccessTokensStoreGetBySHA1FuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// AccessTokensStoreGetBySHA1FuncCall is an object that describes an
-// invocation of method GetBySHA1 on an instance of MockAccessTokensStore.
-type AccessTokensStoreGetBySHA1FuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 string
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *AccessToken
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c AccessTokensStoreGetBySHA1FuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c AccessTokensStoreGetBySHA1FuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// AccessTokensStoreListFunc describes the behavior when the List method of
-// the parent MockAccessTokensStore instance is invoked.
-type AccessTokensStoreListFunc struct {
-	defaultHook func(context.Context, int64) ([]*AccessToken, error)
-	hooks       []func(context.Context, int64) ([]*AccessToken, error)
-	history     []AccessTokensStoreListFuncCall
-	mutex       sync.Mutex
-}
-
-// List delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockAccessTokensStore) List(v0 context.Context, v1 int64) ([]*AccessToken, error) {
-	r0, r1 := m.ListFunc.nextHook()(v0, v1)
-	m.ListFunc.appendCall(AccessTokensStoreListFuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the List method of the
-// parent MockAccessTokensStore instance is invoked and the hook queue is
-// empty.
-func (f *AccessTokensStoreListFunc) SetDefaultHook(hook func(context.Context, int64) ([]*AccessToken, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// List method of the parent MockAccessTokensStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *AccessTokensStoreListFunc) PushHook(hook func(context.Context, int64) ([]*AccessToken, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *AccessTokensStoreListFunc) SetDefaultReturn(r0 []*AccessToken, r1 error) {
-	f.SetDefaultHook(func(context.Context, int64) ([]*AccessToken, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *AccessTokensStoreListFunc) PushReturn(r0 []*AccessToken, r1 error) {
-	f.PushHook(func(context.Context, int64) ([]*AccessToken, error) {
-		return r0, r1
-	})
-}
-
-func (f *AccessTokensStoreListFunc) nextHook() func(context.Context, int64) ([]*AccessToken, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *AccessTokensStoreListFunc) appendCall(r0 AccessTokensStoreListFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of AccessTokensStoreListFuncCall objects
-// describing the invocations of this function.
-func (f *AccessTokensStoreListFunc) History() []AccessTokensStoreListFuncCall {
-	f.mutex.Lock()
-	history := make([]AccessTokensStoreListFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// AccessTokensStoreListFuncCall is an object that describes an invocation
-// of method List on an instance of MockAccessTokensStore.
-type AccessTokensStoreListFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 []*AccessToken
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c AccessTokensStoreListFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c AccessTokensStoreListFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// AccessTokensStoreTouchFunc describes the behavior when the Touch method
-// of the parent MockAccessTokensStore instance is invoked.
-type AccessTokensStoreTouchFunc struct {
-	defaultHook func(context.Context, int64) error
-	hooks       []func(context.Context, int64) error
-	history     []AccessTokensStoreTouchFuncCall
-	mutex       sync.Mutex
-}
-
-// Touch delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockAccessTokensStore) Touch(v0 context.Context, v1 int64) error {
-	r0 := m.TouchFunc.nextHook()(v0, v1)
-	m.TouchFunc.appendCall(AccessTokensStoreTouchFuncCall{v0, v1, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the Touch method of the
-// parent MockAccessTokensStore instance is invoked and the hook queue is
-// empty.
-func (f *AccessTokensStoreTouchFunc) SetDefaultHook(hook func(context.Context, int64) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Touch method of the parent MockAccessTokensStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *AccessTokensStoreTouchFunc) PushHook(hook func(context.Context, int64) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *AccessTokensStoreTouchFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(context.Context, int64) error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *AccessTokensStoreTouchFunc) PushReturn(r0 error) {
-	f.PushHook(func(context.Context, int64) error {
-		return r0
-	})
-}
-
-func (f *AccessTokensStoreTouchFunc) nextHook() func(context.Context, int64) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *AccessTokensStoreTouchFunc) appendCall(r0 AccessTokensStoreTouchFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of AccessTokensStoreTouchFuncCall objects
-// describing the invocations of this function.
-func (f *AccessTokensStoreTouchFunc) History() []AccessTokensStoreTouchFuncCall {
-	f.mutex.Lock()
-	history := make([]AccessTokensStoreTouchFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// AccessTokensStoreTouchFuncCall is an object that describes an invocation
-// of method Touch on an instance of MockAccessTokensStore.
-type AccessTokensStoreTouchFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c AccessTokensStoreTouchFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c AccessTokensStoreTouchFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// MockLFSStore is a mock implementation of the LFSStore interface (from the
-// package gogs.io/gogs/internal/db) used for unit testing.
-type MockLFSStore struct {
-	// CreateObjectFunc is an instance of a mock function object controlling
-	// the behavior of the method CreateObject.
-	CreateObjectFunc *LFSStoreCreateObjectFunc
-	// GetObjectByOIDFunc is an instance of a mock function object
-	// controlling the behavior of the method GetObjectByOID.
-	GetObjectByOIDFunc *LFSStoreGetObjectByOIDFunc
-	// GetObjectsByOIDsFunc is an instance of a mock function object
-	// controlling the behavior of the method GetObjectsByOIDs.
-	GetObjectsByOIDsFunc *LFSStoreGetObjectsByOIDsFunc
-}
-
-// NewMockLFSStore creates a new mock of the LFSStore interface. All methods
-// return zero values for all results, unless overwritten.
-func NewMockLFSStore() *MockLFSStore {
-	return &MockLFSStore{
-		CreateObjectFunc: &LFSStoreCreateObjectFunc{
-			defaultHook: func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) (r0 error) {
-				return
-			},
-		},
-		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
-			defaultHook: func(context.Context, int64, lfsutil.OID) (r0 *LFSObject, r1 error) {
-				return
-			},
-		},
-		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
-			defaultHook: func(context.Context, int64, ...lfsutil.OID) (r0 []*LFSObject, r1 error) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockLFSStore creates a new mock of the LFSStore interface. All
-// methods panic on invocation, unless overwritten.
-func NewStrictMockLFSStore() *MockLFSStore {
-	return &MockLFSStore{
-		CreateObjectFunc: &LFSStoreCreateObjectFunc{
-			defaultHook: func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
-				panic("unexpected invocation of MockLFSStore.CreateObject")
-			},
-		},
-		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
-			defaultHook: func(context.Context, int64, lfsutil.OID) (*LFSObject, error) {
-				panic("unexpected invocation of MockLFSStore.GetObjectByOID")
-			},
-		},
-		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
-			defaultHook: func(context.Context, int64, ...lfsutil.OID) ([]*LFSObject, error) {
-				panic("unexpected invocation of MockLFSStore.GetObjectsByOIDs")
-			},
-		},
-	}
-}
-
-// NewMockLFSStoreFrom creates a new mock of the MockLFSStore interface. All
-// methods delegate to the given implementation, unless overwritten.
-func NewMockLFSStoreFrom(i LFSStore) *MockLFSStore {
-	return &MockLFSStore{
-		CreateObjectFunc: &LFSStoreCreateObjectFunc{
-			defaultHook: i.CreateObject,
-		},
-		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
-			defaultHook: i.GetObjectByOID,
-		},
-		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
-			defaultHook: i.GetObjectsByOIDs,
-		},
-	}
-}
-
-// LFSStoreCreateObjectFunc describes the behavior when the CreateObject
-// method of the parent MockLFSStore instance is invoked.
-type LFSStoreCreateObjectFunc struct {
-	defaultHook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error
-	hooks       []func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error
-	history     []LFSStoreCreateObjectFuncCall
-	mutex       sync.Mutex
-}
-
-// CreateObject delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockLFSStore) CreateObject(v0 context.Context, v1 int64, v2 lfsutil.OID, v3 int64, v4 lfsutil.Storage) error {
-	r0 := m.CreateObjectFunc.nextHook()(v0, v1, v2, v3, v4)
-	m.CreateObjectFunc.appendCall(LFSStoreCreateObjectFuncCall{v0, v1, v2, v3, v4, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the CreateObject method
-// of the parent MockLFSStore instance is invoked and the hook queue is
-// empty.
-func (f *LFSStoreCreateObjectFunc) SetDefaultHook(hook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// CreateObject method of the parent MockLFSStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *LFSStoreCreateObjectFunc) PushHook(hook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LFSStoreCreateObjectFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
-		return r0
+func SetMockAccessTokensStore(t *testing.T, mock AccessTokensStore) {
+	before := AccessTokens
+	AccessTokens = mock
+	t.Cleanup(func() {
+		AccessTokens = before
 	})
 }
 
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LFSStoreCreateObjectFunc) PushReturn(r0 error) {
-	f.PushHook(func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
-		return r0
+func SetMockLFSStore(t *testing.T, mock LFSStore) {
+	before := LFS
+	LFS = mock
+	t.Cleanup(func() {
+		LFS = before
 	})
 }
 
-func (f *LFSStoreCreateObjectFunc) nextHook() func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LFSStoreCreateObjectFunc) appendCall(r0 LFSStoreCreateObjectFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LFSStoreCreateObjectFuncCall objects
-// describing the invocations of this function.
-func (f *LFSStoreCreateObjectFunc) History() []LFSStoreCreateObjectFuncCall {
-	f.mutex.Lock()
-	history := make([]LFSStoreCreateObjectFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LFSStoreCreateObjectFuncCall is an object that describes an invocation of
-// method CreateObject on an instance of MockLFSStore.
-type LFSStoreCreateObjectFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 lfsutil.OID
-	// Arg3 is the value of the 4th argument passed to this method
-	// invocation.
-	Arg3 int64
-	// Arg4 is the value of the 5th argument passed to this method
-	// invocation.
-	Arg4 lfsutil.Storage
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LFSStoreCreateObjectFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3, c.Arg4}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LFSStoreCreateObjectFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// LFSStoreGetObjectByOIDFunc describes the behavior when the GetObjectByOID
-// method of the parent MockLFSStore instance is invoked.
-type LFSStoreGetObjectByOIDFunc struct {
-	defaultHook func(context.Context, int64, lfsutil.OID) (*LFSObject, error)
-	hooks       []func(context.Context, int64, lfsutil.OID) (*LFSObject, error)
-	history     []LFSStoreGetObjectByOIDFuncCall
-	mutex       sync.Mutex
-}
-
-// GetObjectByOID delegates to the next hook function in the queue and
-// stores the parameter and result values of this invocation.
-func (m *MockLFSStore) GetObjectByOID(v0 context.Context, v1 int64, v2 lfsutil.OID) (*LFSObject, error) {
-	r0, r1 := m.GetObjectByOIDFunc.nextHook()(v0, v1, v2)
-	m.GetObjectByOIDFunc.appendCall(LFSStoreGetObjectByOIDFuncCall{v0, v1, v2, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetObjectByOID
-// method of the parent MockLFSStore instance is invoked and the hook queue
-// is empty.
-func (f *LFSStoreGetObjectByOIDFunc) SetDefaultHook(hook func(context.Context, int64, lfsutil.OID) (*LFSObject, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetObjectByOID method of the parent MockLFSStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *LFSStoreGetObjectByOIDFunc) PushHook(hook func(context.Context, int64, lfsutil.OID) (*LFSObject, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LFSStoreGetObjectByOIDFunc) SetDefaultReturn(r0 *LFSObject, r1 error) {
-	f.SetDefaultHook(func(context.Context, int64, lfsutil.OID) (*LFSObject, error) {
-		return r0, r1
+func setMockLoginSourcesStore(t *testing.T, mock LoginSourcesStore) {
+	before := LoginSources
+	LoginSources = mock
+	t.Cleanup(func() {
+		LoginSources = before
 	})
 }
 
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LFSStoreGetObjectByOIDFunc) PushReturn(r0 *LFSObject, r1 error) {
-	f.PushHook(func(context.Context, int64, lfsutil.OID) (*LFSObject, error) {
-		return r0, r1
+func setMockLoginSourceFilesStore(t *testing.T, db *loginSources, mock loginSourceFilesStore) {
+	before := db.files
+	db.files = mock
+	t.Cleanup(func() {
+		db.files = before
 	})
 }
 
-func (f *LFSStoreGetObjectByOIDFunc) nextHook() func(context.Context, int64, lfsutil.OID) (*LFSObject, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LFSStoreGetObjectByOIDFunc) appendCall(r0 LFSStoreGetObjectByOIDFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LFSStoreGetObjectByOIDFuncCall objects
-// describing the invocations of this function.
-func (f *LFSStoreGetObjectByOIDFunc) History() []LFSStoreGetObjectByOIDFuncCall {
-	f.mutex.Lock()
-	history := make([]LFSStoreGetObjectByOIDFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LFSStoreGetObjectByOIDFuncCall is an object that describes an invocation
-// of method GetObjectByOID on an instance of MockLFSStore.
-type LFSStoreGetObjectByOIDFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 lfsutil.OID
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *LFSObject
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LFSStoreGetObjectByOIDFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LFSStoreGetObjectByOIDFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// LFSStoreGetObjectsByOIDsFunc describes the behavior when the
-// GetObjectsByOIDs method of the parent MockLFSStore instance is invoked.
-type LFSStoreGetObjectsByOIDsFunc struct {
-	defaultHook func(context.Context, int64, ...lfsutil.OID) ([]*LFSObject, error)
-	hooks       []func(context.Context, int64, ...lfsutil.OID) ([]*LFSObject, error)
-	history     []LFSStoreGetObjectsByOIDsFuncCall
-	mutex       sync.Mutex
-}
-
-// GetObjectsByOIDs delegates to the next hook function in the queue and
-// stores the parameter and result values of this invocation.
-func (m *MockLFSStore) GetObjectsByOIDs(v0 context.Context, v1 int64, v2 ...lfsutil.OID) ([]*LFSObject, error) {
-	r0, r1 := m.GetObjectsByOIDsFunc.nextHook()(v0, v1, v2...)
-	m.GetObjectsByOIDsFunc.appendCall(LFSStoreGetObjectsByOIDsFuncCall{v0, v1, v2, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetObjectsByOIDs
-// method of the parent MockLFSStore instance is invoked and the hook queue
-// is empty.
-func (f *LFSStoreGetObjectsByOIDsFunc) SetDefaultHook(hook func(context.Context, int64, ...lfsutil.OID) ([]*LFSObject, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetObjectsByOIDs method of the parent MockLFSStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *LFSStoreGetObjectsByOIDsFunc) PushHook(hook func(context.Context, int64, ...lfsutil.OID) ([]*LFSObject, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LFSStoreGetObjectsByOIDsFunc) SetDefaultReturn(r0 []*LFSObject, r1 error) {
-	f.SetDefaultHook(func(context.Context, int64, ...lfsutil.OID) ([]*LFSObject, error) {
-		return r0, r1
+func SetMockPermsStore(t *testing.T, mock PermsStore) {
+	before := Perms
+	Perms = mock
+	t.Cleanup(func() {
+		Perms = before
 	})
 }
 
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LFSStoreGetObjectsByOIDsFunc) PushReturn(r0 []*LFSObject, r1 error) {
-	f.PushHook(func(context.Context, int64, ...lfsutil.OID) ([]*LFSObject, error) {
-		return r0, r1
+func SetMockReposStore(t *testing.T, mock ReposStore) {
+	before := Repos
+	Repos = mock
+	t.Cleanup(func() {
+		Repos = before
 	})
 }
 
-func (f *LFSStoreGetObjectsByOIDsFunc) nextHook() func(context.Context, int64, ...lfsutil.OID) ([]*LFSObject, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LFSStoreGetObjectsByOIDsFunc) appendCall(r0 LFSStoreGetObjectsByOIDsFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LFSStoreGetObjectsByOIDsFuncCall objects
-// describing the invocations of this function.
-func (f *LFSStoreGetObjectsByOIDsFunc) History() []LFSStoreGetObjectsByOIDsFuncCall {
-	f.mutex.Lock()
-	history := make([]LFSStoreGetObjectsByOIDsFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LFSStoreGetObjectsByOIDsFuncCall is an object that describes an
-// invocation of method GetObjectsByOIDs on an instance of MockLFSStore.
-type LFSStoreGetObjectsByOIDsFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is a slice containing the values of the variadic arguments
-	// passed to this method invocation.
-	Arg2 []lfsutil.OID
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 []*LFSObject
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation. The variadic slice argument is flattened in this array such
-// that one positional argument and three variadic arguments would result in
-// a slice of four, not two.
-func (c LFSStoreGetObjectsByOIDsFuncCall) Args() []interface{} {
-	trailing := []interface{}{}
-	for _, val := range c.Arg2 {
-		trailing = append(trailing, val)
-	}
-
-	return append([]interface{}{c.Arg0, c.Arg1}, trailing...)
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LFSStoreGetObjectsByOIDsFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// MockLoginSourcesStore is a mock implementation of the LoginSourcesStore
-// interface (from the package gogs.io/gogs/internal/db) used for unit
-// testing.
-type MockLoginSourcesStore struct {
-	// CountFunc is an instance of a mock function object controlling the
-	// behavior of the method Count.
-	CountFunc *LoginSourcesStoreCountFunc
-	// CreateFunc is an instance of a mock function object controlling the
-	// behavior of the method Create.
-	CreateFunc *LoginSourcesStoreCreateFunc
-	// DeleteByIDFunc is an instance of a mock function object controlling
-	// the behavior of the method DeleteByID.
-	DeleteByIDFunc *LoginSourcesStoreDeleteByIDFunc
-	// GetByIDFunc is an instance of a mock function object controlling the
-	// behavior of the method GetByID.
-	GetByIDFunc *LoginSourcesStoreGetByIDFunc
-	// ListFunc is an instance of a mock function object controlling the
-	// behavior of the method List.
-	ListFunc *LoginSourcesStoreListFunc
-	// ResetNonDefaultFunc is an instance of a mock function object
-	// controlling the behavior of the method ResetNonDefault.
-	ResetNonDefaultFunc *LoginSourcesStoreResetNonDefaultFunc
-	// SaveFunc is an instance of a mock function object controlling the
-	// behavior of the method Save.
-	SaveFunc *LoginSourcesStoreSaveFunc
-}
-
-// NewMockLoginSourcesStore creates a new mock of the LoginSourcesStore
-// interface. All methods return zero values for all results, unless
-// overwritten.
-func NewMockLoginSourcesStore() *MockLoginSourcesStore {
-	return &MockLoginSourcesStore{
-		CountFunc: &LoginSourcesStoreCountFunc{
-			defaultHook: func(context.Context) (r0 int64) {
-				return
-			},
-		},
-		CreateFunc: &LoginSourcesStoreCreateFunc{
-			defaultHook: func(context.Context, CreateLoginSourceOpts) (r0 *LoginSource, r1 error) {
-				return
-			},
-		},
-		DeleteByIDFunc: &LoginSourcesStoreDeleteByIDFunc{
-			defaultHook: func(context.Context, int64) (r0 error) {
-				return
-			},
-		},
-		GetByIDFunc: &LoginSourcesStoreGetByIDFunc{
-			defaultHook: func(context.Context, int64) (r0 *LoginSource, r1 error) {
-				return
-			},
-		},
-		ListFunc: &LoginSourcesStoreListFunc{
-			defaultHook: func(context.Context, ListLoginSourceOpts) (r0 []*LoginSource, r1 error) {
-				return
-			},
-		},
-		ResetNonDefaultFunc: &LoginSourcesStoreResetNonDefaultFunc{
-			defaultHook: func(context.Context, *LoginSource) (r0 error) {
-				return
-			},
-		},
-		SaveFunc: &LoginSourcesStoreSaveFunc{
-			defaultHook: func(context.Context, *LoginSource) (r0 error) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockLoginSourcesStore creates a new mock of the
-// LoginSourcesStore interface. All methods panic on invocation, unless
-// overwritten.
-func NewStrictMockLoginSourcesStore() *MockLoginSourcesStore {
-	return &MockLoginSourcesStore{
-		CountFunc: &LoginSourcesStoreCountFunc{
-			defaultHook: func(context.Context) int64 {
-				panic("unexpected invocation of MockLoginSourcesStore.Count")
-			},
-		},
-		CreateFunc: &LoginSourcesStoreCreateFunc{
-			defaultHook: func(context.Context, CreateLoginSourceOpts) (*LoginSource, error) {
-				panic("unexpected invocation of MockLoginSourcesStore.Create")
-			},
-		},
-		DeleteByIDFunc: &LoginSourcesStoreDeleteByIDFunc{
-			defaultHook: func(context.Context, int64) error {
-				panic("unexpected invocation of MockLoginSourcesStore.DeleteByID")
-			},
-		},
-		GetByIDFunc: &LoginSourcesStoreGetByIDFunc{
-			defaultHook: func(context.Context, int64) (*LoginSource, error) {
-				panic("unexpected invocation of MockLoginSourcesStore.GetByID")
-			},
-		},
-		ListFunc: &LoginSourcesStoreListFunc{
-			defaultHook: func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error) {
-				panic("unexpected invocation of MockLoginSourcesStore.List")
-			},
-		},
-		ResetNonDefaultFunc: &LoginSourcesStoreResetNonDefaultFunc{
-			defaultHook: func(context.Context, *LoginSource) error {
-				panic("unexpected invocation of MockLoginSourcesStore.ResetNonDefault")
-			},
-		},
-		SaveFunc: &LoginSourcesStoreSaveFunc{
-			defaultHook: func(context.Context, *LoginSource) error {
-				panic("unexpected invocation of MockLoginSourcesStore.Save")
-			},
-		},
-	}
-}
-
-// NewMockLoginSourcesStoreFrom creates a new mock of the
-// MockLoginSourcesStore interface. All methods delegate to the given
-// implementation, unless overwritten.
-func NewMockLoginSourcesStoreFrom(i LoginSourcesStore) *MockLoginSourcesStore {
-	return &MockLoginSourcesStore{
-		CountFunc: &LoginSourcesStoreCountFunc{
-			defaultHook: i.Count,
-		},
-		CreateFunc: &LoginSourcesStoreCreateFunc{
-			defaultHook: i.Create,
-		},
-		DeleteByIDFunc: &LoginSourcesStoreDeleteByIDFunc{
-			defaultHook: i.DeleteByID,
-		},
-		GetByIDFunc: &LoginSourcesStoreGetByIDFunc{
-			defaultHook: i.GetByID,
-		},
-		ListFunc: &LoginSourcesStoreListFunc{
-			defaultHook: i.List,
-		},
-		ResetNonDefaultFunc: &LoginSourcesStoreResetNonDefaultFunc{
-			defaultHook: i.ResetNonDefault,
-		},
-		SaveFunc: &LoginSourcesStoreSaveFunc{
-			defaultHook: i.Save,
-		},
-	}
-}
-
-// LoginSourcesStoreCountFunc describes the behavior when the Count method
-// of the parent MockLoginSourcesStore instance is invoked.
-type LoginSourcesStoreCountFunc struct {
-	defaultHook func(context.Context) int64
-	hooks       []func(context.Context) int64
-	history     []LoginSourcesStoreCountFuncCall
-	mutex       sync.Mutex
-}
-
-// Count delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourcesStore) Count(v0 context.Context) int64 {
-	r0 := m.CountFunc.nextHook()(v0)
-	m.CountFunc.appendCall(LoginSourcesStoreCountFuncCall{v0, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the Count method of the
-// parent MockLoginSourcesStore instance is invoked and the hook queue is
-// empty.
-func (f *LoginSourcesStoreCountFunc) SetDefaultHook(hook func(context.Context) int64) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Count method of the parent MockLoginSourcesStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *LoginSourcesStoreCountFunc) PushHook(hook func(context.Context) int64) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourcesStoreCountFunc) SetDefaultReturn(r0 int64) {
-	f.SetDefaultHook(func(context.Context) int64 {
-		return r0
+func SetMockTwoFactorsStore(t *testing.T, mock TwoFactorsStore) {
+	before := TwoFactors
+	TwoFactors = mock
+	t.Cleanup(func() {
+		TwoFactors = before
 	})
 }
 
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourcesStoreCountFunc) PushReturn(r0 int64) {
-	f.PushHook(func(context.Context) int64 {
-		return r0
+func SetMockUsersStore(t *testing.T, mock UsersStore) {
+	before := Users
+	Users = mock
+	t.Cleanup(func() {
+		Users = before
 	})
 }
-
-func (f *LoginSourcesStoreCountFunc) nextHook() func(context.Context) int64 {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourcesStoreCountFunc) appendCall(r0 LoginSourcesStoreCountFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourcesStoreCountFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourcesStoreCountFunc) History() []LoginSourcesStoreCountFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourcesStoreCountFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourcesStoreCountFuncCall is an object that describes an invocation
-// of method Count on an instance of MockLoginSourcesStore.
-type LoginSourcesStoreCountFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 int64
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourcesStoreCountFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourcesStoreCountFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// LoginSourcesStoreCreateFunc describes the behavior when the Create method
-// of the parent MockLoginSourcesStore instance is invoked.
-type LoginSourcesStoreCreateFunc struct {
-	defaultHook func(context.Context, CreateLoginSourceOpts) (*LoginSource, error)
-	hooks       []func(context.Context, CreateLoginSourceOpts) (*LoginSource, error)
-	history     []LoginSourcesStoreCreateFuncCall
-	mutex       sync.Mutex
-}
-
-// Create delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourcesStore) Create(v0 context.Context, v1 CreateLoginSourceOpts) (*LoginSource, error) {
-	r0, r1 := m.CreateFunc.nextHook()(v0, v1)
-	m.CreateFunc.appendCall(LoginSourcesStoreCreateFuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the Create method of the
-// parent MockLoginSourcesStore instance is invoked and the hook queue is
-// empty.
-func (f *LoginSourcesStoreCreateFunc) SetDefaultHook(hook func(context.Context, CreateLoginSourceOpts) (*LoginSource, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Create method of the parent MockLoginSourcesStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *LoginSourcesStoreCreateFunc) PushHook(hook func(context.Context, CreateLoginSourceOpts) (*LoginSource, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourcesStoreCreateFunc) SetDefaultReturn(r0 *LoginSource, r1 error) {
-	f.SetDefaultHook(func(context.Context, CreateLoginSourceOpts) (*LoginSource, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourcesStoreCreateFunc) PushReturn(r0 *LoginSource, r1 error) {
-	f.PushHook(func(context.Context, CreateLoginSourceOpts) (*LoginSource, error) {
-		return r0, r1
-	})
-}
-
-func (f *LoginSourcesStoreCreateFunc) nextHook() func(context.Context, CreateLoginSourceOpts) (*LoginSource, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourcesStoreCreateFunc) appendCall(r0 LoginSourcesStoreCreateFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourcesStoreCreateFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourcesStoreCreateFunc) History() []LoginSourcesStoreCreateFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourcesStoreCreateFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourcesStoreCreateFuncCall is an object that describes an invocation
-// of method Create on an instance of MockLoginSourcesStore.
-type LoginSourcesStoreCreateFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 CreateLoginSourceOpts
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *LoginSource
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourcesStoreCreateFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourcesStoreCreateFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// LoginSourcesStoreDeleteByIDFunc describes the behavior when the
-// DeleteByID method of the parent MockLoginSourcesStore instance is
-// invoked.
-type LoginSourcesStoreDeleteByIDFunc struct {
-	defaultHook func(context.Context, int64) error
-	hooks       []func(context.Context, int64) error
-	history     []LoginSourcesStoreDeleteByIDFuncCall
-	mutex       sync.Mutex
-}
-
-// DeleteByID delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockLoginSourcesStore) DeleteByID(v0 context.Context, v1 int64) error {
-	r0 := m.DeleteByIDFunc.nextHook()(v0, v1)
-	m.DeleteByIDFunc.appendCall(LoginSourcesStoreDeleteByIDFuncCall{v0, v1, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the DeleteByID method of
-// the parent MockLoginSourcesStore instance is invoked and the hook queue
-// is empty.
-func (f *LoginSourcesStoreDeleteByIDFunc) SetDefaultHook(hook func(context.Context, int64) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// DeleteByID method of the parent MockLoginSourcesStore instance invokes
-// the hook at the front of the queue and discards it. After the queue is
-// empty, the default hook function is invoked for any future action.
-func (f *LoginSourcesStoreDeleteByIDFunc) PushHook(hook func(context.Context, int64) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourcesStoreDeleteByIDFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(context.Context, int64) error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourcesStoreDeleteByIDFunc) PushReturn(r0 error) {
-	f.PushHook(func(context.Context, int64) error {
-		return r0
-	})
-}
-
-func (f *LoginSourcesStoreDeleteByIDFunc) nextHook() func(context.Context, int64) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourcesStoreDeleteByIDFunc) appendCall(r0 LoginSourcesStoreDeleteByIDFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourcesStoreDeleteByIDFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourcesStoreDeleteByIDFunc) History() []LoginSourcesStoreDeleteByIDFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourcesStoreDeleteByIDFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourcesStoreDeleteByIDFuncCall is an object that describes an
-// invocation of method DeleteByID on an instance of MockLoginSourcesStore.
-type LoginSourcesStoreDeleteByIDFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourcesStoreDeleteByIDFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourcesStoreDeleteByIDFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// LoginSourcesStoreGetByIDFunc describes the behavior when the GetByID
-// method of the parent MockLoginSourcesStore instance is invoked.
-type LoginSourcesStoreGetByIDFunc struct {
-	defaultHook func(context.Context, int64) (*LoginSource, error)
-	hooks       []func(context.Context, int64) (*LoginSource, error)
-	history     []LoginSourcesStoreGetByIDFuncCall
-	mutex       sync.Mutex
-}
-
-// GetByID delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourcesStore) GetByID(v0 context.Context, v1 int64) (*LoginSource, error) {
-	r0, r1 := m.GetByIDFunc.nextHook()(v0, v1)
-	m.GetByIDFunc.appendCall(LoginSourcesStoreGetByIDFuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetByID method of
-// the parent MockLoginSourcesStore instance is invoked and the hook queue
-// is empty.
-func (f *LoginSourcesStoreGetByIDFunc) SetDefaultHook(hook func(context.Context, int64) (*LoginSource, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetByID method of the parent MockLoginSourcesStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *LoginSourcesStoreGetByIDFunc) PushHook(hook func(context.Context, int64) (*LoginSource, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourcesStoreGetByIDFunc) SetDefaultReturn(r0 *LoginSource, r1 error) {
-	f.SetDefaultHook(func(context.Context, int64) (*LoginSource, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourcesStoreGetByIDFunc) PushReturn(r0 *LoginSource, r1 error) {
-	f.PushHook(func(context.Context, int64) (*LoginSource, error) {
-		return r0, r1
-	})
-}
-
-func (f *LoginSourcesStoreGetByIDFunc) nextHook() func(context.Context, int64) (*LoginSource, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourcesStoreGetByIDFunc) appendCall(r0 LoginSourcesStoreGetByIDFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourcesStoreGetByIDFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourcesStoreGetByIDFunc) History() []LoginSourcesStoreGetByIDFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourcesStoreGetByIDFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourcesStoreGetByIDFuncCall is an object that describes an
-// invocation of method GetByID on an instance of MockLoginSourcesStore.
-type LoginSourcesStoreGetByIDFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *LoginSource
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourcesStoreGetByIDFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourcesStoreGetByIDFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// LoginSourcesStoreListFunc describes the behavior when the List method of
-// the parent MockLoginSourcesStore instance is invoked.
-type LoginSourcesStoreListFunc struct {
-	defaultHook func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error)
-	hooks       []func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error)
-	history     []LoginSourcesStoreListFuncCall
-	mutex       sync.Mutex
-}
-
-// List delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourcesStore) List(v0 context.Context, v1 ListLoginSourceOpts) ([]*LoginSource, error) {
-	r0, r1 := m.ListFunc.nextHook()(v0, v1)
-	m.ListFunc.appendCall(LoginSourcesStoreListFuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the List method of the
-// parent MockLoginSourcesStore instance is invoked and the hook queue is
-// empty.
-func (f *LoginSourcesStoreListFunc) SetDefaultHook(hook func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// List method of the parent MockLoginSourcesStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *LoginSourcesStoreListFunc) PushHook(hook func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourcesStoreListFunc) SetDefaultReturn(r0 []*LoginSource, r1 error) {
-	f.SetDefaultHook(func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourcesStoreListFunc) PushReturn(r0 []*LoginSource, r1 error) {
-	f.PushHook(func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error) {
-		return r0, r1
-	})
-}
-
-func (f *LoginSourcesStoreListFunc) nextHook() func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourcesStoreListFunc) appendCall(r0 LoginSourcesStoreListFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourcesStoreListFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourcesStoreListFunc) History() []LoginSourcesStoreListFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourcesStoreListFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourcesStoreListFuncCall is an object that describes an invocation
-// of method List on an instance of MockLoginSourcesStore.
-type LoginSourcesStoreListFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 ListLoginSourceOpts
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 []*LoginSource
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourcesStoreListFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourcesStoreListFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// LoginSourcesStoreResetNonDefaultFunc describes the behavior when the
-// ResetNonDefault method of the parent MockLoginSourcesStore instance is
-// invoked.
-type LoginSourcesStoreResetNonDefaultFunc struct {
-	defaultHook func(context.Context, *LoginSource) error
-	hooks       []func(context.Context, *LoginSource) error
-	history     []LoginSourcesStoreResetNonDefaultFuncCall
-	mutex       sync.Mutex
-}
-
-// ResetNonDefault delegates to the next hook function in the queue and
-// stores the parameter and result values of this invocation.
-func (m *MockLoginSourcesStore) ResetNonDefault(v0 context.Context, v1 *LoginSource) error {
-	r0 := m.ResetNonDefaultFunc.nextHook()(v0, v1)
-	m.ResetNonDefaultFunc.appendCall(LoginSourcesStoreResetNonDefaultFuncCall{v0, v1, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the ResetNonDefault
-// method of the parent MockLoginSourcesStore instance is invoked and the
-// hook queue is empty.
-func (f *LoginSourcesStoreResetNonDefaultFunc) SetDefaultHook(hook func(context.Context, *LoginSource) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// ResetNonDefault method of the parent MockLoginSourcesStore instance
-// invokes the hook at the front of the queue and discards it. After the
-// queue is empty, the default hook function is invoked for any future
-// action.
-func (f *LoginSourcesStoreResetNonDefaultFunc) PushHook(hook func(context.Context, *LoginSource) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourcesStoreResetNonDefaultFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(context.Context, *LoginSource) error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourcesStoreResetNonDefaultFunc) PushReturn(r0 error) {
-	f.PushHook(func(context.Context, *LoginSource) error {
-		return r0
-	})
-}
-
-func (f *LoginSourcesStoreResetNonDefaultFunc) nextHook() func(context.Context, *LoginSource) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourcesStoreResetNonDefaultFunc) appendCall(r0 LoginSourcesStoreResetNonDefaultFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourcesStoreResetNonDefaultFuncCall
-// objects describing the invocations of this function.
-func (f *LoginSourcesStoreResetNonDefaultFunc) History() []LoginSourcesStoreResetNonDefaultFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourcesStoreResetNonDefaultFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourcesStoreResetNonDefaultFuncCall is an object that describes an
-// invocation of method ResetNonDefault on an instance of
-// MockLoginSourcesStore.
-type LoginSourcesStoreResetNonDefaultFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 *LoginSource
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourcesStoreResetNonDefaultFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourcesStoreResetNonDefaultFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// LoginSourcesStoreSaveFunc describes the behavior when the Save method of
-// the parent MockLoginSourcesStore instance is invoked.
-type LoginSourcesStoreSaveFunc struct {
-	defaultHook func(context.Context, *LoginSource) error
-	hooks       []func(context.Context, *LoginSource) error
-	history     []LoginSourcesStoreSaveFuncCall
-	mutex       sync.Mutex
-}
-
-// Save delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourcesStore) Save(v0 context.Context, v1 *LoginSource) error {
-	r0 := m.SaveFunc.nextHook()(v0, v1)
-	m.SaveFunc.appendCall(LoginSourcesStoreSaveFuncCall{v0, v1, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the Save method of the
-// parent MockLoginSourcesStore instance is invoked and the hook queue is
-// empty.
-func (f *LoginSourcesStoreSaveFunc) SetDefaultHook(hook func(context.Context, *LoginSource) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Save method of the parent MockLoginSourcesStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *LoginSourcesStoreSaveFunc) PushHook(hook func(context.Context, *LoginSource) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourcesStoreSaveFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(context.Context, *LoginSource) error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourcesStoreSaveFunc) PushReturn(r0 error) {
-	f.PushHook(func(context.Context, *LoginSource) error {
-		return r0
-	})
-}
-
-func (f *LoginSourcesStoreSaveFunc) nextHook() func(context.Context, *LoginSource) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourcesStoreSaveFunc) appendCall(r0 LoginSourcesStoreSaveFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourcesStoreSaveFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourcesStoreSaveFunc) History() []LoginSourcesStoreSaveFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourcesStoreSaveFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourcesStoreSaveFuncCall is an object that describes an invocation
-// of method Save on an instance of MockLoginSourcesStore.
-type LoginSourcesStoreSaveFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 *LoginSource
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourcesStoreSaveFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourcesStoreSaveFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// MockPermsStore is a mock implementation of the PermsStore interface (from
-// the package gogs.io/gogs/internal/db) used for unit testing.
-type MockPermsStore struct {
-	// AccessModeFunc is an instance of a mock function object controlling
-	// the behavior of the method AccessMode.
-	AccessModeFunc *PermsStoreAccessModeFunc
-	// AuthorizeFunc is an instance of a mock function object controlling
-	// the behavior of the method Authorize.
-	AuthorizeFunc *PermsStoreAuthorizeFunc
-	// SetRepoPermsFunc is an instance of a mock function object controlling
-	// the behavior of the method SetRepoPerms.
-	SetRepoPermsFunc *PermsStoreSetRepoPermsFunc
-}
-
-// NewMockPermsStore creates a new mock of the PermsStore interface. All
-// methods return zero values for all results, unless overwritten.
-func NewMockPermsStore() *MockPermsStore {
-	return &MockPermsStore{
-		AccessModeFunc: &PermsStoreAccessModeFunc{
-			defaultHook: func(context.Context, int64, int64, AccessModeOptions) (r0 AccessMode) {
-				return
-			},
-		},
-		AuthorizeFunc: &PermsStoreAuthorizeFunc{
-			defaultHook: func(context.Context, int64, int64, AccessMode, AccessModeOptions) (r0 bool) {
-				return
-			},
-		},
-		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
-			defaultHook: func(context.Context, int64, map[int64]AccessMode) (r0 error) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockPermsStore creates a new mock of the PermsStore interface.
-// All methods panic on invocation, unless overwritten.
-func NewStrictMockPermsStore() *MockPermsStore {
-	return &MockPermsStore{
-		AccessModeFunc: &PermsStoreAccessModeFunc{
-			defaultHook: func(context.Context, int64, int64, AccessModeOptions) AccessMode {
-				panic("unexpected invocation of MockPermsStore.AccessMode")
-			},
-		},
-		AuthorizeFunc: &PermsStoreAuthorizeFunc{
-			defaultHook: func(context.Context, int64, int64, AccessMode, AccessModeOptions) bool {
-				panic("unexpected invocation of MockPermsStore.Authorize")
-			},
-		},
-		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
-			defaultHook: func(context.Context, int64, map[int64]AccessMode) error {
-				panic("unexpected invocation of MockPermsStore.SetRepoPerms")
-			},
-		},
-	}
-}
-
-// NewMockPermsStoreFrom creates a new mock of the MockPermsStore interface.
-// All methods delegate to the given implementation, unless overwritten.
-func NewMockPermsStoreFrom(i PermsStore) *MockPermsStore {
-	return &MockPermsStore{
-		AccessModeFunc: &PermsStoreAccessModeFunc{
-			defaultHook: i.AccessMode,
-		},
-		AuthorizeFunc: &PermsStoreAuthorizeFunc{
-			defaultHook: i.Authorize,
-		},
-		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
-			defaultHook: i.SetRepoPerms,
-		},
-	}
-}
-
-// PermsStoreAccessModeFunc describes the behavior when the AccessMode
-// method of the parent MockPermsStore instance is invoked.
-type PermsStoreAccessModeFunc struct {
-	defaultHook func(context.Context, int64, int64, AccessModeOptions) AccessMode
-	hooks       []func(context.Context, int64, int64, AccessModeOptions) AccessMode
-	history     []PermsStoreAccessModeFuncCall
-	mutex       sync.Mutex
-}
-
-// AccessMode delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockPermsStore) AccessMode(v0 context.Context, v1 int64, v2 int64, v3 AccessModeOptions) AccessMode {
-	r0 := m.AccessModeFunc.nextHook()(v0, v1, v2, v3)
-	m.AccessModeFunc.appendCall(PermsStoreAccessModeFuncCall{v0, v1, v2, v3, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the AccessMode method of
-// the parent MockPermsStore instance is invoked and the hook queue is
-// empty.
-func (f *PermsStoreAccessModeFunc) SetDefaultHook(hook func(context.Context, int64, int64, AccessModeOptions) AccessMode) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// AccessMode method of the parent MockPermsStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *PermsStoreAccessModeFunc) PushHook(hook func(context.Context, int64, int64, AccessModeOptions) AccessMode) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *PermsStoreAccessModeFunc) SetDefaultReturn(r0 AccessMode) {
-	f.SetDefaultHook(func(context.Context, int64, int64, AccessModeOptions) AccessMode {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *PermsStoreAccessModeFunc) PushReturn(r0 AccessMode) {
-	f.PushHook(func(context.Context, int64, int64, AccessModeOptions) AccessMode {
-		return r0
-	})
-}
-
-func (f *PermsStoreAccessModeFunc) nextHook() func(context.Context, int64, int64, AccessModeOptions) AccessMode {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *PermsStoreAccessModeFunc) appendCall(r0 PermsStoreAccessModeFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of PermsStoreAccessModeFuncCall objects
-// describing the invocations of this function.
-func (f *PermsStoreAccessModeFunc) History() []PermsStoreAccessModeFuncCall {
-	f.mutex.Lock()
-	history := make([]PermsStoreAccessModeFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// PermsStoreAccessModeFuncCall is an object that describes an invocation of
-// method AccessMode on an instance of MockPermsStore.
-type PermsStoreAccessModeFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 int64
-	// Arg3 is the value of the 4th argument passed to this method
-	// invocation.
-	Arg3 AccessModeOptions
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 AccessMode
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c PermsStoreAccessModeFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c PermsStoreAccessModeFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// PermsStoreAuthorizeFunc describes the behavior when the Authorize method
-// of the parent MockPermsStore instance is invoked.
-type PermsStoreAuthorizeFunc struct {
-	defaultHook func(context.Context, int64, int64, AccessMode, AccessModeOptions) bool
-	hooks       []func(context.Context, int64, int64, AccessMode, AccessModeOptions) bool
-	history     []PermsStoreAuthorizeFuncCall
-	mutex       sync.Mutex
-}
-
-// Authorize delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockPermsStore) Authorize(v0 context.Context, v1 int64, v2 int64, v3 AccessMode, v4 AccessModeOptions) bool {
-	r0 := m.AuthorizeFunc.nextHook()(v0, v1, v2, v3, v4)
-	m.AuthorizeFunc.appendCall(PermsStoreAuthorizeFuncCall{v0, v1, v2, v3, v4, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the Authorize method of
-// the parent MockPermsStore instance is invoked and the hook queue is
-// empty.
-func (f *PermsStoreAuthorizeFunc) SetDefaultHook(hook func(context.Context, int64, int64, AccessMode, AccessModeOptions) bool) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Authorize method of the parent MockPermsStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *PermsStoreAuthorizeFunc) PushHook(hook func(context.Context, int64, int64, AccessMode, AccessModeOptions) bool) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *PermsStoreAuthorizeFunc) SetDefaultReturn(r0 bool) {
-	f.SetDefaultHook(func(context.Context, int64, int64, AccessMode, AccessModeOptions) bool {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *PermsStoreAuthorizeFunc) PushReturn(r0 bool) {
-	f.PushHook(func(context.Context, int64, int64, AccessMode, AccessModeOptions) bool {
-		return r0
-	})
-}
-
-func (f *PermsStoreAuthorizeFunc) nextHook() func(context.Context, int64, int64, AccessMode, AccessModeOptions) bool {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *PermsStoreAuthorizeFunc) appendCall(r0 PermsStoreAuthorizeFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of PermsStoreAuthorizeFuncCall objects
-// describing the invocations of this function.
-func (f *PermsStoreAuthorizeFunc) History() []PermsStoreAuthorizeFuncCall {
-	f.mutex.Lock()
-	history := make([]PermsStoreAuthorizeFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// PermsStoreAuthorizeFuncCall is an object that describes an invocation of
-// method Authorize on an instance of MockPermsStore.
-type PermsStoreAuthorizeFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 int64
-	// Arg3 is the value of the 4th argument passed to this method
-	// invocation.
-	Arg3 AccessMode
-	// Arg4 is the value of the 5th argument passed to this method
-	// invocation.
-	Arg4 AccessModeOptions
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 bool
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c PermsStoreAuthorizeFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3, c.Arg4}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c PermsStoreAuthorizeFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// PermsStoreSetRepoPermsFunc describes the behavior when the SetRepoPerms
-// method of the parent MockPermsStore instance is invoked.
-type PermsStoreSetRepoPermsFunc struct {
-	defaultHook func(context.Context, int64, map[int64]AccessMode) error
-	hooks       []func(context.Context, int64, map[int64]AccessMode) error
-	history     []PermsStoreSetRepoPermsFuncCall
-	mutex       sync.Mutex
-}
-
-// SetRepoPerms delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockPermsStore) SetRepoPerms(v0 context.Context, v1 int64, v2 map[int64]AccessMode) error {
-	r0 := m.SetRepoPermsFunc.nextHook()(v0, v1, v2)
-	m.SetRepoPermsFunc.appendCall(PermsStoreSetRepoPermsFuncCall{v0, v1, v2, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the SetRepoPerms method
-// of the parent MockPermsStore instance is invoked and the hook queue is
-// empty.
-func (f *PermsStoreSetRepoPermsFunc) SetDefaultHook(hook func(context.Context, int64, map[int64]AccessMode) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// SetRepoPerms method of the parent MockPermsStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *PermsStoreSetRepoPermsFunc) PushHook(hook func(context.Context, int64, map[int64]AccessMode) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *PermsStoreSetRepoPermsFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(context.Context, int64, map[int64]AccessMode) error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *PermsStoreSetRepoPermsFunc) PushReturn(r0 error) {
-	f.PushHook(func(context.Context, int64, map[int64]AccessMode) error {
-		return r0
-	})
-}
-
-func (f *PermsStoreSetRepoPermsFunc) nextHook() func(context.Context, int64, map[int64]AccessMode) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *PermsStoreSetRepoPermsFunc) appendCall(r0 PermsStoreSetRepoPermsFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of PermsStoreSetRepoPermsFuncCall objects
-// describing the invocations of this function.
-func (f *PermsStoreSetRepoPermsFunc) History() []PermsStoreSetRepoPermsFuncCall {
-	f.mutex.Lock()
-	history := make([]PermsStoreSetRepoPermsFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// PermsStoreSetRepoPermsFuncCall is an object that describes an invocation
-// of method SetRepoPerms on an instance of MockPermsStore.
-type PermsStoreSetRepoPermsFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 map[int64]AccessMode
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c PermsStoreSetRepoPermsFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c PermsStoreSetRepoPermsFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// MockReposStore is a mock implementation of the ReposStore interface (from
-// the package gogs.io/gogs/internal/db) used for unit testing.
-type MockReposStore struct {
-	// GetByNameFunc is an instance of a mock function object controlling
-	// the behavior of the method GetByName.
-	GetByNameFunc *ReposStoreGetByNameFunc
-}
-
-// NewMockReposStore creates a new mock of the ReposStore interface. All
-// methods return zero values for all results, unless overwritten.
-func NewMockReposStore() *MockReposStore {
-	return &MockReposStore{
-		GetByNameFunc: &ReposStoreGetByNameFunc{
-			defaultHook: func(context.Context, int64, string) (r0 *Repository, r1 error) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockReposStore creates a new mock of the ReposStore interface.
-// All methods panic on invocation, unless overwritten.
-func NewStrictMockReposStore() *MockReposStore {
-	return &MockReposStore{
-		GetByNameFunc: &ReposStoreGetByNameFunc{
-			defaultHook: func(context.Context, int64, string) (*Repository, error) {
-				panic("unexpected invocation of MockReposStore.GetByName")
-			},
-		},
-	}
-}
-
-// NewMockReposStoreFrom creates a new mock of the MockReposStore interface.
-// All methods delegate to the given implementation, unless overwritten.
-func NewMockReposStoreFrom(i ReposStore) *MockReposStore {
-	return &MockReposStore{
-		GetByNameFunc: &ReposStoreGetByNameFunc{
-			defaultHook: i.GetByName,
-		},
-	}
-}
-
-// ReposStoreGetByNameFunc describes the behavior when the GetByName method
-// of the parent MockReposStore instance is invoked.
-type ReposStoreGetByNameFunc struct {
-	defaultHook func(context.Context, int64, string) (*Repository, error)
-	hooks       []func(context.Context, int64, string) (*Repository, error)
-	history     []ReposStoreGetByNameFuncCall
-	mutex       sync.Mutex
-}
-
-// GetByName delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockReposStore) GetByName(v0 context.Context, v1 int64, v2 string) (*Repository, error) {
-	r0, r1 := m.GetByNameFunc.nextHook()(v0, v1, v2)
-	m.GetByNameFunc.appendCall(ReposStoreGetByNameFuncCall{v0, v1, v2, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetByName method of
-// the parent MockReposStore instance is invoked and the hook queue is
-// empty.
-func (f *ReposStoreGetByNameFunc) SetDefaultHook(hook func(context.Context, int64, string) (*Repository, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetByName method of the parent MockReposStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *ReposStoreGetByNameFunc) PushHook(hook func(context.Context, int64, string) (*Repository, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *ReposStoreGetByNameFunc) SetDefaultReturn(r0 *Repository, r1 error) {
-	f.SetDefaultHook(func(context.Context, int64, string) (*Repository, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *ReposStoreGetByNameFunc) PushReturn(r0 *Repository, r1 error) {
-	f.PushHook(func(context.Context, int64, string) (*Repository, error) {
-		return r0, r1
-	})
-}
-
-func (f *ReposStoreGetByNameFunc) nextHook() func(context.Context, int64, string) (*Repository, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *ReposStoreGetByNameFunc) appendCall(r0 ReposStoreGetByNameFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of ReposStoreGetByNameFuncCall objects
-// describing the invocations of this function.
-func (f *ReposStoreGetByNameFunc) History() []ReposStoreGetByNameFuncCall {
-	f.mutex.Lock()
-	history := make([]ReposStoreGetByNameFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// ReposStoreGetByNameFuncCall is an object that describes an invocation of
-// method GetByName on an instance of MockReposStore.
-type ReposStoreGetByNameFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 string
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *Repository
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c ReposStoreGetByNameFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c ReposStoreGetByNameFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// MockTwoFactorsStore is a mock implementation of the TwoFactorsStore
-// interface (from the package gogs.io/gogs/internal/db) used for unit
-// testing.
-type MockTwoFactorsStore struct {
-	// CreateFunc is an instance of a mock function object controlling the
-	// behavior of the method Create.
-	CreateFunc *TwoFactorsStoreCreateFunc
-	// GetByUserIDFunc is an instance of a mock function object controlling
-	// the behavior of the method GetByUserID.
-	GetByUserIDFunc *TwoFactorsStoreGetByUserIDFunc
-	// IsUserEnabledFunc is an instance of a mock function object
-	// controlling the behavior of the method IsUserEnabled.
-	IsUserEnabledFunc *TwoFactorsStoreIsUserEnabledFunc
-}
-
-// NewMockTwoFactorsStore creates a new mock of the TwoFactorsStore
-// interface. All methods return zero values for all results, unless
-// overwritten.
-func NewMockTwoFactorsStore() *MockTwoFactorsStore {
-	return &MockTwoFactorsStore{
-		CreateFunc: &TwoFactorsStoreCreateFunc{
-			defaultHook: func(context.Context, int64, string, string) (r0 error) {
-				return
-			},
-		},
-		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
-			defaultHook: func(context.Context, int64) (r0 *TwoFactor, r1 error) {
-				return
-			},
-		},
-		IsUserEnabledFunc: &TwoFactorsStoreIsUserEnabledFunc{
-			defaultHook: func(context.Context, int64) (r0 bool) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockTwoFactorsStore creates a new mock of the TwoFactorsStore
-// interface. All methods panic on invocation, unless overwritten.
-func NewStrictMockTwoFactorsStore() *MockTwoFactorsStore {
-	return &MockTwoFactorsStore{
-		CreateFunc: &TwoFactorsStoreCreateFunc{
-			defaultHook: func(context.Context, int64, string, string) error {
-				panic("unexpected invocation of MockTwoFactorsStore.Create")
-			},
-		},
-		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
-			defaultHook: func(context.Context, int64) (*TwoFactor, error) {
-				panic("unexpected invocation of MockTwoFactorsStore.GetByUserID")
-			},
-		},
-		IsUserEnabledFunc: &TwoFactorsStoreIsUserEnabledFunc{
-			defaultHook: func(context.Context, int64) bool {
-				panic("unexpected invocation of MockTwoFactorsStore.IsUserEnabled")
-			},
-		},
-	}
-}
-
-// NewMockTwoFactorsStoreFrom creates a new mock of the MockTwoFactorsStore
-// interface. All methods delegate to the given implementation, unless
-// overwritten.
-func NewMockTwoFactorsStoreFrom(i TwoFactorsStore) *MockTwoFactorsStore {
-	return &MockTwoFactorsStore{
-		CreateFunc: &TwoFactorsStoreCreateFunc{
-			defaultHook: i.Create,
-		},
-		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
-			defaultHook: i.GetByUserID,
-		},
-		IsUserEnabledFunc: &TwoFactorsStoreIsUserEnabledFunc{
-			defaultHook: i.IsUserEnabled,
-		},
-	}
-}
-
-// TwoFactorsStoreCreateFunc describes the behavior when the Create method
-// of the parent MockTwoFactorsStore instance is invoked.
-type TwoFactorsStoreCreateFunc struct {
-	defaultHook func(context.Context, int64, string, string) error
-	hooks       []func(context.Context, int64, string, string) error
-	history     []TwoFactorsStoreCreateFuncCall
-	mutex       sync.Mutex
-}
-
-// Create delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockTwoFactorsStore) Create(v0 context.Context, v1 int64, v2 string, v3 string) error {
-	r0 := m.CreateFunc.nextHook()(v0, v1, v2, v3)
-	m.CreateFunc.appendCall(TwoFactorsStoreCreateFuncCall{v0, v1, v2, v3, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the Create method of the
-// parent MockTwoFactorsStore instance is invoked and the hook queue is
-// empty.
-func (f *TwoFactorsStoreCreateFunc) SetDefaultHook(hook func(context.Context, int64, string, string) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Create method of the parent MockTwoFactorsStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *TwoFactorsStoreCreateFunc) PushHook(hook func(context.Context, int64, string, string) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *TwoFactorsStoreCreateFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(context.Context, int64, string, string) error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *TwoFactorsStoreCreateFunc) PushReturn(r0 error) {
-	f.PushHook(func(context.Context, int64, string, string) error {
-		return r0
-	})
-}
-
-func (f *TwoFactorsStoreCreateFunc) nextHook() func(context.Context, int64, string, string) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *TwoFactorsStoreCreateFunc) appendCall(r0 TwoFactorsStoreCreateFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of TwoFactorsStoreCreateFuncCall objects
-// describing the invocations of this function.
-func (f *TwoFactorsStoreCreateFunc) History() []TwoFactorsStoreCreateFuncCall {
-	f.mutex.Lock()
-	history := make([]TwoFactorsStoreCreateFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// TwoFactorsStoreCreateFuncCall is an object that describes an invocation
-// of method Create on an instance of MockTwoFactorsStore.
-type TwoFactorsStoreCreateFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 string
-	// Arg3 is the value of the 4th argument passed to this method
-	// invocation.
-	Arg3 string
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c TwoFactorsStoreCreateFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c TwoFactorsStoreCreateFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// TwoFactorsStoreGetByUserIDFunc describes the behavior when the
-// GetByUserID method of the parent MockTwoFactorsStore instance is invoked.
-type TwoFactorsStoreGetByUserIDFunc struct {
-	defaultHook func(context.Context, int64) (*TwoFactor, error)
-	hooks       []func(context.Context, int64) (*TwoFactor, error)
-	history     []TwoFactorsStoreGetByUserIDFuncCall
-	mutex       sync.Mutex
-}
-
-// GetByUserID delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockTwoFactorsStore) GetByUserID(v0 context.Context, v1 int64) (*TwoFactor, error) {
-	r0, r1 := m.GetByUserIDFunc.nextHook()(v0, v1)
-	m.GetByUserIDFunc.appendCall(TwoFactorsStoreGetByUserIDFuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetByUserID method
-// of the parent MockTwoFactorsStore instance is invoked and the hook queue
-// is empty.
-func (f *TwoFactorsStoreGetByUserIDFunc) SetDefaultHook(hook func(context.Context, int64) (*TwoFactor, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetByUserID method of the parent MockTwoFactorsStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *TwoFactorsStoreGetByUserIDFunc) PushHook(hook func(context.Context, int64) (*TwoFactor, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *TwoFactorsStoreGetByUserIDFunc) SetDefaultReturn(r0 *TwoFactor, r1 error) {
-	f.SetDefaultHook(func(context.Context, int64) (*TwoFactor, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *TwoFactorsStoreGetByUserIDFunc) PushReturn(r0 *TwoFactor, r1 error) {
-	f.PushHook(func(context.Context, int64) (*TwoFactor, error) {
-		return r0, r1
-	})
-}
-
-func (f *TwoFactorsStoreGetByUserIDFunc) nextHook() func(context.Context, int64) (*TwoFactor, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *TwoFactorsStoreGetByUserIDFunc) appendCall(r0 TwoFactorsStoreGetByUserIDFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of TwoFactorsStoreGetByUserIDFuncCall objects
-// describing the invocations of this function.
-func (f *TwoFactorsStoreGetByUserIDFunc) History() []TwoFactorsStoreGetByUserIDFuncCall {
-	f.mutex.Lock()
-	history := make([]TwoFactorsStoreGetByUserIDFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// TwoFactorsStoreGetByUserIDFuncCall is an object that describes an
-// invocation of method GetByUserID on an instance of MockTwoFactorsStore.
-type TwoFactorsStoreGetByUserIDFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *TwoFactor
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c TwoFactorsStoreGetByUserIDFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c TwoFactorsStoreGetByUserIDFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// TwoFactorsStoreIsUserEnabledFunc describes the behavior when the
-// IsUserEnabled method of the parent MockTwoFactorsStore instance is
-// invoked.
-type TwoFactorsStoreIsUserEnabledFunc struct {
-	defaultHook func(context.Context, int64) bool
-	hooks       []func(context.Context, int64) bool
-	history     []TwoFactorsStoreIsUserEnabledFuncCall
-	mutex       sync.Mutex
-}
-
-// IsUserEnabled delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockTwoFactorsStore) IsUserEnabled(v0 context.Context, v1 int64) bool {
-	r0 := m.IsUserEnabledFunc.nextHook()(v0, v1)
-	m.IsUserEnabledFunc.appendCall(TwoFactorsStoreIsUserEnabledFuncCall{v0, v1, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the IsUserEnabled method
-// of the parent MockTwoFactorsStore instance is invoked and the hook queue
-// is empty.
-func (f *TwoFactorsStoreIsUserEnabledFunc) SetDefaultHook(hook func(context.Context, int64) bool) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// IsUserEnabled method of the parent MockTwoFactorsStore instance invokes
-// the hook at the front of the queue and discards it. After the queue is
-// empty, the default hook function is invoked for any future action.
-func (f *TwoFactorsStoreIsUserEnabledFunc) PushHook(hook func(context.Context, int64) bool) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *TwoFactorsStoreIsUserEnabledFunc) SetDefaultReturn(r0 bool) {
-	f.SetDefaultHook(func(context.Context, int64) bool {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *TwoFactorsStoreIsUserEnabledFunc) PushReturn(r0 bool) {
-	f.PushHook(func(context.Context, int64) bool {
-		return r0
-	})
-}
-
-func (f *TwoFactorsStoreIsUserEnabledFunc) nextHook() func(context.Context, int64) bool {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *TwoFactorsStoreIsUserEnabledFunc) appendCall(r0 TwoFactorsStoreIsUserEnabledFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of TwoFactorsStoreIsUserEnabledFuncCall
-// objects describing the invocations of this function.
-func (f *TwoFactorsStoreIsUserEnabledFunc) History() []TwoFactorsStoreIsUserEnabledFuncCall {
-	f.mutex.Lock()
-	history := make([]TwoFactorsStoreIsUserEnabledFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// TwoFactorsStoreIsUserEnabledFuncCall is an object that describes an
-// invocation of method IsUserEnabled on an instance of MockTwoFactorsStore.
-type TwoFactorsStoreIsUserEnabledFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 bool
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c TwoFactorsStoreIsUserEnabledFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c TwoFactorsStoreIsUserEnabledFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// MockUsersStore is a mock implementation of the UsersStore interface (from
-// the package gogs.io/gogs/internal/db) used for unit testing.
-type MockUsersStore struct {
-	// AuthenticateFunc is an instance of a mock function object controlling
-	// the behavior of the method Authenticate.
-	AuthenticateFunc *UsersStoreAuthenticateFunc
-	// CreateFunc is an instance of a mock function object controlling the
-	// behavior of the method Create.
-	CreateFunc *UsersStoreCreateFunc
-	// GetByEmailFunc is an instance of a mock function object controlling
-	// the behavior of the method GetByEmail.
-	GetByEmailFunc *UsersStoreGetByEmailFunc
-	// GetByIDFunc is an instance of a mock function object controlling the
-	// behavior of the method GetByID.
-	GetByIDFunc *UsersStoreGetByIDFunc
-	// GetByUsernameFunc is an instance of a mock function object
-	// controlling the behavior of the method GetByUsername.
-	GetByUsernameFunc *UsersStoreGetByUsernameFunc
-}
-
-// NewMockUsersStore creates a new mock of the UsersStore interface. All
-// methods return zero values for all results, unless overwritten.
-func NewMockUsersStore() *MockUsersStore {
-	return &MockUsersStore{
-		AuthenticateFunc: &UsersStoreAuthenticateFunc{
-			defaultHook: func(context.Context, string, string, int64) (r0 *User, r1 error) {
-				return
-			},
-		},
-		CreateFunc: &UsersStoreCreateFunc{
-			defaultHook: func(context.Context, string, string, CreateUserOpts) (r0 *User, r1 error) {
-				return
-			},
-		},
-		GetByEmailFunc: &UsersStoreGetByEmailFunc{
-			defaultHook: func(context.Context, string) (r0 *User, r1 error) {
-				return
-			},
-		},
-		GetByIDFunc: &UsersStoreGetByIDFunc{
-			defaultHook: func(context.Context, int64) (r0 *User, r1 error) {
-				return
-			},
-		},
-		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
-			defaultHook: func(context.Context, string) (r0 *User, r1 error) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockUsersStore creates a new mock of the UsersStore interface.
-// All methods panic on invocation, unless overwritten.
-func NewStrictMockUsersStore() *MockUsersStore {
-	return &MockUsersStore{
-		AuthenticateFunc: &UsersStoreAuthenticateFunc{
-			defaultHook: func(context.Context, string, string, int64) (*User, error) {
-				panic("unexpected invocation of MockUsersStore.Authenticate")
-			},
-		},
-		CreateFunc: &UsersStoreCreateFunc{
-			defaultHook: func(context.Context, string, string, CreateUserOpts) (*User, error) {
-				panic("unexpected invocation of MockUsersStore.Create")
-			},
-		},
-		GetByEmailFunc: &UsersStoreGetByEmailFunc{
-			defaultHook: func(context.Context, string) (*User, error) {
-				panic("unexpected invocation of MockUsersStore.GetByEmail")
-			},
-		},
-		GetByIDFunc: &UsersStoreGetByIDFunc{
-			defaultHook: func(context.Context, int64) (*User, error) {
-				panic("unexpected invocation of MockUsersStore.GetByID")
-			},
-		},
-		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
-			defaultHook: func(context.Context, string) (*User, error) {
-				panic("unexpected invocation of MockUsersStore.GetByUsername")
-			},
-		},
-	}
-}
-
-// NewMockUsersStoreFrom creates a new mock of the MockUsersStore interface.
-// All methods delegate to the given implementation, unless overwritten.
-func NewMockUsersStoreFrom(i UsersStore) *MockUsersStore {
-	return &MockUsersStore{
-		AuthenticateFunc: &UsersStoreAuthenticateFunc{
-			defaultHook: i.Authenticate,
-		},
-		CreateFunc: &UsersStoreCreateFunc{
-			defaultHook: i.Create,
-		},
-		GetByEmailFunc: &UsersStoreGetByEmailFunc{
-			defaultHook: i.GetByEmail,
-		},
-		GetByIDFunc: &UsersStoreGetByIDFunc{
-			defaultHook: i.GetByID,
-		},
-		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
-			defaultHook: i.GetByUsername,
-		},
-	}
-}
-
-// UsersStoreAuthenticateFunc describes the behavior when the Authenticate
-// method of the parent MockUsersStore instance is invoked.
-type UsersStoreAuthenticateFunc struct {
-	defaultHook func(context.Context, string, string, int64) (*User, error)
-	hooks       []func(context.Context, string, string, int64) (*User, error)
-	history     []UsersStoreAuthenticateFuncCall
-	mutex       sync.Mutex
-}
-
-// Authenticate delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockUsersStore) Authenticate(v0 context.Context, v1 string, v2 string, v3 int64) (*User, error) {
-	r0, r1 := m.AuthenticateFunc.nextHook()(v0, v1, v2, v3)
-	m.AuthenticateFunc.appendCall(UsersStoreAuthenticateFuncCall{v0, v1, v2, v3, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the Authenticate method
-// of the parent MockUsersStore instance is invoked and the hook queue is
-// empty.
-func (f *UsersStoreAuthenticateFunc) SetDefaultHook(hook func(context.Context, string, string, int64) (*User, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Authenticate method of the parent MockUsersStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *UsersStoreAuthenticateFunc) PushHook(hook func(context.Context, string, string, int64) (*User, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *UsersStoreAuthenticateFunc) SetDefaultReturn(r0 *User, r1 error) {
-	f.SetDefaultHook(func(context.Context, string, string, int64) (*User, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *UsersStoreAuthenticateFunc) PushReturn(r0 *User, r1 error) {
-	f.PushHook(func(context.Context, string, string, int64) (*User, error) {
-		return r0, r1
-	})
-}
-
-func (f *UsersStoreAuthenticateFunc) nextHook() func(context.Context, string, string, int64) (*User, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *UsersStoreAuthenticateFunc) appendCall(r0 UsersStoreAuthenticateFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of UsersStoreAuthenticateFuncCall objects
-// describing the invocations of this function.
-func (f *UsersStoreAuthenticateFunc) History() []UsersStoreAuthenticateFuncCall {
-	f.mutex.Lock()
-	history := make([]UsersStoreAuthenticateFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// UsersStoreAuthenticateFuncCall is an object that describes an invocation
-// of method Authenticate on an instance of MockUsersStore.
-type UsersStoreAuthenticateFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 string
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 string
-	// Arg3 is the value of the 4th argument passed to this method
-	// invocation.
-	Arg3 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *User
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c UsersStoreAuthenticateFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c UsersStoreAuthenticateFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// UsersStoreCreateFunc describes the behavior when the Create method of the
-// parent MockUsersStore instance is invoked.
-type UsersStoreCreateFunc struct {
-	defaultHook func(context.Context, string, string, CreateUserOpts) (*User, error)
-	hooks       []func(context.Context, string, string, CreateUserOpts) (*User, error)
-	history     []UsersStoreCreateFuncCall
-	mutex       sync.Mutex
-}
-
-// Create delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockUsersStore) Create(v0 context.Context, v1 string, v2 string, v3 CreateUserOpts) (*User, error) {
-	r0, r1 := m.CreateFunc.nextHook()(v0, v1, v2, v3)
-	m.CreateFunc.appendCall(UsersStoreCreateFuncCall{v0, v1, v2, v3, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the Create method of the
-// parent MockUsersStore instance is invoked and the hook queue is empty.
-func (f *UsersStoreCreateFunc) SetDefaultHook(hook func(context.Context, string, string, CreateUserOpts) (*User, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Create method of the parent MockUsersStore instance invokes the hook at
-// the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *UsersStoreCreateFunc) PushHook(hook func(context.Context, string, string, CreateUserOpts) (*User, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *UsersStoreCreateFunc) SetDefaultReturn(r0 *User, r1 error) {
-	f.SetDefaultHook(func(context.Context, string, string, CreateUserOpts) (*User, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *UsersStoreCreateFunc) PushReturn(r0 *User, r1 error) {
-	f.PushHook(func(context.Context, string, string, CreateUserOpts) (*User, error) {
-		return r0, r1
-	})
-}
-
-func (f *UsersStoreCreateFunc) nextHook() func(context.Context, string, string, CreateUserOpts) (*User, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *UsersStoreCreateFunc) appendCall(r0 UsersStoreCreateFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of UsersStoreCreateFuncCall objects describing
-// the invocations of this function.
-func (f *UsersStoreCreateFunc) History() []UsersStoreCreateFuncCall {
-	f.mutex.Lock()
-	history := make([]UsersStoreCreateFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// UsersStoreCreateFuncCall is an object that describes an invocation of
-// method Create on an instance of MockUsersStore.
-type UsersStoreCreateFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 string
-	// Arg2 is the value of the 3rd argument passed to this method
-	// invocation.
-	Arg2 string
-	// Arg3 is the value of the 4th argument passed to this method
-	// invocation.
-	Arg3 CreateUserOpts
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *User
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c UsersStoreCreateFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c UsersStoreCreateFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// UsersStoreGetByEmailFunc describes the behavior when the GetByEmail
-// method of the parent MockUsersStore instance is invoked.
-type UsersStoreGetByEmailFunc struct {
-	defaultHook func(context.Context, string) (*User, error)
-	hooks       []func(context.Context, string) (*User, error)
-	history     []UsersStoreGetByEmailFuncCall
-	mutex       sync.Mutex
-}
-
-// GetByEmail delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockUsersStore) GetByEmail(v0 context.Context, v1 string) (*User, error) {
-	r0, r1 := m.GetByEmailFunc.nextHook()(v0, v1)
-	m.GetByEmailFunc.appendCall(UsersStoreGetByEmailFuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetByEmail method of
-// the parent MockUsersStore instance is invoked and the hook queue is
-// empty.
-func (f *UsersStoreGetByEmailFunc) SetDefaultHook(hook func(context.Context, string) (*User, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetByEmail method of the parent MockUsersStore instance invokes the hook
-// at the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *UsersStoreGetByEmailFunc) PushHook(hook func(context.Context, string) (*User, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *UsersStoreGetByEmailFunc) SetDefaultReturn(r0 *User, r1 error) {
-	f.SetDefaultHook(func(context.Context, string) (*User, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *UsersStoreGetByEmailFunc) PushReturn(r0 *User, r1 error) {
-	f.PushHook(func(context.Context, string) (*User, error) {
-		return r0, r1
-	})
-}
-
-func (f *UsersStoreGetByEmailFunc) nextHook() func(context.Context, string) (*User, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *UsersStoreGetByEmailFunc) appendCall(r0 UsersStoreGetByEmailFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of UsersStoreGetByEmailFuncCall objects
-// describing the invocations of this function.
-func (f *UsersStoreGetByEmailFunc) History() []UsersStoreGetByEmailFuncCall {
-	f.mutex.Lock()
-	history := make([]UsersStoreGetByEmailFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// UsersStoreGetByEmailFuncCall is an object that describes an invocation of
-// method GetByEmail on an instance of MockUsersStore.
-type UsersStoreGetByEmailFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 string
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *User
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c UsersStoreGetByEmailFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c UsersStoreGetByEmailFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// UsersStoreGetByIDFunc describes the behavior when the GetByID method of
-// the parent MockUsersStore instance is invoked.
-type UsersStoreGetByIDFunc struct {
-	defaultHook func(context.Context, int64) (*User, error)
-	hooks       []func(context.Context, int64) (*User, error)
-	history     []UsersStoreGetByIDFuncCall
-	mutex       sync.Mutex
-}
-
-// GetByID delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockUsersStore) GetByID(v0 context.Context, v1 int64) (*User, error) {
-	r0, r1 := m.GetByIDFunc.nextHook()(v0, v1)
-	m.GetByIDFunc.appendCall(UsersStoreGetByIDFuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetByID method of
-// the parent MockUsersStore instance is invoked and the hook queue is
-// empty.
-func (f *UsersStoreGetByIDFunc) SetDefaultHook(hook func(context.Context, int64) (*User, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetByID method of the parent MockUsersStore instance invokes the hook at
-// the front of the queue and discards it. After the queue is empty, the
-// default hook function is invoked for any future action.
-func (f *UsersStoreGetByIDFunc) PushHook(hook func(context.Context, int64) (*User, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *UsersStoreGetByIDFunc) SetDefaultReturn(r0 *User, r1 error) {
-	f.SetDefaultHook(func(context.Context, int64) (*User, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *UsersStoreGetByIDFunc) PushReturn(r0 *User, r1 error) {
-	f.PushHook(func(context.Context, int64) (*User, error) {
-		return r0, r1
-	})
-}
-
-func (f *UsersStoreGetByIDFunc) nextHook() func(context.Context, int64) (*User, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *UsersStoreGetByIDFunc) appendCall(r0 UsersStoreGetByIDFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of UsersStoreGetByIDFuncCall objects
-// describing the invocations of this function.
-func (f *UsersStoreGetByIDFunc) History() []UsersStoreGetByIDFuncCall {
-	f.mutex.Lock()
-	history := make([]UsersStoreGetByIDFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// UsersStoreGetByIDFuncCall is an object that describes an invocation of
-// method GetByID on an instance of MockUsersStore.
-type UsersStoreGetByIDFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *User
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c UsersStoreGetByIDFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c UsersStoreGetByIDFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// UsersStoreGetByUsernameFunc describes the behavior when the GetByUsername
-// method of the parent MockUsersStore instance is invoked.
-type UsersStoreGetByUsernameFunc struct {
-	defaultHook func(context.Context, string) (*User, error)
-	hooks       []func(context.Context, string) (*User, error)
-	history     []UsersStoreGetByUsernameFuncCall
-	mutex       sync.Mutex
-}
-
-// GetByUsername delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockUsersStore) GetByUsername(v0 context.Context, v1 string) (*User, error) {
-	r0, r1 := m.GetByUsernameFunc.nextHook()(v0, v1)
-	m.GetByUsernameFunc.appendCall(UsersStoreGetByUsernameFuncCall{v0, v1, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetByUsername method
-// of the parent MockUsersStore instance is invoked and the hook queue is
-// empty.
-func (f *UsersStoreGetByUsernameFunc) SetDefaultHook(hook func(context.Context, string) (*User, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetByUsername method of the parent MockUsersStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *UsersStoreGetByUsernameFunc) PushHook(hook func(context.Context, string) (*User, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *UsersStoreGetByUsernameFunc) SetDefaultReturn(r0 *User, r1 error) {
-	f.SetDefaultHook(func(context.Context, string) (*User, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *UsersStoreGetByUsernameFunc) PushReturn(r0 *User, r1 error) {
-	f.PushHook(func(context.Context, string) (*User, error) {
-		return r0, r1
-	})
-}
-
-func (f *UsersStoreGetByUsernameFunc) nextHook() func(context.Context, string) (*User, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *UsersStoreGetByUsernameFunc) appendCall(r0 UsersStoreGetByUsernameFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of UsersStoreGetByUsernameFuncCall objects
-// describing the invocations of this function.
-func (f *UsersStoreGetByUsernameFunc) History() []UsersStoreGetByUsernameFuncCall {
-	f.mutex.Lock()
-	history := make([]UsersStoreGetByUsernameFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// UsersStoreGetByUsernameFuncCall is an object that describes an invocation
-// of method GetByUsername on an instance of MockUsersStore.
-type UsersStoreGetByUsernameFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 context.Context
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 string
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *User
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c UsersStoreGetByUsernameFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c UsersStoreGetByUsernameFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// MockLoginSourceFileStore is a mock implementation of the
-// loginSourceFileStore interface (from the package
-// gogs.io/gogs/internal/db) used for unit testing.
-type MockLoginSourceFileStore struct {
-	// SaveFunc is an instance of a mock function object controlling the
-	// behavior of the method Save.
-	SaveFunc *LoginSourceFileStoreSaveFunc
-	// SetConfigFunc is an instance of a mock function object controlling
-	// the behavior of the method SetConfig.
-	SetConfigFunc *LoginSourceFileStoreSetConfigFunc
-	// SetGeneralFunc is an instance of a mock function object controlling
-	// the behavior of the method SetGeneral.
-	SetGeneralFunc *LoginSourceFileStoreSetGeneralFunc
-}
-
-// NewMockLoginSourceFileStore creates a new mock of the
-// loginSourceFileStore interface. All methods return zero values for all
-// results, unless overwritten.
-func NewMockLoginSourceFileStore() *MockLoginSourceFileStore {
-	return &MockLoginSourceFileStore{
-		SaveFunc: &LoginSourceFileStoreSaveFunc{
-			defaultHook: func() (r0 error) {
-				return
-			},
-		},
-		SetConfigFunc: &LoginSourceFileStoreSetConfigFunc{
-			defaultHook: func(interface{}) (r0 error) {
-				return
-			},
-		},
-		SetGeneralFunc: &LoginSourceFileStoreSetGeneralFunc{
-			defaultHook: func(string, string) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockLoginSourceFileStore creates a new mock of the
-// loginSourceFileStore interface. All methods panic on invocation, unless
-// overwritten.
-func NewStrictMockLoginSourceFileStore() *MockLoginSourceFileStore {
-	return &MockLoginSourceFileStore{
-		SaveFunc: &LoginSourceFileStoreSaveFunc{
-			defaultHook: func() error {
-				panic("unexpected invocation of MockLoginSourceFileStore.Save")
-			},
-		},
-		SetConfigFunc: &LoginSourceFileStoreSetConfigFunc{
-			defaultHook: func(interface{}) error {
-				panic("unexpected invocation of MockLoginSourceFileStore.SetConfig")
-			},
-		},
-		SetGeneralFunc: &LoginSourceFileStoreSetGeneralFunc{
-			defaultHook: func(string, string) {
-				panic("unexpected invocation of MockLoginSourceFileStore.SetGeneral")
-			},
-		},
-	}
-}
-
-// surrogateMockLoginSourceFileStore is a copy of the loginSourceFileStore
-// interface (from the package gogs.io/gogs/internal/db). It is redefined
-// here as it is unexported in the source package.
-type surrogateMockLoginSourceFileStore interface {
-	Save() error
-	SetConfig(interface{}) error
-	SetGeneral(string, string)
-}
-
-// NewMockLoginSourceFileStoreFrom creates a new mock of the
-// MockLoginSourceFileStore interface. All methods delegate to the given
-// implementation, unless overwritten.
-func NewMockLoginSourceFileStoreFrom(i surrogateMockLoginSourceFileStore) *MockLoginSourceFileStore {
-	return &MockLoginSourceFileStore{
-		SaveFunc: &LoginSourceFileStoreSaveFunc{
-			defaultHook: i.Save,
-		},
-		SetConfigFunc: &LoginSourceFileStoreSetConfigFunc{
-			defaultHook: i.SetConfig,
-		},
-		SetGeneralFunc: &LoginSourceFileStoreSetGeneralFunc{
-			defaultHook: i.SetGeneral,
-		},
-	}
-}
-
-// LoginSourceFileStoreSaveFunc describes the behavior when the Save method
-// of the parent MockLoginSourceFileStore instance is invoked.
-type LoginSourceFileStoreSaveFunc struct {
-	defaultHook func() error
-	hooks       []func() error
-	history     []LoginSourceFileStoreSaveFuncCall
-	mutex       sync.Mutex
-}
-
-// Save delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourceFileStore) Save() error {
-	r0 := m.SaveFunc.nextHook()()
-	m.SaveFunc.appendCall(LoginSourceFileStoreSaveFuncCall{r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the Save method of the
-// parent MockLoginSourceFileStore instance is invoked and the hook queue is
-// empty.
-func (f *LoginSourceFileStoreSaveFunc) SetDefaultHook(hook func() error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Save method of the parent MockLoginSourceFileStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *LoginSourceFileStoreSaveFunc) PushHook(hook func() error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourceFileStoreSaveFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func() error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourceFileStoreSaveFunc) PushReturn(r0 error) {
-	f.PushHook(func() error {
-		return r0
-	})
-}
-
-func (f *LoginSourceFileStoreSaveFunc) nextHook() func() error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourceFileStoreSaveFunc) appendCall(r0 LoginSourceFileStoreSaveFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourceFileStoreSaveFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourceFileStoreSaveFunc) History() []LoginSourceFileStoreSaveFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourceFileStoreSaveFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourceFileStoreSaveFuncCall is an object that describes an
-// invocation of method Save on an instance of MockLoginSourceFileStore.
-type LoginSourceFileStoreSaveFuncCall struct {
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourceFileStoreSaveFuncCall) Args() []interface{} {
-	return []interface{}{}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourceFileStoreSaveFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// LoginSourceFileStoreSetConfigFunc describes the behavior when the
-// SetConfig method of the parent MockLoginSourceFileStore instance is
-// invoked.
-type LoginSourceFileStoreSetConfigFunc struct {
-	defaultHook func(interface{}) error
-	hooks       []func(interface{}) error
-	history     []LoginSourceFileStoreSetConfigFuncCall
-	mutex       sync.Mutex
-}
-
-// SetConfig delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourceFileStore) SetConfig(v0 interface{}) error {
-	r0 := m.SetConfigFunc.nextHook()(v0)
-	m.SetConfigFunc.appendCall(LoginSourceFileStoreSetConfigFuncCall{v0, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the SetConfig method of
-// the parent MockLoginSourceFileStore instance is invoked and the hook
-// queue is empty.
-func (f *LoginSourceFileStoreSetConfigFunc) SetDefaultHook(hook func(interface{}) error) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// SetConfig method of the parent MockLoginSourceFileStore instance invokes
-// the hook at the front of the queue and discards it. After the queue is
-// empty, the default hook function is invoked for any future action.
-func (f *LoginSourceFileStoreSetConfigFunc) PushHook(hook func(interface{}) error) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourceFileStoreSetConfigFunc) SetDefaultReturn(r0 error) {
-	f.SetDefaultHook(func(interface{}) error {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourceFileStoreSetConfigFunc) PushReturn(r0 error) {
-	f.PushHook(func(interface{}) error {
-		return r0
-	})
-}
-
-func (f *LoginSourceFileStoreSetConfigFunc) nextHook() func(interface{}) error {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourceFileStoreSetConfigFunc) appendCall(r0 LoginSourceFileStoreSetConfigFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourceFileStoreSetConfigFuncCall
-// objects describing the invocations of this function.
-func (f *LoginSourceFileStoreSetConfigFunc) History() []LoginSourceFileStoreSetConfigFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourceFileStoreSetConfigFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourceFileStoreSetConfigFuncCall is an object that describes an
-// invocation of method SetConfig on an instance of
-// MockLoginSourceFileStore.
-type LoginSourceFileStoreSetConfigFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 interface{}
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourceFileStoreSetConfigFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourceFileStoreSetConfigFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// LoginSourceFileStoreSetGeneralFunc describes the behavior when the
-// SetGeneral method of the parent MockLoginSourceFileStore instance is
-// invoked.
-type LoginSourceFileStoreSetGeneralFunc struct {
-	defaultHook func(string, string)
-	hooks       []func(string, string)
-	history     []LoginSourceFileStoreSetGeneralFuncCall
-	mutex       sync.Mutex
-}
-
-// SetGeneral delegates to the next hook function in the queue and stores
-// the parameter and result values of this invocation.
-func (m *MockLoginSourceFileStore) SetGeneral(v0 string, v1 string) {
-	m.SetGeneralFunc.nextHook()(v0, v1)
-	m.SetGeneralFunc.appendCall(LoginSourceFileStoreSetGeneralFuncCall{v0, v1})
-	return
-}
-
-// SetDefaultHook sets function that is called when the SetGeneral method of
-// the parent MockLoginSourceFileStore instance is invoked and the hook
-// queue is empty.
-func (f *LoginSourceFileStoreSetGeneralFunc) SetDefaultHook(hook func(string, string)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// SetGeneral method of the parent MockLoginSourceFileStore instance invokes
-// the hook at the front of the queue and discards it. After the queue is
-// empty, the default hook function is invoked for any future action.
-func (f *LoginSourceFileStoreSetGeneralFunc) PushHook(hook func(string, string)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourceFileStoreSetGeneralFunc) SetDefaultReturn() {
-	f.SetDefaultHook(func(string, string) {
-		return
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourceFileStoreSetGeneralFunc) PushReturn() {
-	f.PushHook(func(string, string) {
-		return
-	})
-}
-
-func (f *LoginSourceFileStoreSetGeneralFunc) nextHook() func(string, string) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourceFileStoreSetGeneralFunc) appendCall(r0 LoginSourceFileStoreSetGeneralFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourceFileStoreSetGeneralFuncCall
-// objects describing the invocations of this function.
-func (f *LoginSourceFileStoreSetGeneralFunc) History() []LoginSourceFileStoreSetGeneralFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourceFileStoreSetGeneralFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourceFileStoreSetGeneralFuncCall is an object that describes an
-// invocation of method SetGeneral on an instance of
-// MockLoginSourceFileStore.
-type LoginSourceFileStoreSetGeneralFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 string
-	// Arg1 is the value of the 2nd argument passed to this method
-	// invocation.
-	Arg1 string
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourceFileStoreSetGeneralFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0, c.Arg1}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourceFileStoreSetGeneralFuncCall) Results() []interface{} {
-	return []interface{}{}
-}
-
-// MockLoginSourceFilesStore is a mock implementation of the
-// loginSourceFilesStore interface (from the package
-// gogs.io/gogs/internal/db) used for unit testing.
-type MockLoginSourceFilesStore struct {
-	// GetByIDFunc is an instance of a mock function object controlling the
-	// behavior of the method GetByID.
-	GetByIDFunc *LoginSourceFilesStoreGetByIDFunc
-	// LenFunc is an instance of a mock function object controlling the
-	// behavior of the method Len.
-	LenFunc *LoginSourceFilesStoreLenFunc
-	// ListFunc is an instance of a mock function object controlling the
-	// behavior of the method List.
-	ListFunc *LoginSourceFilesStoreListFunc
-	// UpdateFunc is an instance of a mock function object controlling the
-	// behavior of the method Update.
-	UpdateFunc *LoginSourceFilesStoreUpdateFunc
-}
-
-// NewMockLoginSourceFilesStore creates a new mock of the
-// loginSourceFilesStore interface. All methods return zero values for all
-// results, unless overwritten.
-func NewMockLoginSourceFilesStore() *MockLoginSourceFilesStore {
-	return &MockLoginSourceFilesStore{
-		GetByIDFunc: &LoginSourceFilesStoreGetByIDFunc{
-			defaultHook: func(int64) (r0 *LoginSource, r1 error) {
-				return
-			},
-		},
-		LenFunc: &LoginSourceFilesStoreLenFunc{
-			defaultHook: func() (r0 int) {
-				return
-			},
-		},
-		ListFunc: &LoginSourceFilesStoreListFunc{
-			defaultHook: func(ListLoginSourceOpts) (r0 []*LoginSource) {
-				return
-			},
-		},
-		UpdateFunc: &LoginSourceFilesStoreUpdateFunc{
-			defaultHook: func(*LoginSource) {
-				return
-			},
-		},
-	}
-}
-
-// NewStrictMockLoginSourceFilesStore creates a new mock of the
-// loginSourceFilesStore interface. All methods panic on invocation, unless
-// overwritten.
-func NewStrictMockLoginSourceFilesStore() *MockLoginSourceFilesStore {
-	return &MockLoginSourceFilesStore{
-		GetByIDFunc: &LoginSourceFilesStoreGetByIDFunc{
-			defaultHook: func(int64) (*LoginSource, error) {
-				panic("unexpected invocation of MockLoginSourceFilesStore.GetByID")
-			},
-		},
-		LenFunc: &LoginSourceFilesStoreLenFunc{
-			defaultHook: func() int {
-				panic("unexpected invocation of MockLoginSourceFilesStore.Len")
-			},
-		},
-		ListFunc: &LoginSourceFilesStoreListFunc{
-			defaultHook: func(ListLoginSourceOpts) []*LoginSource {
-				panic("unexpected invocation of MockLoginSourceFilesStore.List")
-			},
-		},
-		UpdateFunc: &LoginSourceFilesStoreUpdateFunc{
-			defaultHook: func(*LoginSource) {
-				panic("unexpected invocation of MockLoginSourceFilesStore.Update")
-			},
-		},
-	}
-}
-
-// surrogateMockLoginSourceFilesStore is a copy of the loginSourceFilesStore
-// interface (from the package gogs.io/gogs/internal/db). It is redefined
-// here as it is unexported in the source package.
-type surrogateMockLoginSourceFilesStore interface {
-	GetByID(int64) (*LoginSource, error)
-	Len() int
-	List(ListLoginSourceOpts) []*LoginSource
-	Update(*LoginSource)
-}
-
-// NewMockLoginSourceFilesStoreFrom creates a new mock of the
-// MockLoginSourceFilesStore interface. All methods delegate to the given
-// implementation, unless overwritten.
-func NewMockLoginSourceFilesStoreFrom(i surrogateMockLoginSourceFilesStore) *MockLoginSourceFilesStore {
-	return &MockLoginSourceFilesStore{
-		GetByIDFunc: &LoginSourceFilesStoreGetByIDFunc{
-			defaultHook: i.GetByID,
-		},
-		LenFunc: &LoginSourceFilesStoreLenFunc{
-			defaultHook: i.Len,
-		},
-		ListFunc: &LoginSourceFilesStoreListFunc{
-			defaultHook: i.List,
-		},
-		UpdateFunc: &LoginSourceFilesStoreUpdateFunc{
-			defaultHook: i.Update,
-		},
-	}
-}
-
-// LoginSourceFilesStoreGetByIDFunc describes the behavior when the GetByID
-// method of the parent MockLoginSourceFilesStore instance is invoked.
-type LoginSourceFilesStoreGetByIDFunc struct {
-	defaultHook func(int64) (*LoginSource, error)
-	hooks       []func(int64) (*LoginSource, error)
-	history     []LoginSourceFilesStoreGetByIDFuncCall
-	mutex       sync.Mutex
-}
-
-// GetByID delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourceFilesStore) GetByID(v0 int64) (*LoginSource, error) {
-	r0, r1 := m.GetByIDFunc.nextHook()(v0)
-	m.GetByIDFunc.appendCall(LoginSourceFilesStoreGetByIDFuncCall{v0, r0, r1})
-	return r0, r1
-}
-
-// SetDefaultHook sets function that is called when the GetByID method of
-// the parent MockLoginSourceFilesStore instance is invoked and the hook
-// queue is empty.
-func (f *LoginSourceFilesStoreGetByIDFunc) SetDefaultHook(hook func(int64) (*LoginSource, error)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// GetByID method of the parent MockLoginSourceFilesStore instance invokes
-// the hook at the front of the queue and discards it. After the queue is
-// empty, the default hook function is invoked for any future action.
-func (f *LoginSourceFilesStoreGetByIDFunc) PushHook(hook func(int64) (*LoginSource, error)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourceFilesStoreGetByIDFunc) SetDefaultReturn(r0 *LoginSource, r1 error) {
-	f.SetDefaultHook(func(int64) (*LoginSource, error) {
-		return r0, r1
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourceFilesStoreGetByIDFunc) PushReturn(r0 *LoginSource, r1 error) {
-	f.PushHook(func(int64) (*LoginSource, error) {
-		return r0, r1
-	})
-}
-
-func (f *LoginSourceFilesStoreGetByIDFunc) nextHook() func(int64) (*LoginSource, error) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourceFilesStoreGetByIDFunc) appendCall(r0 LoginSourceFilesStoreGetByIDFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourceFilesStoreGetByIDFuncCall
-// objects describing the invocations of this function.
-func (f *LoginSourceFilesStoreGetByIDFunc) History() []LoginSourceFilesStoreGetByIDFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourceFilesStoreGetByIDFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourceFilesStoreGetByIDFuncCall is an object that describes an
-// invocation of method GetByID on an instance of MockLoginSourceFilesStore.
-type LoginSourceFilesStoreGetByIDFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 int64
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 *LoginSource
-	// Result1 is the value of the 2nd result returned from this method
-	// invocation.
-	Result1 error
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourceFilesStoreGetByIDFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourceFilesStoreGetByIDFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0, c.Result1}
-}
-
-// LoginSourceFilesStoreLenFunc describes the behavior when the Len method
-// of the parent MockLoginSourceFilesStore instance is invoked.
-type LoginSourceFilesStoreLenFunc struct {
-	defaultHook func() int
-	hooks       []func() int
-	history     []LoginSourceFilesStoreLenFuncCall
-	mutex       sync.Mutex
-}
-
-// Len delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourceFilesStore) Len() int {
-	r0 := m.LenFunc.nextHook()()
-	m.LenFunc.appendCall(LoginSourceFilesStoreLenFuncCall{r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the Len method of the
-// parent MockLoginSourceFilesStore instance is invoked and the hook queue
-// is empty.
-func (f *LoginSourceFilesStoreLenFunc) SetDefaultHook(hook func() int) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Len method of the parent MockLoginSourceFilesStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *LoginSourceFilesStoreLenFunc) PushHook(hook func() int) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourceFilesStoreLenFunc) SetDefaultReturn(r0 int) {
-	f.SetDefaultHook(func() int {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourceFilesStoreLenFunc) PushReturn(r0 int) {
-	f.PushHook(func() int {
-		return r0
-	})
-}
-
-func (f *LoginSourceFilesStoreLenFunc) nextHook() func() int {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourceFilesStoreLenFunc) appendCall(r0 LoginSourceFilesStoreLenFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourceFilesStoreLenFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourceFilesStoreLenFunc) History() []LoginSourceFilesStoreLenFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourceFilesStoreLenFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourceFilesStoreLenFuncCall is an object that describes an
-// invocation of method Len on an instance of MockLoginSourceFilesStore.
-type LoginSourceFilesStoreLenFuncCall struct {
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 int
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourceFilesStoreLenFuncCall) Args() []interface{} {
-	return []interface{}{}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourceFilesStoreLenFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// LoginSourceFilesStoreListFunc describes the behavior when the List method
-// of the parent MockLoginSourceFilesStore instance is invoked.
-type LoginSourceFilesStoreListFunc struct {
-	defaultHook func(ListLoginSourceOpts) []*LoginSource
-	hooks       []func(ListLoginSourceOpts) []*LoginSource
-	history     []LoginSourceFilesStoreListFuncCall
-	mutex       sync.Mutex
-}
-
-// List delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourceFilesStore) List(v0 ListLoginSourceOpts) []*LoginSource {
-	r0 := m.ListFunc.nextHook()(v0)
-	m.ListFunc.appendCall(LoginSourceFilesStoreListFuncCall{v0, r0})
-	return r0
-}
-
-// SetDefaultHook sets function that is called when the List method of the
-// parent MockLoginSourceFilesStore instance is invoked and the hook queue
-// is empty.
-func (f *LoginSourceFilesStoreListFunc) SetDefaultHook(hook func(ListLoginSourceOpts) []*LoginSource) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// List method of the parent MockLoginSourceFilesStore instance invokes the
-// hook at the front of the queue and discards it. After the queue is empty,
-// the default hook function is invoked for any future action.
-func (f *LoginSourceFilesStoreListFunc) PushHook(hook func(ListLoginSourceOpts) []*LoginSource) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourceFilesStoreListFunc) SetDefaultReturn(r0 []*LoginSource) {
-	f.SetDefaultHook(func(ListLoginSourceOpts) []*LoginSource {
-		return r0
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourceFilesStoreListFunc) PushReturn(r0 []*LoginSource) {
-	f.PushHook(func(ListLoginSourceOpts) []*LoginSource {
-		return r0
-	})
-}
-
-func (f *LoginSourceFilesStoreListFunc) nextHook() func(ListLoginSourceOpts) []*LoginSource {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourceFilesStoreListFunc) appendCall(r0 LoginSourceFilesStoreListFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourceFilesStoreListFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourceFilesStoreListFunc) History() []LoginSourceFilesStoreListFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourceFilesStoreListFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourceFilesStoreListFuncCall is an object that describes an
-// invocation of method List on an instance of MockLoginSourceFilesStore.
-type LoginSourceFilesStoreListFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 ListLoginSourceOpts
-	// Result0 is the value of the 1st result returned from this method
-	// invocation.
-	Result0 []*LoginSource
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourceFilesStoreListFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourceFilesStoreListFuncCall) Results() []interface{} {
-	return []interface{}{c.Result0}
-}
-
-// LoginSourceFilesStoreUpdateFunc describes the behavior when the Update
-// method of the parent MockLoginSourceFilesStore instance is invoked.
-type LoginSourceFilesStoreUpdateFunc struct {
-	defaultHook func(*LoginSource)
-	hooks       []func(*LoginSource)
-	history     []LoginSourceFilesStoreUpdateFuncCall
-	mutex       sync.Mutex
-}
-
-// Update delegates to the next hook function in the queue and stores the
-// parameter and result values of this invocation.
-func (m *MockLoginSourceFilesStore) Update(v0 *LoginSource) {
-	m.UpdateFunc.nextHook()(v0)
-	m.UpdateFunc.appendCall(LoginSourceFilesStoreUpdateFuncCall{v0})
-	return
-}
-
-// SetDefaultHook sets function that is called when the Update method of the
-// parent MockLoginSourceFilesStore instance is invoked and the hook queue
-// is empty.
-func (f *LoginSourceFilesStoreUpdateFunc) SetDefaultHook(hook func(*LoginSource)) {
-	f.defaultHook = hook
-}
-
-// PushHook adds a function to the end of hook queue. Each invocation of the
-// Update method of the parent MockLoginSourceFilesStore instance invokes
-// the hook at the front of the queue and discards it. After the queue is
-// empty, the default hook function is invoked for any future action.
-func (f *LoginSourceFilesStoreUpdateFunc) PushHook(hook func(*LoginSource)) {
-	f.mutex.Lock()
-	f.hooks = append(f.hooks, hook)
-	f.mutex.Unlock()
-}
-
-// SetDefaultReturn calls SetDefaultHook with a function that returns the
-// given values.
-func (f *LoginSourceFilesStoreUpdateFunc) SetDefaultReturn() {
-	f.SetDefaultHook(func(*LoginSource) {
-		return
-	})
-}
-
-// PushReturn calls PushHook with a function that returns the given values.
-func (f *LoginSourceFilesStoreUpdateFunc) PushReturn() {
-	f.PushHook(func(*LoginSource) {
-		return
-	})
-}
-
-func (f *LoginSourceFilesStoreUpdateFunc) nextHook() func(*LoginSource) {
-	f.mutex.Lock()
-	defer f.mutex.Unlock()
-
-	if len(f.hooks) == 0 {
-		return f.defaultHook
-	}
-
-	hook := f.hooks[0]
-	f.hooks = f.hooks[1:]
-	return hook
-}
-
-func (f *LoginSourceFilesStoreUpdateFunc) appendCall(r0 LoginSourceFilesStoreUpdateFuncCall) {
-	f.mutex.Lock()
-	f.history = append(f.history, r0)
-	f.mutex.Unlock()
-}
-
-// History returns a sequence of LoginSourceFilesStoreUpdateFuncCall objects
-// describing the invocations of this function.
-func (f *LoginSourceFilesStoreUpdateFunc) History() []LoginSourceFilesStoreUpdateFuncCall {
-	f.mutex.Lock()
-	history := make([]LoginSourceFilesStoreUpdateFuncCall, len(f.history))
-	copy(history, f.history)
-	f.mutex.Unlock()
-
-	return history
-}
-
-// LoginSourceFilesStoreUpdateFuncCall is an object that describes an
-// invocation of method Update on an instance of MockLoginSourceFilesStore.
-type LoginSourceFilesStoreUpdateFuncCall struct {
-	// Arg0 is the value of the 1st argument passed to this method
-	// invocation.
-	Arg0 *LoginSource
-}
-
-// Args returns an interface slice containing the arguments of this
-// invocation.
-func (c LoginSourceFilesStoreUpdateFuncCall) Args() []interface{} {
-	return []interface{}{c.Arg0}
-}
-
-// Results returns an interface slice containing the results of this
-// invocation.
-func (c LoginSourceFilesStoreUpdateFuncCall) Results() []interface{} {
-	return []interface{}{}
-}

+ 2411 - 0
internal/db/mocks_test.go

@@ -0,0 +1,2411 @@
+// Code generated by go-mockgen 1.3.3; DO NOT EDIT.
+//
+// This file was generated by running `go-mockgen` at the root of this repository.
+// To add additional mocks to this or another package, add a new entry to the
+// mockgen.yaml file in the root of this repository.
+
+package db
+
+import (
+	"context"
+	"sync"
+
+	auth "gogs.io/gogs/internal/auth"
+)
+
+// MockLoginSourcesStore is a mock implementation of the LoginSourcesStore
+// interface (from the package gogs.io/gogs/internal/db) used for unit
+// testing.
+type MockLoginSourcesStore struct {
+	// CountFunc is an instance of a mock function object controlling the
+	// behavior of the method Count.
+	CountFunc *LoginSourcesStoreCountFunc
+	// CreateFunc is an instance of a mock function object controlling the
+	// behavior of the method Create.
+	CreateFunc *LoginSourcesStoreCreateFunc
+	// DeleteByIDFunc is an instance of a mock function object controlling
+	// the behavior of the method DeleteByID.
+	DeleteByIDFunc *LoginSourcesStoreDeleteByIDFunc
+	// GetByIDFunc is an instance of a mock function object controlling the
+	// behavior of the method GetByID.
+	GetByIDFunc *LoginSourcesStoreGetByIDFunc
+	// ListFunc is an instance of a mock function object controlling the
+	// behavior of the method List.
+	ListFunc *LoginSourcesStoreListFunc
+	// ResetNonDefaultFunc is an instance of a mock function object
+	// controlling the behavior of the method ResetNonDefault.
+	ResetNonDefaultFunc *LoginSourcesStoreResetNonDefaultFunc
+	// SaveFunc is an instance of a mock function object controlling the
+	// behavior of the method Save.
+	SaveFunc *LoginSourcesStoreSaveFunc
+}
+
+// NewMockLoginSourcesStore creates a new mock of the LoginSourcesStore
+// interface. All methods return zero values for all results, unless
+// overwritten.
+func NewMockLoginSourcesStore() *MockLoginSourcesStore {
+	return &MockLoginSourcesStore{
+		CountFunc: &LoginSourcesStoreCountFunc{
+			defaultHook: func(context.Context) (r0 int64) {
+				return
+			},
+		},
+		CreateFunc: &LoginSourcesStoreCreateFunc{
+			defaultHook: func(context.Context, CreateLoginSourceOpts) (r0 *LoginSource, r1 error) {
+				return
+			},
+		},
+		DeleteByIDFunc: &LoginSourcesStoreDeleteByIDFunc{
+			defaultHook: func(context.Context, int64) (r0 error) {
+				return
+			},
+		},
+		GetByIDFunc: &LoginSourcesStoreGetByIDFunc{
+			defaultHook: func(context.Context, int64) (r0 *LoginSource, r1 error) {
+				return
+			},
+		},
+		ListFunc: &LoginSourcesStoreListFunc{
+			defaultHook: func(context.Context, ListLoginSourceOpts) (r0 []*LoginSource, r1 error) {
+				return
+			},
+		},
+		ResetNonDefaultFunc: &LoginSourcesStoreResetNonDefaultFunc{
+			defaultHook: func(context.Context, *LoginSource) (r0 error) {
+				return
+			},
+		},
+		SaveFunc: &LoginSourcesStoreSaveFunc{
+			defaultHook: func(context.Context, *LoginSource) (r0 error) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockLoginSourcesStore creates a new mock of the
+// LoginSourcesStore interface. All methods panic on invocation, unless
+// overwritten.
+func NewStrictMockLoginSourcesStore() *MockLoginSourcesStore {
+	return &MockLoginSourcesStore{
+		CountFunc: &LoginSourcesStoreCountFunc{
+			defaultHook: func(context.Context) int64 {
+				panic("unexpected invocation of MockLoginSourcesStore.Count")
+			},
+		},
+		CreateFunc: &LoginSourcesStoreCreateFunc{
+			defaultHook: func(context.Context, CreateLoginSourceOpts) (*LoginSource, error) {
+				panic("unexpected invocation of MockLoginSourcesStore.Create")
+			},
+		},
+		DeleteByIDFunc: &LoginSourcesStoreDeleteByIDFunc{
+			defaultHook: func(context.Context, int64) error {
+				panic("unexpected invocation of MockLoginSourcesStore.DeleteByID")
+			},
+		},
+		GetByIDFunc: &LoginSourcesStoreGetByIDFunc{
+			defaultHook: func(context.Context, int64) (*LoginSource, error) {
+				panic("unexpected invocation of MockLoginSourcesStore.GetByID")
+			},
+		},
+		ListFunc: &LoginSourcesStoreListFunc{
+			defaultHook: func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error) {
+				panic("unexpected invocation of MockLoginSourcesStore.List")
+			},
+		},
+		ResetNonDefaultFunc: &LoginSourcesStoreResetNonDefaultFunc{
+			defaultHook: func(context.Context, *LoginSource) error {
+				panic("unexpected invocation of MockLoginSourcesStore.ResetNonDefault")
+			},
+		},
+		SaveFunc: &LoginSourcesStoreSaveFunc{
+			defaultHook: func(context.Context, *LoginSource) error {
+				panic("unexpected invocation of MockLoginSourcesStore.Save")
+			},
+		},
+	}
+}
+
+// NewMockLoginSourcesStoreFrom creates a new mock of the
+// MockLoginSourcesStore interface. All methods delegate to the given
+// implementation, unless overwritten.
+func NewMockLoginSourcesStoreFrom(i LoginSourcesStore) *MockLoginSourcesStore {
+	return &MockLoginSourcesStore{
+		CountFunc: &LoginSourcesStoreCountFunc{
+			defaultHook: i.Count,
+		},
+		CreateFunc: &LoginSourcesStoreCreateFunc{
+			defaultHook: i.Create,
+		},
+		DeleteByIDFunc: &LoginSourcesStoreDeleteByIDFunc{
+			defaultHook: i.DeleteByID,
+		},
+		GetByIDFunc: &LoginSourcesStoreGetByIDFunc{
+			defaultHook: i.GetByID,
+		},
+		ListFunc: &LoginSourcesStoreListFunc{
+			defaultHook: i.List,
+		},
+		ResetNonDefaultFunc: &LoginSourcesStoreResetNonDefaultFunc{
+			defaultHook: i.ResetNonDefault,
+		},
+		SaveFunc: &LoginSourcesStoreSaveFunc{
+			defaultHook: i.Save,
+		},
+	}
+}
+
+// LoginSourcesStoreCountFunc describes the behavior when the Count method
+// of the parent MockLoginSourcesStore instance is invoked.
+type LoginSourcesStoreCountFunc struct {
+	defaultHook func(context.Context) int64
+	hooks       []func(context.Context) int64
+	history     []LoginSourcesStoreCountFuncCall
+	mutex       sync.Mutex
+}
+
+// Count delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourcesStore) Count(v0 context.Context) int64 {
+	r0 := m.CountFunc.nextHook()(v0)
+	m.CountFunc.appendCall(LoginSourcesStoreCountFuncCall{v0, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the Count method of the
+// parent MockLoginSourcesStore instance is invoked and the hook queue is
+// empty.
+func (f *LoginSourcesStoreCountFunc) SetDefaultHook(hook func(context.Context) int64) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Count method of the parent MockLoginSourcesStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *LoginSourcesStoreCountFunc) PushHook(hook func(context.Context) int64) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourcesStoreCountFunc) SetDefaultReturn(r0 int64) {
+	f.SetDefaultHook(func(context.Context) int64 {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourcesStoreCountFunc) PushReturn(r0 int64) {
+	f.PushHook(func(context.Context) int64 {
+		return r0
+	})
+}
+
+func (f *LoginSourcesStoreCountFunc) nextHook() func(context.Context) int64 {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourcesStoreCountFunc) appendCall(r0 LoginSourcesStoreCountFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourcesStoreCountFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourcesStoreCountFunc) History() []LoginSourcesStoreCountFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourcesStoreCountFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourcesStoreCountFuncCall is an object that describes an invocation
+// of method Count on an instance of MockLoginSourcesStore.
+type LoginSourcesStoreCountFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 int64
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourcesStoreCountFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourcesStoreCountFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// LoginSourcesStoreCreateFunc describes the behavior when the Create method
+// of the parent MockLoginSourcesStore instance is invoked.
+type LoginSourcesStoreCreateFunc struct {
+	defaultHook func(context.Context, CreateLoginSourceOpts) (*LoginSource, error)
+	hooks       []func(context.Context, CreateLoginSourceOpts) (*LoginSource, error)
+	history     []LoginSourcesStoreCreateFuncCall
+	mutex       sync.Mutex
+}
+
+// Create delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourcesStore) Create(v0 context.Context, v1 CreateLoginSourceOpts) (*LoginSource, error) {
+	r0, r1 := m.CreateFunc.nextHook()(v0, v1)
+	m.CreateFunc.appendCall(LoginSourcesStoreCreateFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the Create method of the
+// parent MockLoginSourcesStore instance is invoked and the hook queue is
+// empty.
+func (f *LoginSourcesStoreCreateFunc) SetDefaultHook(hook func(context.Context, CreateLoginSourceOpts) (*LoginSource, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Create method of the parent MockLoginSourcesStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *LoginSourcesStoreCreateFunc) PushHook(hook func(context.Context, CreateLoginSourceOpts) (*LoginSource, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourcesStoreCreateFunc) SetDefaultReturn(r0 *LoginSource, r1 error) {
+	f.SetDefaultHook(func(context.Context, CreateLoginSourceOpts) (*LoginSource, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourcesStoreCreateFunc) PushReturn(r0 *LoginSource, r1 error) {
+	f.PushHook(func(context.Context, CreateLoginSourceOpts) (*LoginSource, error) {
+		return r0, r1
+	})
+}
+
+func (f *LoginSourcesStoreCreateFunc) nextHook() func(context.Context, CreateLoginSourceOpts) (*LoginSource, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourcesStoreCreateFunc) appendCall(r0 LoginSourcesStoreCreateFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourcesStoreCreateFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourcesStoreCreateFunc) History() []LoginSourcesStoreCreateFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourcesStoreCreateFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourcesStoreCreateFuncCall is an object that describes an invocation
+// of method Create on an instance of MockLoginSourcesStore.
+type LoginSourcesStoreCreateFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 CreateLoginSourceOpts
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *LoginSource
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourcesStoreCreateFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourcesStoreCreateFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// LoginSourcesStoreDeleteByIDFunc describes the behavior when the
+// DeleteByID method of the parent MockLoginSourcesStore instance is
+// invoked.
+type LoginSourcesStoreDeleteByIDFunc struct {
+	defaultHook func(context.Context, int64) error
+	hooks       []func(context.Context, int64) error
+	history     []LoginSourcesStoreDeleteByIDFuncCall
+	mutex       sync.Mutex
+}
+
+// DeleteByID delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockLoginSourcesStore) DeleteByID(v0 context.Context, v1 int64) error {
+	r0 := m.DeleteByIDFunc.nextHook()(v0, v1)
+	m.DeleteByIDFunc.appendCall(LoginSourcesStoreDeleteByIDFuncCall{v0, v1, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the DeleteByID method of
+// the parent MockLoginSourcesStore instance is invoked and the hook queue
+// is empty.
+func (f *LoginSourcesStoreDeleteByIDFunc) SetDefaultHook(hook func(context.Context, int64) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// DeleteByID method of the parent MockLoginSourcesStore instance invokes
+// the hook at the front of the queue and discards it. After the queue is
+// empty, the default hook function is invoked for any future action.
+func (f *LoginSourcesStoreDeleteByIDFunc) PushHook(hook func(context.Context, int64) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourcesStoreDeleteByIDFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(context.Context, int64) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourcesStoreDeleteByIDFunc) PushReturn(r0 error) {
+	f.PushHook(func(context.Context, int64) error {
+		return r0
+	})
+}
+
+func (f *LoginSourcesStoreDeleteByIDFunc) nextHook() func(context.Context, int64) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourcesStoreDeleteByIDFunc) appendCall(r0 LoginSourcesStoreDeleteByIDFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourcesStoreDeleteByIDFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourcesStoreDeleteByIDFunc) History() []LoginSourcesStoreDeleteByIDFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourcesStoreDeleteByIDFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourcesStoreDeleteByIDFuncCall is an object that describes an
+// invocation of method DeleteByID on an instance of MockLoginSourcesStore.
+type LoginSourcesStoreDeleteByIDFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourcesStoreDeleteByIDFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourcesStoreDeleteByIDFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// LoginSourcesStoreGetByIDFunc describes the behavior when the GetByID
+// method of the parent MockLoginSourcesStore instance is invoked.
+type LoginSourcesStoreGetByIDFunc struct {
+	defaultHook func(context.Context, int64) (*LoginSource, error)
+	hooks       []func(context.Context, int64) (*LoginSource, error)
+	history     []LoginSourcesStoreGetByIDFuncCall
+	mutex       sync.Mutex
+}
+
+// GetByID delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourcesStore) GetByID(v0 context.Context, v1 int64) (*LoginSource, error) {
+	r0, r1 := m.GetByIDFunc.nextHook()(v0, v1)
+	m.GetByIDFunc.appendCall(LoginSourcesStoreGetByIDFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetByID method of
+// the parent MockLoginSourcesStore instance is invoked and the hook queue
+// is empty.
+func (f *LoginSourcesStoreGetByIDFunc) SetDefaultHook(hook func(context.Context, int64) (*LoginSource, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetByID method of the parent MockLoginSourcesStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *LoginSourcesStoreGetByIDFunc) PushHook(hook func(context.Context, int64) (*LoginSource, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourcesStoreGetByIDFunc) SetDefaultReturn(r0 *LoginSource, r1 error) {
+	f.SetDefaultHook(func(context.Context, int64) (*LoginSource, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourcesStoreGetByIDFunc) PushReturn(r0 *LoginSource, r1 error) {
+	f.PushHook(func(context.Context, int64) (*LoginSource, error) {
+		return r0, r1
+	})
+}
+
+func (f *LoginSourcesStoreGetByIDFunc) nextHook() func(context.Context, int64) (*LoginSource, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourcesStoreGetByIDFunc) appendCall(r0 LoginSourcesStoreGetByIDFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourcesStoreGetByIDFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourcesStoreGetByIDFunc) History() []LoginSourcesStoreGetByIDFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourcesStoreGetByIDFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourcesStoreGetByIDFuncCall is an object that describes an
+// invocation of method GetByID on an instance of MockLoginSourcesStore.
+type LoginSourcesStoreGetByIDFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *LoginSource
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourcesStoreGetByIDFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourcesStoreGetByIDFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// LoginSourcesStoreListFunc describes the behavior when the List method of
+// the parent MockLoginSourcesStore instance is invoked.
+type LoginSourcesStoreListFunc struct {
+	defaultHook func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error)
+	hooks       []func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error)
+	history     []LoginSourcesStoreListFuncCall
+	mutex       sync.Mutex
+}
+
+// List delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourcesStore) List(v0 context.Context, v1 ListLoginSourceOpts) ([]*LoginSource, error) {
+	r0, r1 := m.ListFunc.nextHook()(v0, v1)
+	m.ListFunc.appendCall(LoginSourcesStoreListFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the List method of the
+// parent MockLoginSourcesStore instance is invoked and the hook queue is
+// empty.
+func (f *LoginSourcesStoreListFunc) SetDefaultHook(hook func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// List method of the parent MockLoginSourcesStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *LoginSourcesStoreListFunc) PushHook(hook func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourcesStoreListFunc) SetDefaultReturn(r0 []*LoginSource, r1 error) {
+	f.SetDefaultHook(func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourcesStoreListFunc) PushReturn(r0 []*LoginSource, r1 error) {
+	f.PushHook(func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error) {
+		return r0, r1
+	})
+}
+
+func (f *LoginSourcesStoreListFunc) nextHook() func(context.Context, ListLoginSourceOpts) ([]*LoginSource, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourcesStoreListFunc) appendCall(r0 LoginSourcesStoreListFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourcesStoreListFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourcesStoreListFunc) History() []LoginSourcesStoreListFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourcesStoreListFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourcesStoreListFuncCall is an object that describes an invocation
+// of method List on an instance of MockLoginSourcesStore.
+type LoginSourcesStoreListFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 ListLoginSourceOpts
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 []*LoginSource
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourcesStoreListFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourcesStoreListFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// LoginSourcesStoreResetNonDefaultFunc describes the behavior when the
+// ResetNonDefault method of the parent MockLoginSourcesStore instance is
+// invoked.
+type LoginSourcesStoreResetNonDefaultFunc struct {
+	defaultHook func(context.Context, *LoginSource) error
+	hooks       []func(context.Context, *LoginSource) error
+	history     []LoginSourcesStoreResetNonDefaultFuncCall
+	mutex       sync.Mutex
+}
+
+// ResetNonDefault delegates to the next hook function in the queue and
+// stores the parameter and result values of this invocation.
+func (m *MockLoginSourcesStore) ResetNonDefault(v0 context.Context, v1 *LoginSource) error {
+	r0 := m.ResetNonDefaultFunc.nextHook()(v0, v1)
+	m.ResetNonDefaultFunc.appendCall(LoginSourcesStoreResetNonDefaultFuncCall{v0, v1, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the ResetNonDefault
+// method of the parent MockLoginSourcesStore instance is invoked and the
+// hook queue is empty.
+func (f *LoginSourcesStoreResetNonDefaultFunc) SetDefaultHook(hook func(context.Context, *LoginSource) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// ResetNonDefault method of the parent MockLoginSourcesStore instance
+// invokes the hook at the front of the queue and discards it. After the
+// queue is empty, the default hook function is invoked for any future
+// action.
+func (f *LoginSourcesStoreResetNonDefaultFunc) PushHook(hook func(context.Context, *LoginSource) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourcesStoreResetNonDefaultFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(context.Context, *LoginSource) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourcesStoreResetNonDefaultFunc) PushReturn(r0 error) {
+	f.PushHook(func(context.Context, *LoginSource) error {
+		return r0
+	})
+}
+
+func (f *LoginSourcesStoreResetNonDefaultFunc) nextHook() func(context.Context, *LoginSource) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourcesStoreResetNonDefaultFunc) appendCall(r0 LoginSourcesStoreResetNonDefaultFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourcesStoreResetNonDefaultFuncCall
+// objects describing the invocations of this function.
+func (f *LoginSourcesStoreResetNonDefaultFunc) History() []LoginSourcesStoreResetNonDefaultFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourcesStoreResetNonDefaultFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourcesStoreResetNonDefaultFuncCall is an object that describes an
+// invocation of method ResetNonDefault on an instance of
+// MockLoginSourcesStore.
+type LoginSourcesStoreResetNonDefaultFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 *LoginSource
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourcesStoreResetNonDefaultFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourcesStoreResetNonDefaultFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// LoginSourcesStoreSaveFunc describes the behavior when the Save method of
+// the parent MockLoginSourcesStore instance is invoked.
+type LoginSourcesStoreSaveFunc struct {
+	defaultHook func(context.Context, *LoginSource) error
+	hooks       []func(context.Context, *LoginSource) error
+	history     []LoginSourcesStoreSaveFuncCall
+	mutex       sync.Mutex
+}
+
+// Save delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourcesStore) Save(v0 context.Context, v1 *LoginSource) error {
+	r0 := m.SaveFunc.nextHook()(v0, v1)
+	m.SaveFunc.appendCall(LoginSourcesStoreSaveFuncCall{v0, v1, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the Save method of the
+// parent MockLoginSourcesStore instance is invoked and the hook queue is
+// empty.
+func (f *LoginSourcesStoreSaveFunc) SetDefaultHook(hook func(context.Context, *LoginSource) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Save method of the parent MockLoginSourcesStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *LoginSourcesStoreSaveFunc) PushHook(hook func(context.Context, *LoginSource) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourcesStoreSaveFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(context.Context, *LoginSource) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourcesStoreSaveFunc) PushReturn(r0 error) {
+	f.PushHook(func(context.Context, *LoginSource) error {
+		return r0
+	})
+}
+
+func (f *LoginSourcesStoreSaveFunc) nextHook() func(context.Context, *LoginSource) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourcesStoreSaveFunc) appendCall(r0 LoginSourcesStoreSaveFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourcesStoreSaveFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourcesStoreSaveFunc) History() []LoginSourcesStoreSaveFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourcesStoreSaveFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourcesStoreSaveFuncCall is an object that describes an invocation
+// of method Save on an instance of MockLoginSourcesStore.
+type LoginSourcesStoreSaveFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 *LoginSource
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourcesStoreSaveFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourcesStoreSaveFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// MockLoginSourceFileStore is a mock implementation of the
+// loginSourceFileStore interface (from the package
+// gogs.io/gogs/internal/db) used for unit testing.
+type MockLoginSourceFileStore struct {
+	// SaveFunc is an instance of a mock function object controlling the
+	// behavior of the method Save.
+	SaveFunc *LoginSourceFileStoreSaveFunc
+	// SetConfigFunc is an instance of a mock function object controlling
+	// the behavior of the method SetConfig.
+	SetConfigFunc *LoginSourceFileStoreSetConfigFunc
+	// SetGeneralFunc is an instance of a mock function object controlling
+	// the behavior of the method SetGeneral.
+	SetGeneralFunc *LoginSourceFileStoreSetGeneralFunc
+}
+
+// NewMockLoginSourceFileStore creates a new mock of the
+// loginSourceFileStore interface. All methods return zero values for all
+// results, unless overwritten.
+func NewMockLoginSourceFileStore() *MockLoginSourceFileStore {
+	return &MockLoginSourceFileStore{
+		SaveFunc: &LoginSourceFileStoreSaveFunc{
+			defaultHook: func() (r0 error) {
+				return
+			},
+		},
+		SetConfigFunc: &LoginSourceFileStoreSetConfigFunc{
+			defaultHook: func(interface{}) (r0 error) {
+				return
+			},
+		},
+		SetGeneralFunc: &LoginSourceFileStoreSetGeneralFunc{
+			defaultHook: func(string, string) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockLoginSourceFileStore creates a new mock of the
+// loginSourceFileStore interface. All methods panic on invocation, unless
+// overwritten.
+func NewStrictMockLoginSourceFileStore() *MockLoginSourceFileStore {
+	return &MockLoginSourceFileStore{
+		SaveFunc: &LoginSourceFileStoreSaveFunc{
+			defaultHook: func() error {
+				panic("unexpected invocation of MockLoginSourceFileStore.Save")
+			},
+		},
+		SetConfigFunc: &LoginSourceFileStoreSetConfigFunc{
+			defaultHook: func(interface{}) error {
+				panic("unexpected invocation of MockLoginSourceFileStore.SetConfig")
+			},
+		},
+		SetGeneralFunc: &LoginSourceFileStoreSetGeneralFunc{
+			defaultHook: func(string, string) {
+				panic("unexpected invocation of MockLoginSourceFileStore.SetGeneral")
+			},
+		},
+	}
+}
+
+// surrogateMockLoginSourceFileStore is a copy of the loginSourceFileStore
+// interface (from the package gogs.io/gogs/internal/db). It is redefined
+// here as it is unexported in the source package.
+type surrogateMockLoginSourceFileStore interface {
+	Save() error
+	SetConfig(interface{}) error
+	SetGeneral(string, string)
+}
+
+// NewMockLoginSourceFileStoreFrom creates a new mock of the
+// MockLoginSourceFileStore interface. All methods delegate to the given
+// implementation, unless overwritten.
+func NewMockLoginSourceFileStoreFrom(i surrogateMockLoginSourceFileStore) *MockLoginSourceFileStore {
+	return &MockLoginSourceFileStore{
+		SaveFunc: &LoginSourceFileStoreSaveFunc{
+			defaultHook: i.Save,
+		},
+		SetConfigFunc: &LoginSourceFileStoreSetConfigFunc{
+			defaultHook: i.SetConfig,
+		},
+		SetGeneralFunc: &LoginSourceFileStoreSetGeneralFunc{
+			defaultHook: i.SetGeneral,
+		},
+	}
+}
+
+// LoginSourceFileStoreSaveFunc describes the behavior when the Save method
+// of the parent MockLoginSourceFileStore instance is invoked.
+type LoginSourceFileStoreSaveFunc struct {
+	defaultHook func() error
+	hooks       []func() error
+	history     []LoginSourceFileStoreSaveFuncCall
+	mutex       sync.Mutex
+}
+
+// Save delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourceFileStore) Save() error {
+	r0 := m.SaveFunc.nextHook()()
+	m.SaveFunc.appendCall(LoginSourceFileStoreSaveFuncCall{r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the Save method of the
+// parent MockLoginSourceFileStore instance is invoked and the hook queue is
+// empty.
+func (f *LoginSourceFileStoreSaveFunc) SetDefaultHook(hook func() error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Save method of the parent MockLoginSourceFileStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *LoginSourceFileStoreSaveFunc) PushHook(hook func() error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourceFileStoreSaveFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func() error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourceFileStoreSaveFunc) PushReturn(r0 error) {
+	f.PushHook(func() error {
+		return r0
+	})
+}
+
+func (f *LoginSourceFileStoreSaveFunc) nextHook() func() error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourceFileStoreSaveFunc) appendCall(r0 LoginSourceFileStoreSaveFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourceFileStoreSaveFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourceFileStoreSaveFunc) History() []LoginSourceFileStoreSaveFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourceFileStoreSaveFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourceFileStoreSaveFuncCall is an object that describes an
+// invocation of method Save on an instance of MockLoginSourceFileStore.
+type LoginSourceFileStoreSaveFuncCall struct {
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourceFileStoreSaveFuncCall) Args() []interface{} {
+	return []interface{}{}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourceFileStoreSaveFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// LoginSourceFileStoreSetConfigFunc describes the behavior when the
+// SetConfig method of the parent MockLoginSourceFileStore instance is
+// invoked.
+type LoginSourceFileStoreSetConfigFunc struct {
+	defaultHook func(interface{}) error
+	hooks       []func(interface{}) error
+	history     []LoginSourceFileStoreSetConfigFuncCall
+	mutex       sync.Mutex
+}
+
+// SetConfig delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourceFileStore) SetConfig(v0 interface{}) error {
+	r0 := m.SetConfigFunc.nextHook()(v0)
+	m.SetConfigFunc.appendCall(LoginSourceFileStoreSetConfigFuncCall{v0, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the SetConfig method of
+// the parent MockLoginSourceFileStore instance is invoked and the hook
+// queue is empty.
+func (f *LoginSourceFileStoreSetConfigFunc) SetDefaultHook(hook func(interface{}) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// SetConfig method of the parent MockLoginSourceFileStore instance invokes
+// the hook at the front of the queue and discards it. After the queue is
+// empty, the default hook function is invoked for any future action.
+func (f *LoginSourceFileStoreSetConfigFunc) PushHook(hook func(interface{}) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourceFileStoreSetConfigFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(interface{}) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourceFileStoreSetConfigFunc) PushReturn(r0 error) {
+	f.PushHook(func(interface{}) error {
+		return r0
+	})
+}
+
+func (f *LoginSourceFileStoreSetConfigFunc) nextHook() func(interface{}) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourceFileStoreSetConfigFunc) appendCall(r0 LoginSourceFileStoreSetConfigFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourceFileStoreSetConfigFuncCall
+// objects describing the invocations of this function.
+func (f *LoginSourceFileStoreSetConfigFunc) History() []LoginSourceFileStoreSetConfigFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourceFileStoreSetConfigFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourceFileStoreSetConfigFuncCall is an object that describes an
+// invocation of method SetConfig on an instance of
+// MockLoginSourceFileStore.
+type LoginSourceFileStoreSetConfigFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 interface{}
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourceFileStoreSetConfigFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourceFileStoreSetConfigFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// LoginSourceFileStoreSetGeneralFunc describes the behavior when the
+// SetGeneral method of the parent MockLoginSourceFileStore instance is
+// invoked.
+type LoginSourceFileStoreSetGeneralFunc struct {
+	defaultHook func(string, string)
+	hooks       []func(string, string)
+	history     []LoginSourceFileStoreSetGeneralFuncCall
+	mutex       sync.Mutex
+}
+
+// SetGeneral delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockLoginSourceFileStore) SetGeneral(v0 string, v1 string) {
+	m.SetGeneralFunc.nextHook()(v0, v1)
+	m.SetGeneralFunc.appendCall(LoginSourceFileStoreSetGeneralFuncCall{v0, v1})
+	return
+}
+
+// SetDefaultHook sets function that is called when the SetGeneral method of
+// the parent MockLoginSourceFileStore instance is invoked and the hook
+// queue is empty.
+func (f *LoginSourceFileStoreSetGeneralFunc) SetDefaultHook(hook func(string, string)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// SetGeneral method of the parent MockLoginSourceFileStore instance invokes
+// the hook at the front of the queue and discards it. After the queue is
+// empty, the default hook function is invoked for any future action.
+func (f *LoginSourceFileStoreSetGeneralFunc) PushHook(hook func(string, string)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourceFileStoreSetGeneralFunc) SetDefaultReturn() {
+	f.SetDefaultHook(func(string, string) {
+		return
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourceFileStoreSetGeneralFunc) PushReturn() {
+	f.PushHook(func(string, string) {
+		return
+	})
+}
+
+func (f *LoginSourceFileStoreSetGeneralFunc) nextHook() func(string, string) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourceFileStoreSetGeneralFunc) appendCall(r0 LoginSourceFileStoreSetGeneralFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourceFileStoreSetGeneralFuncCall
+// objects describing the invocations of this function.
+func (f *LoginSourceFileStoreSetGeneralFunc) History() []LoginSourceFileStoreSetGeneralFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourceFileStoreSetGeneralFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourceFileStoreSetGeneralFuncCall is an object that describes an
+// invocation of method SetGeneral on an instance of
+// MockLoginSourceFileStore.
+type LoginSourceFileStoreSetGeneralFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 string
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 string
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourceFileStoreSetGeneralFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourceFileStoreSetGeneralFuncCall) Results() []interface{} {
+	return []interface{}{}
+}
+
+// MockLoginSourceFilesStore is a mock implementation of the
+// loginSourceFilesStore interface (from the package
+// gogs.io/gogs/internal/db) used for unit testing.
+type MockLoginSourceFilesStore struct {
+	// GetByIDFunc is an instance of a mock function object controlling the
+	// behavior of the method GetByID.
+	GetByIDFunc *LoginSourceFilesStoreGetByIDFunc
+	// LenFunc is an instance of a mock function object controlling the
+	// behavior of the method Len.
+	LenFunc *LoginSourceFilesStoreLenFunc
+	// ListFunc is an instance of a mock function object controlling the
+	// behavior of the method List.
+	ListFunc *LoginSourceFilesStoreListFunc
+	// UpdateFunc is an instance of a mock function object controlling the
+	// behavior of the method Update.
+	UpdateFunc *LoginSourceFilesStoreUpdateFunc
+}
+
+// NewMockLoginSourceFilesStore creates a new mock of the
+// loginSourceFilesStore interface. All methods return zero values for all
+// results, unless overwritten.
+func NewMockLoginSourceFilesStore() *MockLoginSourceFilesStore {
+	return &MockLoginSourceFilesStore{
+		GetByIDFunc: &LoginSourceFilesStoreGetByIDFunc{
+			defaultHook: func(int64) (r0 *LoginSource, r1 error) {
+				return
+			},
+		},
+		LenFunc: &LoginSourceFilesStoreLenFunc{
+			defaultHook: func() (r0 int) {
+				return
+			},
+		},
+		ListFunc: &LoginSourceFilesStoreListFunc{
+			defaultHook: func(ListLoginSourceOpts) (r0 []*LoginSource) {
+				return
+			},
+		},
+		UpdateFunc: &LoginSourceFilesStoreUpdateFunc{
+			defaultHook: func(*LoginSource) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockLoginSourceFilesStore creates a new mock of the
+// loginSourceFilesStore interface. All methods panic on invocation, unless
+// overwritten.
+func NewStrictMockLoginSourceFilesStore() *MockLoginSourceFilesStore {
+	return &MockLoginSourceFilesStore{
+		GetByIDFunc: &LoginSourceFilesStoreGetByIDFunc{
+			defaultHook: func(int64) (*LoginSource, error) {
+				panic("unexpected invocation of MockLoginSourceFilesStore.GetByID")
+			},
+		},
+		LenFunc: &LoginSourceFilesStoreLenFunc{
+			defaultHook: func() int {
+				panic("unexpected invocation of MockLoginSourceFilesStore.Len")
+			},
+		},
+		ListFunc: &LoginSourceFilesStoreListFunc{
+			defaultHook: func(ListLoginSourceOpts) []*LoginSource {
+				panic("unexpected invocation of MockLoginSourceFilesStore.List")
+			},
+		},
+		UpdateFunc: &LoginSourceFilesStoreUpdateFunc{
+			defaultHook: func(*LoginSource) {
+				panic("unexpected invocation of MockLoginSourceFilesStore.Update")
+			},
+		},
+	}
+}
+
+// surrogateMockLoginSourceFilesStore is a copy of the loginSourceFilesStore
+// interface (from the package gogs.io/gogs/internal/db). It is redefined
+// here as it is unexported in the source package.
+type surrogateMockLoginSourceFilesStore interface {
+	GetByID(int64) (*LoginSource, error)
+	Len() int
+	List(ListLoginSourceOpts) []*LoginSource
+	Update(*LoginSource)
+}
+
+// NewMockLoginSourceFilesStoreFrom creates a new mock of the
+// MockLoginSourceFilesStore interface. All methods delegate to the given
+// implementation, unless overwritten.
+func NewMockLoginSourceFilesStoreFrom(i surrogateMockLoginSourceFilesStore) *MockLoginSourceFilesStore {
+	return &MockLoginSourceFilesStore{
+		GetByIDFunc: &LoginSourceFilesStoreGetByIDFunc{
+			defaultHook: i.GetByID,
+		},
+		LenFunc: &LoginSourceFilesStoreLenFunc{
+			defaultHook: i.Len,
+		},
+		ListFunc: &LoginSourceFilesStoreListFunc{
+			defaultHook: i.List,
+		},
+		UpdateFunc: &LoginSourceFilesStoreUpdateFunc{
+			defaultHook: i.Update,
+		},
+	}
+}
+
+// LoginSourceFilesStoreGetByIDFunc describes the behavior when the GetByID
+// method of the parent MockLoginSourceFilesStore instance is invoked.
+type LoginSourceFilesStoreGetByIDFunc struct {
+	defaultHook func(int64) (*LoginSource, error)
+	hooks       []func(int64) (*LoginSource, error)
+	history     []LoginSourceFilesStoreGetByIDFuncCall
+	mutex       sync.Mutex
+}
+
+// GetByID delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourceFilesStore) GetByID(v0 int64) (*LoginSource, error) {
+	r0, r1 := m.GetByIDFunc.nextHook()(v0)
+	m.GetByIDFunc.appendCall(LoginSourceFilesStoreGetByIDFuncCall{v0, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetByID method of
+// the parent MockLoginSourceFilesStore instance is invoked and the hook
+// queue is empty.
+func (f *LoginSourceFilesStoreGetByIDFunc) SetDefaultHook(hook func(int64) (*LoginSource, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetByID method of the parent MockLoginSourceFilesStore instance invokes
+// the hook at the front of the queue and discards it. After the queue is
+// empty, the default hook function is invoked for any future action.
+func (f *LoginSourceFilesStoreGetByIDFunc) PushHook(hook func(int64) (*LoginSource, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourceFilesStoreGetByIDFunc) SetDefaultReturn(r0 *LoginSource, r1 error) {
+	f.SetDefaultHook(func(int64) (*LoginSource, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourceFilesStoreGetByIDFunc) PushReturn(r0 *LoginSource, r1 error) {
+	f.PushHook(func(int64) (*LoginSource, error) {
+		return r0, r1
+	})
+}
+
+func (f *LoginSourceFilesStoreGetByIDFunc) nextHook() func(int64) (*LoginSource, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourceFilesStoreGetByIDFunc) appendCall(r0 LoginSourceFilesStoreGetByIDFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourceFilesStoreGetByIDFuncCall
+// objects describing the invocations of this function.
+func (f *LoginSourceFilesStoreGetByIDFunc) History() []LoginSourceFilesStoreGetByIDFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourceFilesStoreGetByIDFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourceFilesStoreGetByIDFuncCall is an object that describes an
+// invocation of method GetByID on an instance of MockLoginSourceFilesStore.
+type LoginSourceFilesStoreGetByIDFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *LoginSource
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourceFilesStoreGetByIDFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourceFilesStoreGetByIDFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// LoginSourceFilesStoreLenFunc describes the behavior when the Len method
+// of the parent MockLoginSourceFilesStore instance is invoked.
+type LoginSourceFilesStoreLenFunc struct {
+	defaultHook func() int
+	hooks       []func() int
+	history     []LoginSourceFilesStoreLenFuncCall
+	mutex       sync.Mutex
+}
+
+// Len delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourceFilesStore) Len() int {
+	r0 := m.LenFunc.nextHook()()
+	m.LenFunc.appendCall(LoginSourceFilesStoreLenFuncCall{r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the Len method of the
+// parent MockLoginSourceFilesStore instance is invoked and the hook queue
+// is empty.
+func (f *LoginSourceFilesStoreLenFunc) SetDefaultHook(hook func() int) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Len method of the parent MockLoginSourceFilesStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *LoginSourceFilesStoreLenFunc) PushHook(hook func() int) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourceFilesStoreLenFunc) SetDefaultReturn(r0 int) {
+	f.SetDefaultHook(func() int {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourceFilesStoreLenFunc) PushReturn(r0 int) {
+	f.PushHook(func() int {
+		return r0
+	})
+}
+
+func (f *LoginSourceFilesStoreLenFunc) nextHook() func() int {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourceFilesStoreLenFunc) appendCall(r0 LoginSourceFilesStoreLenFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourceFilesStoreLenFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourceFilesStoreLenFunc) History() []LoginSourceFilesStoreLenFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourceFilesStoreLenFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourceFilesStoreLenFuncCall is an object that describes an
+// invocation of method Len on an instance of MockLoginSourceFilesStore.
+type LoginSourceFilesStoreLenFuncCall struct {
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 int
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourceFilesStoreLenFuncCall) Args() []interface{} {
+	return []interface{}{}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourceFilesStoreLenFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// LoginSourceFilesStoreListFunc describes the behavior when the List method
+// of the parent MockLoginSourceFilesStore instance is invoked.
+type LoginSourceFilesStoreListFunc struct {
+	defaultHook func(ListLoginSourceOpts) []*LoginSource
+	hooks       []func(ListLoginSourceOpts) []*LoginSource
+	history     []LoginSourceFilesStoreListFuncCall
+	mutex       sync.Mutex
+}
+
+// List delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourceFilesStore) List(v0 ListLoginSourceOpts) []*LoginSource {
+	r0 := m.ListFunc.nextHook()(v0)
+	m.ListFunc.appendCall(LoginSourceFilesStoreListFuncCall{v0, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the List method of the
+// parent MockLoginSourceFilesStore instance is invoked and the hook queue
+// is empty.
+func (f *LoginSourceFilesStoreListFunc) SetDefaultHook(hook func(ListLoginSourceOpts) []*LoginSource) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// List method of the parent MockLoginSourceFilesStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *LoginSourceFilesStoreListFunc) PushHook(hook func(ListLoginSourceOpts) []*LoginSource) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourceFilesStoreListFunc) SetDefaultReturn(r0 []*LoginSource) {
+	f.SetDefaultHook(func(ListLoginSourceOpts) []*LoginSource {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourceFilesStoreListFunc) PushReturn(r0 []*LoginSource) {
+	f.PushHook(func(ListLoginSourceOpts) []*LoginSource {
+		return r0
+	})
+}
+
+func (f *LoginSourceFilesStoreListFunc) nextHook() func(ListLoginSourceOpts) []*LoginSource {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourceFilesStoreListFunc) appendCall(r0 LoginSourceFilesStoreListFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourceFilesStoreListFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourceFilesStoreListFunc) History() []LoginSourceFilesStoreListFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourceFilesStoreListFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourceFilesStoreListFuncCall is an object that describes an
+// invocation of method List on an instance of MockLoginSourceFilesStore.
+type LoginSourceFilesStoreListFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 ListLoginSourceOpts
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 []*LoginSource
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourceFilesStoreListFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourceFilesStoreListFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// LoginSourceFilesStoreUpdateFunc describes the behavior when the Update
+// method of the parent MockLoginSourceFilesStore instance is invoked.
+type LoginSourceFilesStoreUpdateFunc struct {
+	defaultHook func(*LoginSource)
+	hooks       []func(*LoginSource)
+	history     []LoginSourceFilesStoreUpdateFuncCall
+	mutex       sync.Mutex
+}
+
+// Update delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockLoginSourceFilesStore) Update(v0 *LoginSource) {
+	m.UpdateFunc.nextHook()(v0)
+	m.UpdateFunc.appendCall(LoginSourceFilesStoreUpdateFuncCall{v0})
+	return
+}
+
+// SetDefaultHook sets function that is called when the Update method of the
+// parent MockLoginSourceFilesStore instance is invoked and the hook queue
+// is empty.
+func (f *LoginSourceFilesStoreUpdateFunc) SetDefaultHook(hook func(*LoginSource)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Update method of the parent MockLoginSourceFilesStore instance invokes
+// the hook at the front of the queue and discards it. After the queue is
+// empty, the default hook function is invoked for any future action.
+func (f *LoginSourceFilesStoreUpdateFunc) PushHook(hook func(*LoginSource)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LoginSourceFilesStoreUpdateFunc) SetDefaultReturn() {
+	f.SetDefaultHook(func(*LoginSource) {
+		return
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LoginSourceFilesStoreUpdateFunc) PushReturn() {
+	f.PushHook(func(*LoginSource) {
+		return
+	})
+}
+
+func (f *LoginSourceFilesStoreUpdateFunc) nextHook() func(*LoginSource) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LoginSourceFilesStoreUpdateFunc) appendCall(r0 LoginSourceFilesStoreUpdateFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LoginSourceFilesStoreUpdateFuncCall objects
+// describing the invocations of this function.
+func (f *LoginSourceFilesStoreUpdateFunc) History() []LoginSourceFilesStoreUpdateFuncCall {
+	f.mutex.Lock()
+	history := make([]LoginSourceFilesStoreUpdateFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LoginSourceFilesStoreUpdateFuncCall is an object that describes an
+// invocation of method Update on an instance of MockLoginSourceFilesStore.
+type LoginSourceFilesStoreUpdateFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 *LoginSource
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LoginSourceFilesStoreUpdateFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LoginSourceFilesStoreUpdateFuncCall) Results() []interface{} {
+	return []interface{}{}
+}
+
+// MockProvider is a mock implementation of the Provider interface (from the
+// package gogs.io/gogs/internal/auth) used for unit testing.
+type MockProvider struct {
+	// AuthenticateFunc is an instance of a mock function object controlling
+	// the behavior of the method Authenticate.
+	AuthenticateFunc *ProviderAuthenticateFunc
+	// ConfigFunc is an instance of a mock function object controlling the
+	// behavior of the method Config.
+	ConfigFunc *ProviderConfigFunc
+	// HasTLSFunc is an instance of a mock function object controlling the
+	// behavior of the method HasTLS.
+	HasTLSFunc *ProviderHasTLSFunc
+	// SkipTLSVerifyFunc is an instance of a mock function object
+	// controlling the behavior of the method SkipTLSVerify.
+	SkipTLSVerifyFunc *ProviderSkipTLSVerifyFunc
+	// UseTLSFunc is an instance of a mock function object controlling the
+	// behavior of the method UseTLS.
+	UseTLSFunc *ProviderUseTLSFunc
+}
+
+// NewMockProvider creates a new mock of the Provider interface. All methods
+// return zero values for all results, unless overwritten.
+func NewMockProvider() *MockProvider {
+	return &MockProvider{
+		AuthenticateFunc: &ProviderAuthenticateFunc{
+			defaultHook: func(string, string) (r0 *auth.ExternalAccount, r1 error) {
+				return
+			},
+		},
+		ConfigFunc: &ProviderConfigFunc{
+			defaultHook: func() (r0 interface{}) {
+				return
+			},
+		},
+		HasTLSFunc: &ProviderHasTLSFunc{
+			defaultHook: func() (r0 bool) {
+				return
+			},
+		},
+		SkipTLSVerifyFunc: &ProviderSkipTLSVerifyFunc{
+			defaultHook: func() (r0 bool) {
+				return
+			},
+		},
+		UseTLSFunc: &ProviderUseTLSFunc{
+			defaultHook: func() (r0 bool) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockProvider creates a new mock of the Provider interface. All
+// methods panic on invocation, unless overwritten.
+func NewStrictMockProvider() *MockProvider {
+	return &MockProvider{
+		AuthenticateFunc: &ProviderAuthenticateFunc{
+			defaultHook: func(string, string) (*auth.ExternalAccount, error) {
+				panic("unexpected invocation of MockProvider.Authenticate")
+			},
+		},
+		ConfigFunc: &ProviderConfigFunc{
+			defaultHook: func() interface{} {
+				panic("unexpected invocation of MockProvider.Config")
+			},
+		},
+		HasTLSFunc: &ProviderHasTLSFunc{
+			defaultHook: func() bool {
+				panic("unexpected invocation of MockProvider.HasTLS")
+			},
+		},
+		SkipTLSVerifyFunc: &ProviderSkipTLSVerifyFunc{
+			defaultHook: func() bool {
+				panic("unexpected invocation of MockProvider.SkipTLSVerify")
+			},
+		},
+		UseTLSFunc: &ProviderUseTLSFunc{
+			defaultHook: func() bool {
+				panic("unexpected invocation of MockProvider.UseTLS")
+			},
+		},
+	}
+}
+
+// NewMockProviderFrom creates a new mock of the MockProvider interface. All
+// methods delegate to the given implementation, unless overwritten.
+func NewMockProviderFrom(i auth.Provider) *MockProvider {
+	return &MockProvider{
+		AuthenticateFunc: &ProviderAuthenticateFunc{
+			defaultHook: i.Authenticate,
+		},
+		ConfigFunc: &ProviderConfigFunc{
+			defaultHook: i.Config,
+		},
+		HasTLSFunc: &ProviderHasTLSFunc{
+			defaultHook: i.HasTLS,
+		},
+		SkipTLSVerifyFunc: &ProviderSkipTLSVerifyFunc{
+			defaultHook: i.SkipTLSVerify,
+		},
+		UseTLSFunc: &ProviderUseTLSFunc{
+			defaultHook: i.UseTLS,
+		},
+	}
+}
+
+// ProviderAuthenticateFunc describes the behavior when the Authenticate
+// method of the parent MockProvider instance is invoked.
+type ProviderAuthenticateFunc struct {
+	defaultHook func(string, string) (*auth.ExternalAccount, error)
+	hooks       []func(string, string) (*auth.ExternalAccount, error)
+	history     []ProviderAuthenticateFuncCall
+	mutex       sync.Mutex
+}
+
+// Authenticate delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockProvider) Authenticate(v0 string, v1 string) (*auth.ExternalAccount, error) {
+	r0, r1 := m.AuthenticateFunc.nextHook()(v0, v1)
+	m.AuthenticateFunc.appendCall(ProviderAuthenticateFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the Authenticate method
+// of the parent MockProvider instance is invoked and the hook queue is
+// empty.
+func (f *ProviderAuthenticateFunc) SetDefaultHook(hook func(string, string) (*auth.ExternalAccount, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Authenticate method of the parent MockProvider instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *ProviderAuthenticateFunc) PushHook(hook func(string, string) (*auth.ExternalAccount, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *ProviderAuthenticateFunc) SetDefaultReturn(r0 *auth.ExternalAccount, r1 error) {
+	f.SetDefaultHook(func(string, string) (*auth.ExternalAccount, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *ProviderAuthenticateFunc) PushReturn(r0 *auth.ExternalAccount, r1 error) {
+	f.PushHook(func(string, string) (*auth.ExternalAccount, error) {
+		return r0, r1
+	})
+}
+
+func (f *ProviderAuthenticateFunc) nextHook() func(string, string) (*auth.ExternalAccount, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *ProviderAuthenticateFunc) appendCall(r0 ProviderAuthenticateFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of ProviderAuthenticateFuncCall objects
+// describing the invocations of this function.
+func (f *ProviderAuthenticateFunc) History() []ProviderAuthenticateFuncCall {
+	f.mutex.Lock()
+	history := make([]ProviderAuthenticateFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// ProviderAuthenticateFuncCall is an object that describes an invocation of
+// method Authenticate on an instance of MockProvider.
+type ProviderAuthenticateFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 string
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 string
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *auth.ExternalAccount
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c ProviderAuthenticateFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c ProviderAuthenticateFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// ProviderConfigFunc describes the behavior when the Config method of the
+// parent MockProvider instance is invoked.
+type ProviderConfigFunc struct {
+	defaultHook func() interface{}
+	hooks       []func() interface{}
+	history     []ProviderConfigFuncCall
+	mutex       sync.Mutex
+}
+
+// Config delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockProvider) Config() interface{} {
+	r0 := m.ConfigFunc.nextHook()()
+	m.ConfigFunc.appendCall(ProviderConfigFuncCall{r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the Config method of the
+// parent MockProvider instance is invoked and the hook queue is empty.
+func (f *ProviderConfigFunc) SetDefaultHook(hook func() interface{}) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Config method of the parent MockProvider instance invokes the hook at the
+// front of the queue and discards it. After the queue is empty, the default
+// hook function is invoked for any future action.
+func (f *ProviderConfigFunc) PushHook(hook func() interface{}) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *ProviderConfigFunc) SetDefaultReturn(r0 interface{}) {
+	f.SetDefaultHook(func() interface{} {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *ProviderConfigFunc) PushReturn(r0 interface{}) {
+	f.PushHook(func() interface{} {
+		return r0
+	})
+}
+
+func (f *ProviderConfigFunc) nextHook() func() interface{} {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *ProviderConfigFunc) appendCall(r0 ProviderConfigFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of ProviderConfigFuncCall objects describing
+// the invocations of this function.
+func (f *ProviderConfigFunc) History() []ProviderConfigFuncCall {
+	f.mutex.Lock()
+	history := make([]ProviderConfigFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// ProviderConfigFuncCall is an object that describes an invocation of
+// method Config on an instance of MockProvider.
+type ProviderConfigFuncCall struct {
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 interface{}
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c ProviderConfigFuncCall) Args() []interface{} {
+	return []interface{}{}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c ProviderConfigFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// ProviderHasTLSFunc describes the behavior when the HasTLS method of the
+// parent MockProvider instance is invoked.
+type ProviderHasTLSFunc struct {
+	defaultHook func() bool
+	hooks       []func() bool
+	history     []ProviderHasTLSFuncCall
+	mutex       sync.Mutex
+}
+
+// HasTLS delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockProvider) HasTLS() bool {
+	r0 := m.HasTLSFunc.nextHook()()
+	m.HasTLSFunc.appendCall(ProviderHasTLSFuncCall{r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the HasTLS method of the
+// parent MockProvider instance is invoked and the hook queue is empty.
+func (f *ProviderHasTLSFunc) SetDefaultHook(hook func() bool) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// HasTLS method of the parent MockProvider instance invokes the hook at the
+// front of the queue and discards it. After the queue is empty, the default
+// hook function is invoked for any future action.
+func (f *ProviderHasTLSFunc) PushHook(hook func() bool) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *ProviderHasTLSFunc) SetDefaultReturn(r0 bool) {
+	f.SetDefaultHook(func() bool {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *ProviderHasTLSFunc) PushReturn(r0 bool) {
+	f.PushHook(func() bool {
+		return r0
+	})
+}
+
+func (f *ProviderHasTLSFunc) nextHook() func() bool {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *ProviderHasTLSFunc) appendCall(r0 ProviderHasTLSFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of ProviderHasTLSFuncCall objects describing
+// the invocations of this function.
+func (f *ProviderHasTLSFunc) History() []ProviderHasTLSFuncCall {
+	f.mutex.Lock()
+	history := make([]ProviderHasTLSFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// ProviderHasTLSFuncCall is an object that describes an invocation of
+// method HasTLS on an instance of MockProvider.
+type ProviderHasTLSFuncCall struct {
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 bool
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c ProviderHasTLSFuncCall) Args() []interface{} {
+	return []interface{}{}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c ProviderHasTLSFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// ProviderSkipTLSVerifyFunc describes the behavior when the SkipTLSVerify
+// method of the parent MockProvider instance is invoked.
+type ProviderSkipTLSVerifyFunc struct {
+	defaultHook func() bool
+	hooks       []func() bool
+	history     []ProviderSkipTLSVerifyFuncCall
+	mutex       sync.Mutex
+}
+
+// SkipTLSVerify delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockProvider) SkipTLSVerify() bool {
+	r0 := m.SkipTLSVerifyFunc.nextHook()()
+	m.SkipTLSVerifyFunc.appendCall(ProviderSkipTLSVerifyFuncCall{r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the SkipTLSVerify method
+// of the parent MockProvider instance is invoked and the hook queue is
+// empty.
+func (f *ProviderSkipTLSVerifyFunc) SetDefaultHook(hook func() bool) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// SkipTLSVerify method of the parent MockProvider instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *ProviderSkipTLSVerifyFunc) PushHook(hook func() bool) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *ProviderSkipTLSVerifyFunc) SetDefaultReturn(r0 bool) {
+	f.SetDefaultHook(func() bool {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *ProviderSkipTLSVerifyFunc) PushReturn(r0 bool) {
+	f.PushHook(func() bool {
+		return r0
+	})
+}
+
+func (f *ProviderSkipTLSVerifyFunc) nextHook() func() bool {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *ProviderSkipTLSVerifyFunc) appendCall(r0 ProviderSkipTLSVerifyFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of ProviderSkipTLSVerifyFuncCall objects
+// describing the invocations of this function.
+func (f *ProviderSkipTLSVerifyFunc) History() []ProviderSkipTLSVerifyFuncCall {
+	f.mutex.Lock()
+	history := make([]ProviderSkipTLSVerifyFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// ProviderSkipTLSVerifyFuncCall is an object that describes an invocation
+// of method SkipTLSVerify on an instance of MockProvider.
+type ProviderSkipTLSVerifyFuncCall struct {
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 bool
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c ProviderSkipTLSVerifyFuncCall) Args() []interface{} {
+	return []interface{}{}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c ProviderSkipTLSVerifyFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// ProviderUseTLSFunc describes the behavior when the UseTLS method of the
+// parent MockProvider instance is invoked.
+type ProviderUseTLSFunc struct {
+	defaultHook func() bool
+	hooks       []func() bool
+	history     []ProviderUseTLSFuncCall
+	mutex       sync.Mutex
+}
+
+// UseTLS delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockProvider) UseTLS() bool {
+	r0 := m.UseTLSFunc.nextHook()()
+	m.UseTLSFunc.appendCall(ProviderUseTLSFuncCall{r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the UseTLS method of the
+// parent MockProvider instance is invoked and the hook queue is empty.
+func (f *ProviderUseTLSFunc) SetDefaultHook(hook func() bool) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// UseTLS method of the parent MockProvider instance invokes the hook at the
+// front of the queue and discards it. After the queue is empty, the default
+// hook function is invoked for any future action.
+func (f *ProviderUseTLSFunc) PushHook(hook func() bool) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *ProviderUseTLSFunc) SetDefaultReturn(r0 bool) {
+	f.SetDefaultHook(func() bool {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *ProviderUseTLSFunc) PushReturn(r0 bool) {
+	f.PushHook(func() bool {
+		return r0
+	})
+}
+
+func (f *ProviderUseTLSFunc) nextHook() func() bool {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *ProviderUseTLSFunc) appendCall(r0 ProviderUseTLSFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of ProviderUseTLSFuncCall objects describing
+// the invocations of this function.
+func (f *ProviderUseTLSFunc) History() []ProviderUseTLSFuncCall {
+	f.mutex.Lock()
+	history := make([]ProviderUseTLSFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// ProviderUseTLSFuncCall is an object that describes an invocation of
+// method UseTLS on an instance of MockProvider.
+type ProviderUseTLSFuncCall struct {
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 bool
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c ProviderUseTLSFuncCall) Args() []interface{} {
+	return []interface{}{}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c ProviderUseTLSFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}

+ 62 - 2
internal/db/users_test.go

@@ -6,6 +6,7 @@ package db
 
 import (
 	"context"
+	"fmt"
 	"testing"
 	"time"
 
@@ -51,8 +52,6 @@ func TestUsers(t *testing.T) {
 	}
 }
 
-// TODO: Only local account is tested, tests for external account will be added
-//  along with addressing https://github.com/gogs/gogs/issues/6115.
 func usersAuthenticate(t *testing.T, db *users) {
 	ctx := context.Background()
 
@@ -87,6 +86,67 @@ func usersAuthenticate(t *testing.T, db *users) {
 		require.NoError(t, err)
 		assert.Equal(t, alice.Name, user.Name)
 	})
+
+	t.Run("login source mismatch", func(t *testing.T) {
+		_, err := db.Authenticate(ctx, alice.Email, password, 1)
+		gotErr := fmt.Sprintf("%v", err)
+		wantErr := ErrLoginSourceMismatch{args: map[string]interface{}{"actual": 0, "expect": 1}}.Error()
+		assert.Equal(t, wantErr, gotErr)
+	})
+
+	t.Run("via login source", func(t *testing.T) {
+		mockLoginSources := NewMockLoginSourcesStore()
+		mockLoginSources.GetByIDFunc.SetDefaultHook(func(ctx context.Context, id int64) (*LoginSource, error) {
+			mockProvider := NewMockProvider()
+			mockProvider.AuthenticateFunc.SetDefaultReturn(&auth.ExternalAccount{}, nil)
+			s := &LoginSource{
+				IsActived: true,
+				Provider:  mockProvider,
+			}
+			return s, nil
+		})
+		setMockLoginSourcesStore(t, mockLoginSources)
+
+		bob, err := db.Create(ctx, "bob", "[email protected]",
+			CreateUserOpts{
+				Password:    password,
+				LoginSource: 1,
+			},
+		)
+		require.NoError(t, err)
+
+		user, err := db.Authenticate(ctx, bob.Email, password, 1)
+		require.NoError(t, err)
+		assert.Equal(t, bob.Name, user.Name)
+	})
+
+	t.Run("new user via login source", func(t *testing.T) {
+		mockLoginSources := NewMockLoginSourcesStore()
+		mockLoginSources.GetByIDFunc.SetDefaultHook(func(ctx context.Context, id int64) (*LoginSource, error) {
+			mockProvider := NewMockProvider()
+			mockProvider.AuthenticateFunc.SetDefaultReturn(
+				&auth.ExternalAccount{
+					Name:  "cindy",
+					Email: "[email protected]",
+				},
+				nil,
+			)
+			s := &LoginSource{
+				IsActived: true,
+				Provider:  mockProvider,
+			}
+			return s, nil
+		})
+		setMockLoginSourcesStore(t, mockLoginSources)
+
+		user, err := db.Authenticate(ctx, "cindy", password, 1)
+		require.NoError(t, err)
+		assert.Equal(t, "cindy", user.Name)
+
+		user, err = db.GetByUsername(ctx, "cindy")
+		require.NoError(t, err)
+		assert.Equal(t, "[email protected]", user.Email)
+	})
 }
 
 func usersCreate(t *testing.T, db *users) {

+ 8 - 8
internal/route/lfs/basic_test.go

@@ -69,7 +69,7 @@ func Test_basicHandler_serveDownload(t *testing.T) {
 		{
 			name: "object does not exist",
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectByOIDFunc.SetDefaultReturn(nil, db.ErrLFSObjectNotExist{})
 				return mock
 			},
@@ -82,7 +82,7 @@ func Test_basicHandler_serveDownload(t *testing.T) {
 		{
 			name: "storage not found",
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectByOIDFunc.SetDefaultReturn(&db.LFSObject{Storage: "bad_storage"}, nil)
 				return mock
 			},
@@ -97,7 +97,7 @@ func Test_basicHandler_serveDownload(t *testing.T) {
 			name:    "object exists",
 			content: "Hello world!",
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectByOIDFunc.SetDefaultReturn(
 					&db.LFSObject{
 						Size:    12,
@@ -168,7 +168,7 @@ func Test_basicHandler_serveUpload(t *testing.T) {
 		{
 			name: "object already exists",
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectByOIDFunc.SetDefaultReturn(&db.LFSObject{}, nil)
 				return mock
 			},
@@ -177,7 +177,7 @@ func Test_basicHandler_serveUpload(t *testing.T) {
 		{
 			name: "new object",
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectByOIDFunc.SetDefaultReturn(nil, db.ErrLFSObjectNotExist{})
 				return mock
 			},
@@ -233,7 +233,7 @@ func Test_basicHandler_serveVerify(t *testing.T) {
 			name: "object does not exist",
 			body: `{"oid":"ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f"}`,
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectByOIDFunc.SetDefaultReturn(nil, db.ErrLFSObjectNotExist{})
 				return mock
 			},
@@ -244,7 +244,7 @@ func Test_basicHandler_serveVerify(t *testing.T) {
 			name: "object size mismatch",
 			body: `{"oid":"ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f"}`,
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectByOIDFunc.SetDefaultReturn(&db.LFSObject{Size: 12}, nil)
 				return mock
 			},
@@ -256,7 +256,7 @@ func Test_basicHandler_serveVerify(t *testing.T) {
 			name: "object exists",
 			body: `{"oid":"ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f", "size":12}`,
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectByOIDFunc.SetDefaultReturn(&db.LFSObject{Size: 12}, nil)
 				return mock
 			},

+ 1 - 1
internal/route/lfs/batch_test.go

@@ -83,7 +83,7 @@ func Test_serveBatch(t *testing.T) {
 	{"oid": "5cac0a318669fadfee734fb340a5f5b70b428ac57a9f4b109cb6e150b2ba7e57", "size": 456}
 ]}`,
 			mockLFSStore: func() db.LFSStore {
-				mock := db.NewMockLFSStore()
+				mock := NewMockLFSStore()
 				mock.GetObjectsByOIDsFunc.SetDefaultReturn(
 					[]*db.LFSObject{
 						{

+ 2702 - 0
internal/route/lfs/mocks_test.go

@@ -0,0 +1,2702 @@
+// Code generated by go-mockgen 1.3.3; DO NOT EDIT.
+//
+// This file was generated by running `go-mockgen` at the root of this repository.
+// To add additional mocks to this or another package, add a new entry to the
+// mockgen.yaml file in the root of this repository.
+
+package lfs
+
+import (
+	"context"
+	"sync"
+
+	db "gogs.io/gogs/internal/db"
+	lfsutil "gogs.io/gogs/internal/lfsutil"
+)
+
+// MockAccessTokensStore is a mock implementation of the AccessTokensStore
+// interface (from the package gogs.io/gogs/internal/db) used for unit
+// testing.
+type MockAccessTokensStore struct {
+	// CreateFunc is an instance of a mock function object controlling the
+	// behavior of the method Create.
+	CreateFunc *AccessTokensStoreCreateFunc
+	// DeleteByIDFunc is an instance of a mock function object controlling
+	// the behavior of the method DeleteByID.
+	DeleteByIDFunc *AccessTokensStoreDeleteByIDFunc
+	// GetBySHA1Func is an instance of a mock function object controlling
+	// the behavior of the method GetBySHA1.
+	GetBySHA1Func *AccessTokensStoreGetBySHA1Func
+	// ListFunc is an instance of a mock function object controlling the
+	// behavior of the method List.
+	ListFunc *AccessTokensStoreListFunc
+	// TouchFunc is an instance of a mock function object controlling the
+	// behavior of the method Touch.
+	TouchFunc *AccessTokensStoreTouchFunc
+}
+
+// NewMockAccessTokensStore creates a new mock of the AccessTokensStore
+// interface. All methods return zero values for all results, unless
+// overwritten.
+func NewMockAccessTokensStore() *MockAccessTokensStore {
+	return &MockAccessTokensStore{
+		CreateFunc: &AccessTokensStoreCreateFunc{
+			defaultHook: func(context.Context, int64, string) (r0 *db.AccessToken, r1 error) {
+				return
+			},
+		},
+		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
+			defaultHook: func(context.Context, int64, int64) (r0 error) {
+				return
+			},
+		},
+		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
+			defaultHook: func(context.Context, string) (r0 *db.AccessToken, r1 error) {
+				return
+			},
+		},
+		ListFunc: &AccessTokensStoreListFunc{
+			defaultHook: func(context.Context, int64) (r0 []*db.AccessToken, r1 error) {
+				return
+			},
+		},
+		TouchFunc: &AccessTokensStoreTouchFunc{
+			defaultHook: func(context.Context, int64) (r0 error) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockAccessTokensStore creates a new mock of the
+// AccessTokensStore interface. All methods panic on invocation, unless
+// overwritten.
+func NewStrictMockAccessTokensStore() *MockAccessTokensStore {
+	return &MockAccessTokensStore{
+		CreateFunc: &AccessTokensStoreCreateFunc{
+			defaultHook: func(context.Context, int64, string) (*db.AccessToken, error) {
+				panic("unexpected invocation of MockAccessTokensStore.Create")
+			},
+		},
+		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
+			defaultHook: func(context.Context, int64, int64) error {
+				panic("unexpected invocation of MockAccessTokensStore.DeleteByID")
+			},
+		},
+		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
+			defaultHook: func(context.Context, string) (*db.AccessToken, error) {
+				panic("unexpected invocation of MockAccessTokensStore.GetBySHA1")
+			},
+		},
+		ListFunc: &AccessTokensStoreListFunc{
+			defaultHook: func(context.Context, int64) ([]*db.AccessToken, error) {
+				panic("unexpected invocation of MockAccessTokensStore.List")
+			},
+		},
+		TouchFunc: &AccessTokensStoreTouchFunc{
+			defaultHook: func(context.Context, int64) error {
+				panic("unexpected invocation of MockAccessTokensStore.Touch")
+			},
+		},
+	}
+}
+
+// NewMockAccessTokensStoreFrom creates a new mock of the
+// MockAccessTokensStore interface. All methods delegate to the given
+// implementation, unless overwritten.
+func NewMockAccessTokensStoreFrom(i db.AccessTokensStore) *MockAccessTokensStore {
+	return &MockAccessTokensStore{
+		CreateFunc: &AccessTokensStoreCreateFunc{
+			defaultHook: i.Create,
+		},
+		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
+			defaultHook: i.DeleteByID,
+		},
+		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
+			defaultHook: i.GetBySHA1,
+		},
+		ListFunc: &AccessTokensStoreListFunc{
+			defaultHook: i.List,
+		},
+		TouchFunc: &AccessTokensStoreTouchFunc{
+			defaultHook: i.Touch,
+		},
+	}
+}
+
+// AccessTokensStoreCreateFunc describes the behavior when the Create method
+// of the parent MockAccessTokensStore instance is invoked.
+type AccessTokensStoreCreateFunc struct {
+	defaultHook func(context.Context, int64, string) (*db.AccessToken, error)
+	hooks       []func(context.Context, int64, string) (*db.AccessToken, error)
+	history     []AccessTokensStoreCreateFuncCall
+	mutex       sync.Mutex
+}
+
+// Create delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockAccessTokensStore) Create(v0 context.Context, v1 int64, v2 string) (*db.AccessToken, error) {
+	r0, r1 := m.CreateFunc.nextHook()(v0, v1, v2)
+	m.CreateFunc.appendCall(AccessTokensStoreCreateFuncCall{v0, v1, v2, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the Create method of the
+// parent MockAccessTokensStore instance is invoked and the hook queue is
+// empty.
+func (f *AccessTokensStoreCreateFunc) SetDefaultHook(hook func(context.Context, int64, string) (*db.AccessToken, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Create method of the parent MockAccessTokensStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *AccessTokensStoreCreateFunc) PushHook(hook func(context.Context, int64, string) (*db.AccessToken, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *AccessTokensStoreCreateFunc) SetDefaultReturn(r0 *db.AccessToken, r1 error) {
+	f.SetDefaultHook(func(context.Context, int64, string) (*db.AccessToken, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *AccessTokensStoreCreateFunc) PushReturn(r0 *db.AccessToken, r1 error) {
+	f.PushHook(func(context.Context, int64, string) (*db.AccessToken, error) {
+		return r0, r1
+	})
+}
+
+func (f *AccessTokensStoreCreateFunc) nextHook() func(context.Context, int64, string) (*db.AccessToken, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *AccessTokensStoreCreateFunc) appendCall(r0 AccessTokensStoreCreateFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of AccessTokensStoreCreateFuncCall objects
+// describing the invocations of this function.
+func (f *AccessTokensStoreCreateFunc) History() []AccessTokensStoreCreateFuncCall {
+	f.mutex.Lock()
+	history := make([]AccessTokensStoreCreateFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// AccessTokensStoreCreateFuncCall is an object that describes an invocation
+// of method Create on an instance of MockAccessTokensStore.
+type AccessTokensStoreCreateFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 string
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.AccessToken
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c AccessTokensStoreCreateFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c AccessTokensStoreCreateFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// AccessTokensStoreDeleteByIDFunc describes the behavior when the
+// DeleteByID method of the parent MockAccessTokensStore instance is
+// invoked.
+type AccessTokensStoreDeleteByIDFunc struct {
+	defaultHook func(context.Context, int64, int64) error
+	hooks       []func(context.Context, int64, int64) error
+	history     []AccessTokensStoreDeleteByIDFuncCall
+	mutex       sync.Mutex
+}
+
+// DeleteByID delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockAccessTokensStore) DeleteByID(v0 context.Context, v1 int64, v2 int64) error {
+	r0 := m.DeleteByIDFunc.nextHook()(v0, v1, v2)
+	m.DeleteByIDFunc.appendCall(AccessTokensStoreDeleteByIDFuncCall{v0, v1, v2, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the DeleteByID method of
+// the parent MockAccessTokensStore instance is invoked and the hook queue
+// is empty.
+func (f *AccessTokensStoreDeleteByIDFunc) SetDefaultHook(hook func(context.Context, int64, int64) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// DeleteByID method of the parent MockAccessTokensStore instance invokes
+// the hook at the front of the queue and discards it. After the queue is
+// empty, the default hook function is invoked for any future action.
+func (f *AccessTokensStoreDeleteByIDFunc) PushHook(hook func(context.Context, int64, int64) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *AccessTokensStoreDeleteByIDFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(context.Context, int64, int64) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *AccessTokensStoreDeleteByIDFunc) PushReturn(r0 error) {
+	f.PushHook(func(context.Context, int64, int64) error {
+		return r0
+	})
+}
+
+func (f *AccessTokensStoreDeleteByIDFunc) nextHook() func(context.Context, int64, int64) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *AccessTokensStoreDeleteByIDFunc) appendCall(r0 AccessTokensStoreDeleteByIDFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of AccessTokensStoreDeleteByIDFuncCall objects
+// describing the invocations of this function.
+func (f *AccessTokensStoreDeleteByIDFunc) History() []AccessTokensStoreDeleteByIDFuncCall {
+	f.mutex.Lock()
+	history := make([]AccessTokensStoreDeleteByIDFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// AccessTokensStoreDeleteByIDFuncCall is an object that describes an
+// invocation of method DeleteByID on an instance of MockAccessTokensStore.
+type AccessTokensStoreDeleteByIDFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c AccessTokensStoreDeleteByIDFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c AccessTokensStoreDeleteByIDFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// AccessTokensStoreGetBySHA1Func describes the behavior when the GetBySHA1
+// method of the parent MockAccessTokensStore instance is invoked.
+type AccessTokensStoreGetBySHA1Func struct {
+	defaultHook func(context.Context, string) (*db.AccessToken, error)
+	hooks       []func(context.Context, string) (*db.AccessToken, error)
+	history     []AccessTokensStoreGetBySHA1FuncCall
+	mutex       sync.Mutex
+}
+
+// GetBySHA1 delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockAccessTokensStore) GetBySHA1(v0 context.Context, v1 string) (*db.AccessToken, error) {
+	r0, r1 := m.GetBySHA1Func.nextHook()(v0, v1)
+	m.GetBySHA1Func.appendCall(AccessTokensStoreGetBySHA1FuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetBySHA1 method of
+// the parent MockAccessTokensStore instance is invoked and the hook queue
+// is empty.
+func (f *AccessTokensStoreGetBySHA1Func) SetDefaultHook(hook func(context.Context, string) (*db.AccessToken, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetBySHA1 method of the parent MockAccessTokensStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *AccessTokensStoreGetBySHA1Func) PushHook(hook func(context.Context, string) (*db.AccessToken, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *AccessTokensStoreGetBySHA1Func) SetDefaultReturn(r0 *db.AccessToken, r1 error) {
+	f.SetDefaultHook(func(context.Context, string) (*db.AccessToken, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *AccessTokensStoreGetBySHA1Func) PushReturn(r0 *db.AccessToken, r1 error) {
+	f.PushHook(func(context.Context, string) (*db.AccessToken, error) {
+		return r0, r1
+	})
+}
+
+func (f *AccessTokensStoreGetBySHA1Func) nextHook() func(context.Context, string) (*db.AccessToken, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *AccessTokensStoreGetBySHA1Func) appendCall(r0 AccessTokensStoreGetBySHA1FuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of AccessTokensStoreGetBySHA1FuncCall objects
+// describing the invocations of this function.
+func (f *AccessTokensStoreGetBySHA1Func) History() []AccessTokensStoreGetBySHA1FuncCall {
+	f.mutex.Lock()
+	history := make([]AccessTokensStoreGetBySHA1FuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// AccessTokensStoreGetBySHA1FuncCall is an object that describes an
+// invocation of method GetBySHA1 on an instance of MockAccessTokensStore.
+type AccessTokensStoreGetBySHA1FuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 string
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.AccessToken
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c AccessTokensStoreGetBySHA1FuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c AccessTokensStoreGetBySHA1FuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// AccessTokensStoreListFunc describes the behavior when the List method of
+// the parent MockAccessTokensStore instance is invoked.
+type AccessTokensStoreListFunc struct {
+	defaultHook func(context.Context, int64) ([]*db.AccessToken, error)
+	hooks       []func(context.Context, int64) ([]*db.AccessToken, error)
+	history     []AccessTokensStoreListFuncCall
+	mutex       sync.Mutex
+}
+
+// List delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockAccessTokensStore) List(v0 context.Context, v1 int64) ([]*db.AccessToken, error) {
+	r0, r1 := m.ListFunc.nextHook()(v0, v1)
+	m.ListFunc.appendCall(AccessTokensStoreListFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the List method of the
+// parent MockAccessTokensStore instance is invoked and the hook queue is
+// empty.
+func (f *AccessTokensStoreListFunc) SetDefaultHook(hook func(context.Context, int64) ([]*db.AccessToken, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// List method of the parent MockAccessTokensStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *AccessTokensStoreListFunc) PushHook(hook func(context.Context, int64) ([]*db.AccessToken, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *AccessTokensStoreListFunc) SetDefaultReturn(r0 []*db.AccessToken, r1 error) {
+	f.SetDefaultHook(func(context.Context, int64) ([]*db.AccessToken, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *AccessTokensStoreListFunc) PushReturn(r0 []*db.AccessToken, r1 error) {
+	f.PushHook(func(context.Context, int64) ([]*db.AccessToken, error) {
+		return r0, r1
+	})
+}
+
+func (f *AccessTokensStoreListFunc) nextHook() func(context.Context, int64) ([]*db.AccessToken, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *AccessTokensStoreListFunc) appendCall(r0 AccessTokensStoreListFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of AccessTokensStoreListFuncCall objects
+// describing the invocations of this function.
+func (f *AccessTokensStoreListFunc) History() []AccessTokensStoreListFuncCall {
+	f.mutex.Lock()
+	history := make([]AccessTokensStoreListFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// AccessTokensStoreListFuncCall is an object that describes an invocation
+// of method List on an instance of MockAccessTokensStore.
+type AccessTokensStoreListFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 []*db.AccessToken
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c AccessTokensStoreListFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c AccessTokensStoreListFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// AccessTokensStoreTouchFunc describes the behavior when the Touch method
+// of the parent MockAccessTokensStore instance is invoked.
+type AccessTokensStoreTouchFunc struct {
+	defaultHook func(context.Context, int64) error
+	hooks       []func(context.Context, int64) error
+	history     []AccessTokensStoreTouchFuncCall
+	mutex       sync.Mutex
+}
+
+// Touch delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockAccessTokensStore) Touch(v0 context.Context, v1 int64) error {
+	r0 := m.TouchFunc.nextHook()(v0, v1)
+	m.TouchFunc.appendCall(AccessTokensStoreTouchFuncCall{v0, v1, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the Touch method of the
+// parent MockAccessTokensStore instance is invoked and the hook queue is
+// empty.
+func (f *AccessTokensStoreTouchFunc) SetDefaultHook(hook func(context.Context, int64) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Touch method of the parent MockAccessTokensStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *AccessTokensStoreTouchFunc) PushHook(hook func(context.Context, int64) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *AccessTokensStoreTouchFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(context.Context, int64) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *AccessTokensStoreTouchFunc) PushReturn(r0 error) {
+	f.PushHook(func(context.Context, int64) error {
+		return r0
+	})
+}
+
+func (f *AccessTokensStoreTouchFunc) nextHook() func(context.Context, int64) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *AccessTokensStoreTouchFunc) appendCall(r0 AccessTokensStoreTouchFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of AccessTokensStoreTouchFuncCall objects
+// describing the invocations of this function.
+func (f *AccessTokensStoreTouchFunc) History() []AccessTokensStoreTouchFuncCall {
+	f.mutex.Lock()
+	history := make([]AccessTokensStoreTouchFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// AccessTokensStoreTouchFuncCall is an object that describes an invocation
+// of method Touch on an instance of MockAccessTokensStore.
+type AccessTokensStoreTouchFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c AccessTokensStoreTouchFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c AccessTokensStoreTouchFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// MockLFSStore is a mock implementation of the LFSStore interface (from the
+// package gogs.io/gogs/internal/db) used for unit testing.
+type MockLFSStore struct {
+	// CreateObjectFunc is an instance of a mock function object controlling
+	// the behavior of the method CreateObject.
+	CreateObjectFunc *LFSStoreCreateObjectFunc
+	// GetObjectByOIDFunc is an instance of a mock function object
+	// controlling the behavior of the method GetObjectByOID.
+	GetObjectByOIDFunc *LFSStoreGetObjectByOIDFunc
+	// GetObjectsByOIDsFunc is an instance of a mock function object
+	// controlling the behavior of the method GetObjectsByOIDs.
+	GetObjectsByOIDsFunc *LFSStoreGetObjectsByOIDsFunc
+}
+
+// NewMockLFSStore creates a new mock of the LFSStore interface. All methods
+// return zero values for all results, unless overwritten.
+func NewMockLFSStore() *MockLFSStore {
+	return &MockLFSStore{
+		CreateObjectFunc: &LFSStoreCreateObjectFunc{
+			defaultHook: func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) (r0 error) {
+				return
+			},
+		},
+		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
+			defaultHook: func(context.Context, int64, lfsutil.OID) (r0 *db.LFSObject, r1 error) {
+				return
+			},
+		},
+		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
+			defaultHook: func(context.Context, int64, ...lfsutil.OID) (r0 []*db.LFSObject, r1 error) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockLFSStore creates a new mock of the LFSStore interface. All
+// methods panic on invocation, unless overwritten.
+func NewStrictMockLFSStore() *MockLFSStore {
+	return &MockLFSStore{
+		CreateObjectFunc: &LFSStoreCreateObjectFunc{
+			defaultHook: func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
+				panic("unexpected invocation of MockLFSStore.CreateObject")
+			},
+		},
+		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
+			defaultHook: func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error) {
+				panic("unexpected invocation of MockLFSStore.GetObjectByOID")
+			},
+		},
+		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
+			defaultHook: func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error) {
+				panic("unexpected invocation of MockLFSStore.GetObjectsByOIDs")
+			},
+		},
+	}
+}
+
+// NewMockLFSStoreFrom creates a new mock of the MockLFSStore interface. All
+// methods delegate to the given implementation, unless overwritten.
+func NewMockLFSStoreFrom(i db.LFSStore) *MockLFSStore {
+	return &MockLFSStore{
+		CreateObjectFunc: &LFSStoreCreateObjectFunc{
+			defaultHook: i.CreateObject,
+		},
+		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
+			defaultHook: i.GetObjectByOID,
+		},
+		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
+			defaultHook: i.GetObjectsByOIDs,
+		},
+	}
+}
+
+// LFSStoreCreateObjectFunc describes the behavior when the CreateObject
+// method of the parent MockLFSStore instance is invoked.
+type LFSStoreCreateObjectFunc struct {
+	defaultHook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error
+	hooks       []func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error
+	history     []LFSStoreCreateObjectFuncCall
+	mutex       sync.Mutex
+}
+
+// CreateObject delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockLFSStore) CreateObject(v0 context.Context, v1 int64, v2 lfsutil.OID, v3 int64, v4 lfsutil.Storage) error {
+	r0 := m.CreateObjectFunc.nextHook()(v0, v1, v2, v3, v4)
+	m.CreateObjectFunc.appendCall(LFSStoreCreateObjectFuncCall{v0, v1, v2, v3, v4, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the CreateObject method
+// of the parent MockLFSStore instance is invoked and the hook queue is
+// empty.
+func (f *LFSStoreCreateObjectFunc) SetDefaultHook(hook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// CreateObject method of the parent MockLFSStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *LFSStoreCreateObjectFunc) PushHook(hook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LFSStoreCreateObjectFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LFSStoreCreateObjectFunc) PushReturn(r0 error) {
+	f.PushHook(func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
+		return r0
+	})
+}
+
+func (f *LFSStoreCreateObjectFunc) nextHook() func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LFSStoreCreateObjectFunc) appendCall(r0 LFSStoreCreateObjectFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LFSStoreCreateObjectFuncCall objects
+// describing the invocations of this function.
+func (f *LFSStoreCreateObjectFunc) History() []LFSStoreCreateObjectFuncCall {
+	f.mutex.Lock()
+	history := make([]LFSStoreCreateObjectFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LFSStoreCreateObjectFuncCall is an object that describes an invocation of
+// method CreateObject on an instance of MockLFSStore.
+type LFSStoreCreateObjectFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 lfsutil.OID
+	// Arg3 is the value of the 4th argument passed to this method
+	// invocation.
+	Arg3 int64
+	// Arg4 is the value of the 5th argument passed to this method
+	// invocation.
+	Arg4 lfsutil.Storage
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LFSStoreCreateObjectFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3, c.Arg4}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LFSStoreCreateObjectFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// LFSStoreGetObjectByOIDFunc describes the behavior when the GetObjectByOID
+// method of the parent MockLFSStore instance is invoked.
+type LFSStoreGetObjectByOIDFunc struct {
+	defaultHook func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error)
+	hooks       []func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error)
+	history     []LFSStoreGetObjectByOIDFuncCall
+	mutex       sync.Mutex
+}
+
+// GetObjectByOID delegates to the next hook function in the queue and
+// stores the parameter and result values of this invocation.
+func (m *MockLFSStore) GetObjectByOID(v0 context.Context, v1 int64, v2 lfsutil.OID) (*db.LFSObject, error) {
+	r0, r1 := m.GetObjectByOIDFunc.nextHook()(v0, v1, v2)
+	m.GetObjectByOIDFunc.appendCall(LFSStoreGetObjectByOIDFuncCall{v0, v1, v2, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetObjectByOID
+// method of the parent MockLFSStore instance is invoked and the hook queue
+// is empty.
+func (f *LFSStoreGetObjectByOIDFunc) SetDefaultHook(hook func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetObjectByOID method of the parent MockLFSStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *LFSStoreGetObjectByOIDFunc) PushHook(hook func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LFSStoreGetObjectByOIDFunc) SetDefaultReturn(r0 *db.LFSObject, r1 error) {
+	f.SetDefaultHook(func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LFSStoreGetObjectByOIDFunc) PushReturn(r0 *db.LFSObject, r1 error) {
+	f.PushHook(func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error) {
+		return r0, r1
+	})
+}
+
+func (f *LFSStoreGetObjectByOIDFunc) nextHook() func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LFSStoreGetObjectByOIDFunc) appendCall(r0 LFSStoreGetObjectByOIDFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LFSStoreGetObjectByOIDFuncCall objects
+// describing the invocations of this function.
+func (f *LFSStoreGetObjectByOIDFunc) History() []LFSStoreGetObjectByOIDFuncCall {
+	f.mutex.Lock()
+	history := make([]LFSStoreGetObjectByOIDFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LFSStoreGetObjectByOIDFuncCall is an object that describes an invocation
+// of method GetObjectByOID on an instance of MockLFSStore.
+type LFSStoreGetObjectByOIDFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 lfsutil.OID
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.LFSObject
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c LFSStoreGetObjectByOIDFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LFSStoreGetObjectByOIDFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// LFSStoreGetObjectsByOIDsFunc describes the behavior when the
+// GetObjectsByOIDs method of the parent MockLFSStore instance is invoked.
+type LFSStoreGetObjectsByOIDsFunc struct {
+	defaultHook func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error)
+	hooks       []func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error)
+	history     []LFSStoreGetObjectsByOIDsFuncCall
+	mutex       sync.Mutex
+}
+
+// GetObjectsByOIDs delegates to the next hook function in the queue and
+// stores the parameter and result values of this invocation.
+func (m *MockLFSStore) GetObjectsByOIDs(v0 context.Context, v1 int64, v2 ...lfsutil.OID) ([]*db.LFSObject, error) {
+	r0, r1 := m.GetObjectsByOIDsFunc.nextHook()(v0, v1, v2...)
+	m.GetObjectsByOIDsFunc.appendCall(LFSStoreGetObjectsByOIDsFuncCall{v0, v1, v2, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetObjectsByOIDs
+// method of the parent MockLFSStore instance is invoked and the hook queue
+// is empty.
+func (f *LFSStoreGetObjectsByOIDsFunc) SetDefaultHook(hook func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetObjectsByOIDs method of the parent MockLFSStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *LFSStoreGetObjectsByOIDsFunc) PushHook(hook func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *LFSStoreGetObjectsByOIDsFunc) SetDefaultReturn(r0 []*db.LFSObject, r1 error) {
+	f.SetDefaultHook(func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *LFSStoreGetObjectsByOIDsFunc) PushReturn(r0 []*db.LFSObject, r1 error) {
+	f.PushHook(func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error) {
+		return r0, r1
+	})
+}
+
+func (f *LFSStoreGetObjectsByOIDsFunc) nextHook() func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *LFSStoreGetObjectsByOIDsFunc) appendCall(r0 LFSStoreGetObjectsByOIDsFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of LFSStoreGetObjectsByOIDsFuncCall objects
+// describing the invocations of this function.
+func (f *LFSStoreGetObjectsByOIDsFunc) History() []LFSStoreGetObjectsByOIDsFuncCall {
+	f.mutex.Lock()
+	history := make([]LFSStoreGetObjectsByOIDsFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// LFSStoreGetObjectsByOIDsFuncCall is an object that describes an
+// invocation of method GetObjectsByOIDs on an instance of MockLFSStore.
+type LFSStoreGetObjectsByOIDsFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is a slice containing the values of the variadic arguments
+	// passed to this method invocation.
+	Arg2 []lfsutil.OID
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 []*db.LFSObject
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation. The variadic slice argument is flattened in this array such
+// that one positional argument and three variadic arguments would result in
+// a slice of four, not two.
+func (c LFSStoreGetObjectsByOIDsFuncCall) Args() []interface{} {
+	trailing := []interface{}{}
+	for _, val := range c.Arg2 {
+		trailing = append(trailing, val)
+	}
+
+	return append([]interface{}{c.Arg0, c.Arg1}, trailing...)
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c LFSStoreGetObjectsByOIDsFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// MockPermsStore is a mock implementation of the PermsStore interface (from
+// the package gogs.io/gogs/internal/db) used for unit testing.
+type MockPermsStore struct {
+	// AccessModeFunc is an instance of a mock function object controlling
+	// the behavior of the method AccessMode.
+	AccessModeFunc *PermsStoreAccessModeFunc
+	// AuthorizeFunc is an instance of a mock function object controlling
+	// the behavior of the method Authorize.
+	AuthorizeFunc *PermsStoreAuthorizeFunc
+	// SetRepoPermsFunc is an instance of a mock function object controlling
+	// the behavior of the method SetRepoPerms.
+	SetRepoPermsFunc *PermsStoreSetRepoPermsFunc
+}
+
+// NewMockPermsStore creates a new mock of the PermsStore interface. All
+// methods return zero values for all results, unless overwritten.
+func NewMockPermsStore() *MockPermsStore {
+	return &MockPermsStore{
+		AccessModeFunc: &PermsStoreAccessModeFunc{
+			defaultHook: func(context.Context, int64, int64, db.AccessModeOptions) (r0 db.AccessMode) {
+				return
+			},
+		},
+		AuthorizeFunc: &PermsStoreAuthorizeFunc{
+			defaultHook: func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) (r0 bool) {
+				return
+			},
+		},
+		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
+			defaultHook: func(context.Context, int64, map[int64]db.AccessMode) (r0 error) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockPermsStore creates a new mock of the PermsStore interface.
+// All methods panic on invocation, unless overwritten.
+func NewStrictMockPermsStore() *MockPermsStore {
+	return &MockPermsStore{
+		AccessModeFunc: &PermsStoreAccessModeFunc{
+			defaultHook: func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode {
+				panic("unexpected invocation of MockPermsStore.AccessMode")
+			},
+		},
+		AuthorizeFunc: &PermsStoreAuthorizeFunc{
+			defaultHook: func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool {
+				panic("unexpected invocation of MockPermsStore.Authorize")
+			},
+		},
+		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
+			defaultHook: func(context.Context, int64, map[int64]db.AccessMode) error {
+				panic("unexpected invocation of MockPermsStore.SetRepoPerms")
+			},
+		},
+	}
+}
+
+// NewMockPermsStoreFrom creates a new mock of the MockPermsStore interface.
+// All methods delegate to the given implementation, unless overwritten.
+func NewMockPermsStoreFrom(i db.PermsStore) *MockPermsStore {
+	return &MockPermsStore{
+		AccessModeFunc: &PermsStoreAccessModeFunc{
+			defaultHook: i.AccessMode,
+		},
+		AuthorizeFunc: &PermsStoreAuthorizeFunc{
+			defaultHook: i.Authorize,
+		},
+		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
+			defaultHook: i.SetRepoPerms,
+		},
+	}
+}
+
+// PermsStoreAccessModeFunc describes the behavior when the AccessMode
+// method of the parent MockPermsStore instance is invoked.
+type PermsStoreAccessModeFunc struct {
+	defaultHook func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode
+	hooks       []func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode
+	history     []PermsStoreAccessModeFuncCall
+	mutex       sync.Mutex
+}
+
+// AccessMode delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockPermsStore) AccessMode(v0 context.Context, v1 int64, v2 int64, v3 db.AccessModeOptions) db.AccessMode {
+	r0 := m.AccessModeFunc.nextHook()(v0, v1, v2, v3)
+	m.AccessModeFunc.appendCall(PermsStoreAccessModeFuncCall{v0, v1, v2, v3, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the AccessMode method of
+// the parent MockPermsStore instance is invoked and the hook queue is
+// empty.
+func (f *PermsStoreAccessModeFunc) SetDefaultHook(hook func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// AccessMode method of the parent MockPermsStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *PermsStoreAccessModeFunc) PushHook(hook func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *PermsStoreAccessModeFunc) SetDefaultReturn(r0 db.AccessMode) {
+	f.SetDefaultHook(func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *PermsStoreAccessModeFunc) PushReturn(r0 db.AccessMode) {
+	f.PushHook(func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode {
+		return r0
+	})
+}
+
+func (f *PermsStoreAccessModeFunc) nextHook() func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *PermsStoreAccessModeFunc) appendCall(r0 PermsStoreAccessModeFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of PermsStoreAccessModeFuncCall objects
+// describing the invocations of this function.
+func (f *PermsStoreAccessModeFunc) History() []PermsStoreAccessModeFuncCall {
+	f.mutex.Lock()
+	history := make([]PermsStoreAccessModeFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// PermsStoreAccessModeFuncCall is an object that describes an invocation of
+// method AccessMode on an instance of MockPermsStore.
+type PermsStoreAccessModeFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 int64
+	// Arg3 is the value of the 4th argument passed to this method
+	// invocation.
+	Arg3 db.AccessModeOptions
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 db.AccessMode
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c PermsStoreAccessModeFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c PermsStoreAccessModeFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// PermsStoreAuthorizeFunc describes the behavior when the Authorize method
+// of the parent MockPermsStore instance is invoked.
+type PermsStoreAuthorizeFunc struct {
+	defaultHook func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool
+	hooks       []func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool
+	history     []PermsStoreAuthorizeFuncCall
+	mutex       sync.Mutex
+}
+
+// Authorize delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockPermsStore) Authorize(v0 context.Context, v1 int64, v2 int64, v3 db.AccessMode, v4 db.AccessModeOptions) bool {
+	r0 := m.AuthorizeFunc.nextHook()(v0, v1, v2, v3, v4)
+	m.AuthorizeFunc.appendCall(PermsStoreAuthorizeFuncCall{v0, v1, v2, v3, v4, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the Authorize method of
+// the parent MockPermsStore instance is invoked and the hook queue is
+// empty.
+func (f *PermsStoreAuthorizeFunc) SetDefaultHook(hook func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Authorize method of the parent MockPermsStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *PermsStoreAuthorizeFunc) PushHook(hook func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *PermsStoreAuthorizeFunc) SetDefaultReturn(r0 bool) {
+	f.SetDefaultHook(func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *PermsStoreAuthorizeFunc) PushReturn(r0 bool) {
+	f.PushHook(func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool {
+		return r0
+	})
+}
+
+func (f *PermsStoreAuthorizeFunc) nextHook() func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *PermsStoreAuthorizeFunc) appendCall(r0 PermsStoreAuthorizeFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of PermsStoreAuthorizeFuncCall objects
+// describing the invocations of this function.
+func (f *PermsStoreAuthorizeFunc) History() []PermsStoreAuthorizeFuncCall {
+	f.mutex.Lock()
+	history := make([]PermsStoreAuthorizeFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// PermsStoreAuthorizeFuncCall is an object that describes an invocation of
+// method Authorize on an instance of MockPermsStore.
+type PermsStoreAuthorizeFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 int64
+	// Arg3 is the value of the 4th argument passed to this method
+	// invocation.
+	Arg3 db.AccessMode
+	// Arg4 is the value of the 5th argument passed to this method
+	// invocation.
+	Arg4 db.AccessModeOptions
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 bool
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c PermsStoreAuthorizeFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3, c.Arg4}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c PermsStoreAuthorizeFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// PermsStoreSetRepoPermsFunc describes the behavior when the SetRepoPerms
+// method of the parent MockPermsStore instance is invoked.
+type PermsStoreSetRepoPermsFunc struct {
+	defaultHook func(context.Context, int64, map[int64]db.AccessMode) error
+	hooks       []func(context.Context, int64, map[int64]db.AccessMode) error
+	history     []PermsStoreSetRepoPermsFuncCall
+	mutex       sync.Mutex
+}
+
+// SetRepoPerms delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockPermsStore) SetRepoPerms(v0 context.Context, v1 int64, v2 map[int64]db.AccessMode) error {
+	r0 := m.SetRepoPermsFunc.nextHook()(v0, v1, v2)
+	m.SetRepoPermsFunc.appendCall(PermsStoreSetRepoPermsFuncCall{v0, v1, v2, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the SetRepoPerms method
+// of the parent MockPermsStore instance is invoked and the hook queue is
+// empty.
+func (f *PermsStoreSetRepoPermsFunc) SetDefaultHook(hook func(context.Context, int64, map[int64]db.AccessMode) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// SetRepoPerms method of the parent MockPermsStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *PermsStoreSetRepoPermsFunc) PushHook(hook func(context.Context, int64, map[int64]db.AccessMode) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *PermsStoreSetRepoPermsFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(context.Context, int64, map[int64]db.AccessMode) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *PermsStoreSetRepoPermsFunc) PushReturn(r0 error) {
+	f.PushHook(func(context.Context, int64, map[int64]db.AccessMode) error {
+		return r0
+	})
+}
+
+func (f *PermsStoreSetRepoPermsFunc) nextHook() func(context.Context, int64, map[int64]db.AccessMode) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *PermsStoreSetRepoPermsFunc) appendCall(r0 PermsStoreSetRepoPermsFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of PermsStoreSetRepoPermsFuncCall objects
+// describing the invocations of this function.
+func (f *PermsStoreSetRepoPermsFunc) History() []PermsStoreSetRepoPermsFuncCall {
+	f.mutex.Lock()
+	history := make([]PermsStoreSetRepoPermsFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// PermsStoreSetRepoPermsFuncCall is an object that describes an invocation
+// of method SetRepoPerms on an instance of MockPermsStore.
+type PermsStoreSetRepoPermsFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 map[int64]db.AccessMode
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c PermsStoreSetRepoPermsFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c PermsStoreSetRepoPermsFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// MockReposStore is a mock implementation of the ReposStore interface (from
+// the package gogs.io/gogs/internal/db) used for unit testing.
+type MockReposStore struct {
+	// GetByNameFunc is an instance of a mock function object controlling
+	// the behavior of the method GetByName.
+	GetByNameFunc *ReposStoreGetByNameFunc
+}
+
+// NewMockReposStore creates a new mock of the ReposStore interface. All
+// methods return zero values for all results, unless overwritten.
+func NewMockReposStore() *MockReposStore {
+	return &MockReposStore{
+		GetByNameFunc: &ReposStoreGetByNameFunc{
+			defaultHook: func(context.Context, int64, string) (r0 *db.Repository, r1 error) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockReposStore creates a new mock of the ReposStore interface.
+// All methods panic on invocation, unless overwritten.
+func NewStrictMockReposStore() *MockReposStore {
+	return &MockReposStore{
+		GetByNameFunc: &ReposStoreGetByNameFunc{
+			defaultHook: func(context.Context, int64, string) (*db.Repository, error) {
+				panic("unexpected invocation of MockReposStore.GetByName")
+			},
+		},
+	}
+}
+
+// NewMockReposStoreFrom creates a new mock of the MockReposStore interface.
+// All methods delegate to the given implementation, unless overwritten.
+func NewMockReposStoreFrom(i db.ReposStore) *MockReposStore {
+	return &MockReposStore{
+		GetByNameFunc: &ReposStoreGetByNameFunc{
+			defaultHook: i.GetByName,
+		},
+	}
+}
+
+// ReposStoreGetByNameFunc describes the behavior when the GetByName method
+// of the parent MockReposStore instance is invoked.
+type ReposStoreGetByNameFunc struct {
+	defaultHook func(context.Context, int64, string) (*db.Repository, error)
+	hooks       []func(context.Context, int64, string) (*db.Repository, error)
+	history     []ReposStoreGetByNameFuncCall
+	mutex       sync.Mutex
+}
+
+// GetByName delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockReposStore) GetByName(v0 context.Context, v1 int64, v2 string) (*db.Repository, error) {
+	r0, r1 := m.GetByNameFunc.nextHook()(v0, v1, v2)
+	m.GetByNameFunc.appendCall(ReposStoreGetByNameFuncCall{v0, v1, v2, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetByName method of
+// the parent MockReposStore instance is invoked and the hook queue is
+// empty.
+func (f *ReposStoreGetByNameFunc) SetDefaultHook(hook func(context.Context, int64, string) (*db.Repository, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetByName method of the parent MockReposStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *ReposStoreGetByNameFunc) PushHook(hook func(context.Context, int64, string) (*db.Repository, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *ReposStoreGetByNameFunc) SetDefaultReturn(r0 *db.Repository, r1 error) {
+	f.SetDefaultHook(func(context.Context, int64, string) (*db.Repository, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *ReposStoreGetByNameFunc) PushReturn(r0 *db.Repository, r1 error) {
+	f.PushHook(func(context.Context, int64, string) (*db.Repository, error) {
+		return r0, r1
+	})
+}
+
+func (f *ReposStoreGetByNameFunc) nextHook() func(context.Context, int64, string) (*db.Repository, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *ReposStoreGetByNameFunc) appendCall(r0 ReposStoreGetByNameFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of ReposStoreGetByNameFuncCall objects
+// describing the invocations of this function.
+func (f *ReposStoreGetByNameFunc) History() []ReposStoreGetByNameFuncCall {
+	f.mutex.Lock()
+	history := make([]ReposStoreGetByNameFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// ReposStoreGetByNameFuncCall is an object that describes an invocation of
+// method GetByName on an instance of MockReposStore.
+type ReposStoreGetByNameFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 string
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.Repository
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c ReposStoreGetByNameFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c ReposStoreGetByNameFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// MockTwoFactorsStore is a mock implementation of the TwoFactorsStore
+// interface (from the package gogs.io/gogs/internal/db) used for unit
+// testing.
+type MockTwoFactorsStore struct {
+	// CreateFunc is an instance of a mock function object controlling the
+	// behavior of the method Create.
+	CreateFunc *TwoFactorsStoreCreateFunc
+	// GetByUserIDFunc is an instance of a mock function object controlling
+	// the behavior of the method GetByUserID.
+	GetByUserIDFunc *TwoFactorsStoreGetByUserIDFunc
+	// IsUserEnabledFunc is an instance of a mock function object
+	// controlling the behavior of the method IsUserEnabled.
+	IsUserEnabledFunc *TwoFactorsStoreIsUserEnabledFunc
+}
+
+// NewMockTwoFactorsStore creates a new mock of the TwoFactorsStore
+// interface. All methods return zero values for all results, unless
+// overwritten.
+func NewMockTwoFactorsStore() *MockTwoFactorsStore {
+	return &MockTwoFactorsStore{
+		CreateFunc: &TwoFactorsStoreCreateFunc{
+			defaultHook: func(context.Context, int64, string, string) (r0 error) {
+				return
+			},
+		},
+		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
+			defaultHook: func(context.Context, int64) (r0 *db.TwoFactor, r1 error) {
+				return
+			},
+		},
+		IsUserEnabledFunc: &TwoFactorsStoreIsUserEnabledFunc{
+			defaultHook: func(context.Context, int64) (r0 bool) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockTwoFactorsStore creates a new mock of the TwoFactorsStore
+// interface. All methods panic on invocation, unless overwritten.
+func NewStrictMockTwoFactorsStore() *MockTwoFactorsStore {
+	return &MockTwoFactorsStore{
+		CreateFunc: &TwoFactorsStoreCreateFunc{
+			defaultHook: func(context.Context, int64, string, string) error {
+				panic("unexpected invocation of MockTwoFactorsStore.Create")
+			},
+		},
+		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
+			defaultHook: func(context.Context, int64) (*db.TwoFactor, error) {
+				panic("unexpected invocation of MockTwoFactorsStore.GetByUserID")
+			},
+		},
+		IsUserEnabledFunc: &TwoFactorsStoreIsUserEnabledFunc{
+			defaultHook: func(context.Context, int64) bool {
+				panic("unexpected invocation of MockTwoFactorsStore.IsUserEnabled")
+			},
+		},
+	}
+}
+
+// NewMockTwoFactorsStoreFrom creates a new mock of the MockTwoFactorsStore
+// interface. All methods delegate to the given implementation, unless
+// overwritten.
+func NewMockTwoFactorsStoreFrom(i db.TwoFactorsStore) *MockTwoFactorsStore {
+	return &MockTwoFactorsStore{
+		CreateFunc: &TwoFactorsStoreCreateFunc{
+			defaultHook: i.Create,
+		},
+		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
+			defaultHook: i.GetByUserID,
+		},
+		IsUserEnabledFunc: &TwoFactorsStoreIsUserEnabledFunc{
+			defaultHook: i.IsUserEnabled,
+		},
+	}
+}
+
+// TwoFactorsStoreCreateFunc describes the behavior when the Create method
+// of the parent MockTwoFactorsStore instance is invoked.
+type TwoFactorsStoreCreateFunc struct {
+	defaultHook func(context.Context, int64, string, string) error
+	hooks       []func(context.Context, int64, string, string) error
+	history     []TwoFactorsStoreCreateFuncCall
+	mutex       sync.Mutex
+}
+
+// Create delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockTwoFactorsStore) Create(v0 context.Context, v1 int64, v2 string, v3 string) error {
+	r0 := m.CreateFunc.nextHook()(v0, v1, v2, v3)
+	m.CreateFunc.appendCall(TwoFactorsStoreCreateFuncCall{v0, v1, v2, v3, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the Create method of the
+// parent MockTwoFactorsStore instance is invoked and the hook queue is
+// empty.
+func (f *TwoFactorsStoreCreateFunc) SetDefaultHook(hook func(context.Context, int64, string, string) error) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Create method of the parent MockTwoFactorsStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *TwoFactorsStoreCreateFunc) PushHook(hook func(context.Context, int64, string, string) error) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *TwoFactorsStoreCreateFunc) SetDefaultReturn(r0 error) {
+	f.SetDefaultHook(func(context.Context, int64, string, string) error {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *TwoFactorsStoreCreateFunc) PushReturn(r0 error) {
+	f.PushHook(func(context.Context, int64, string, string) error {
+		return r0
+	})
+}
+
+func (f *TwoFactorsStoreCreateFunc) nextHook() func(context.Context, int64, string, string) error {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *TwoFactorsStoreCreateFunc) appendCall(r0 TwoFactorsStoreCreateFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of TwoFactorsStoreCreateFuncCall objects
+// describing the invocations of this function.
+func (f *TwoFactorsStoreCreateFunc) History() []TwoFactorsStoreCreateFuncCall {
+	f.mutex.Lock()
+	history := make([]TwoFactorsStoreCreateFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// TwoFactorsStoreCreateFuncCall is an object that describes an invocation
+// of method Create on an instance of MockTwoFactorsStore.
+type TwoFactorsStoreCreateFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 string
+	// Arg3 is the value of the 4th argument passed to this method
+	// invocation.
+	Arg3 string
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c TwoFactorsStoreCreateFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c TwoFactorsStoreCreateFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// TwoFactorsStoreGetByUserIDFunc describes the behavior when the
+// GetByUserID method of the parent MockTwoFactorsStore instance is invoked.
+type TwoFactorsStoreGetByUserIDFunc struct {
+	defaultHook func(context.Context, int64) (*db.TwoFactor, error)
+	hooks       []func(context.Context, int64) (*db.TwoFactor, error)
+	history     []TwoFactorsStoreGetByUserIDFuncCall
+	mutex       sync.Mutex
+}
+
+// GetByUserID delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockTwoFactorsStore) GetByUserID(v0 context.Context, v1 int64) (*db.TwoFactor, error) {
+	r0, r1 := m.GetByUserIDFunc.nextHook()(v0, v1)
+	m.GetByUserIDFunc.appendCall(TwoFactorsStoreGetByUserIDFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetByUserID method
+// of the parent MockTwoFactorsStore instance is invoked and the hook queue
+// is empty.
+func (f *TwoFactorsStoreGetByUserIDFunc) SetDefaultHook(hook func(context.Context, int64) (*db.TwoFactor, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetByUserID method of the parent MockTwoFactorsStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *TwoFactorsStoreGetByUserIDFunc) PushHook(hook func(context.Context, int64) (*db.TwoFactor, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *TwoFactorsStoreGetByUserIDFunc) SetDefaultReturn(r0 *db.TwoFactor, r1 error) {
+	f.SetDefaultHook(func(context.Context, int64) (*db.TwoFactor, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *TwoFactorsStoreGetByUserIDFunc) PushReturn(r0 *db.TwoFactor, r1 error) {
+	f.PushHook(func(context.Context, int64) (*db.TwoFactor, error) {
+		return r0, r1
+	})
+}
+
+func (f *TwoFactorsStoreGetByUserIDFunc) nextHook() func(context.Context, int64) (*db.TwoFactor, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *TwoFactorsStoreGetByUserIDFunc) appendCall(r0 TwoFactorsStoreGetByUserIDFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of TwoFactorsStoreGetByUserIDFuncCall objects
+// describing the invocations of this function.
+func (f *TwoFactorsStoreGetByUserIDFunc) History() []TwoFactorsStoreGetByUserIDFuncCall {
+	f.mutex.Lock()
+	history := make([]TwoFactorsStoreGetByUserIDFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// TwoFactorsStoreGetByUserIDFuncCall is an object that describes an
+// invocation of method GetByUserID on an instance of MockTwoFactorsStore.
+type TwoFactorsStoreGetByUserIDFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.TwoFactor
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c TwoFactorsStoreGetByUserIDFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c TwoFactorsStoreGetByUserIDFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// TwoFactorsStoreIsUserEnabledFunc describes the behavior when the
+// IsUserEnabled method of the parent MockTwoFactorsStore instance is
+// invoked.
+type TwoFactorsStoreIsUserEnabledFunc struct {
+	defaultHook func(context.Context, int64) bool
+	hooks       []func(context.Context, int64) bool
+	history     []TwoFactorsStoreIsUserEnabledFuncCall
+	mutex       sync.Mutex
+}
+
+// IsUserEnabled delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockTwoFactorsStore) IsUserEnabled(v0 context.Context, v1 int64) bool {
+	r0 := m.IsUserEnabledFunc.nextHook()(v0, v1)
+	m.IsUserEnabledFunc.appendCall(TwoFactorsStoreIsUserEnabledFuncCall{v0, v1, r0})
+	return r0
+}
+
+// SetDefaultHook sets function that is called when the IsUserEnabled method
+// of the parent MockTwoFactorsStore instance is invoked and the hook queue
+// is empty.
+func (f *TwoFactorsStoreIsUserEnabledFunc) SetDefaultHook(hook func(context.Context, int64) bool) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// IsUserEnabled method of the parent MockTwoFactorsStore instance invokes
+// the hook at the front of the queue and discards it. After the queue is
+// empty, the default hook function is invoked for any future action.
+func (f *TwoFactorsStoreIsUserEnabledFunc) PushHook(hook func(context.Context, int64) bool) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *TwoFactorsStoreIsUserEnabledFunc) SetDefaultReturn(r0 bool) {
+	f.SetDefaultHook(func(context.Context, int64) bool {
+		return r0
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *TwoFactorsStoreIsUserEnabledFunc) PushReturn(r0 bool) {
+	f.PushHook(func(context.Context, int64) bool {
+		return r0
+	})
+}
+
+func (f *TwoFactorsStoreIsUserEnabledFunc) nextHook() func(context.Context, int64) bool {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *TwoFactorsStoreIsUserEnabledFunc) appendCall(r0 TwoFactorsStoreIsUserEnabledFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of TwoFactorsStoreIsUserEnabledFuncCall
+// objects describing the invocations of this function.
+func (f *TwoFactorsStoreIsUserEnabledFunc) History() []TwoFactorsStoreIsUserEnabledFuncCall {
+	f.mutex.Lock()
+	history := make([]TwoFactorsStoreIsUserEnabledFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// TwoFactorsStoreIsUserEnabledFuncCall is an object that describes an
+// invocation of method IsUserEnabled on an instance of MockTwoFactorsStore.
+type TwoFactorsStoreIsUserEnabledFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 bool
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c TwoFactorsStoreIsUserEnabledFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c TwoFactorsStoreIsUserEnabledFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0}
+}
+
+// MockUsersStore is a mock implementation of the UsersStore interface (from
+// the package gogs.io/gogs/internal/db) used for unit testing.
+type MockUsersStore struct {
+	// AuthenticateFunc is an instance of a mock function object controlling
+	// the behavior of the method Authenticate.
+	AuthenticateFunc *UsersStoreAuthenticateFunc
+	// CreateFunc is an instance of a mock function object controlling the
+	// behavior of the method Create.
+	CreateFunc *UsersStoreCreateFunc
+	// GetByEmailFunc is an instance of a mock function object controlling
+	// the behavior of the method GetByEmail.
+	GetByEmailFunc *UsersStoreGetByEmailFunc
+	// GetByIDFunc is an instance of a mock function object controlling the
+	// behavior of the method GetByID.
+	GetByIDFunc *UsersStoreGetByIDFunc
+	// GetByUsernameFunc is an instance of a mock function object
+	// controlling the behavior of the method GetByUsername.
+	GetByUsernameFunc *UsersStoreGetByUsernameFunc
+}
+
+// NewMockUsersStore creates a new mock of the UsersStore interface. All
+// methods return zero values for all results, unless overwritten.
+func NewMockUsersStore() *MockUsersStore {
+	return &MockUsersStore{
+		AuthenticateFunc: &UsersStoreAuthenticateFunc{
+			defaultHook: func(context.Context, string, string, int64) (r0 *db.User, r1 error) {
+				return
+			},
+		},
+		CreateFunc: &UsersStoreCreateFunc{
+			defaultHook: func(context.Context, string, string, db.CreateUserOpts) (r0 *db.User, r1 error) {
+				return
+			},
+		},
+		GetByEmailFunc: &UsersStoreGetByEmailFunc{
+			defaultHook: func(context.Context, string) (r0 *db.User, r1 error) {
+				return
+			},
+		},
+		GetByIDFunc: &UsersStoreGetByIDFunc{
+			defaultHook: func(context.Context, int64) (r0 *db.User, r1 error) {
+				return
+			},
+		},
+		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
+			defaultHook: func(context.Context, string) (r0 *db.User, r1 error) {
+				return
+			},
+		},
+	}
+}
+
+// NewStrictMockUsersStore creates a new mock of the UsersStore interface.
+// All methods panic on invocation, unless overwritten.
+func NewStrictMockUsersStore() *MockUsersStore {
+	return &MockUsersStore{
+		AuthenticateFunc: &UsersStoreAuthenticateFunc{
+			defaultHook: func(context.Context, string, string, int64) (*db.User, error) {
+				panic("unexpected invocation of MockUsersStore.Authenticate")
+			},
+		},
+		CreateFunc: &UsersStoreCreateFunc{
+			defaultHook: func(context.Context, string, string, db.CreateUserOpts) (*db.User, error) {
+				panic("unexpected invocation of MockUsersStore.Create")
+			},
+		},
+		GetByEmailFunc: &UsersStoreGetByEmailFunc{
+			defaultHook: func(context.Context, string) (*db.User, error) {
+				panic("unexpected invocation of MockUsersStore.GetByEmail")
+			},
+		},
+		GetByIDFunc: &UsersStoreGetByIDFunc{
+			defaultHook: func(context.Context, int64) (*db.User, error) {
+				panic("unexpected invocation of MockUsersStore.GetByID")
+			},
+		},
+		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
+			defaultHook: func(context.Context, string) (*db.User, error) {
+				panic("unexpected invocation of MockUsersStore.GetByUsername")
+			},
+		},
+	}
+}
+
+// NewMockUsersStoreFrom creates a new mock of the MockUsersStore interface.
+// All methods delegate to the given implementation, unless overwritten.
+func NewMockUsersStoreFrom(i db.UsersStore) *MockUsersStore {
+	return &MockUsersStore{
+		AuthenticateFunc: &UsersStoreAuthenticateFunc{
+			defaultHook: i.Authenticate,
+		},
+		CreateFunc: &UsersStoreCreateFunc{
+			defaultHook: i.Create,
+		},
+		GetByEmailFunc: &UsersStoreGetByEmailFunc{
+			defaultHook: i.GetByEmail,
+		},
+		GetByIDFunc: &UsersStoreGetByIDFunc{
+			defaultHook: i.GetByID,
+		},
+		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
+			defaultHook: i.GetByUsername,
+		},
+	}
+}
+
+// UsersStoreAuthenticateFunc describes the behavior when the Authenticate
+// method of the parent MockUsersStore instance is invoked.
+type UsersStoreAuthenticateFunc struct {
+	defaultHook func(context.Context, string, string, int64) (*db.User, error)
+	hooks       []func(context.Context, string, string, int64) (*db.User, error)
+	history     []UsersStoreAuthenticateFuncCall
+	mutex       sync.Mutex
+}
+
+// Authenticate delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockUsersStore) Authenticate(v0 context.Context, v1 string, v2 string, v3 int64) (*db.User, error) {
+	r0, r1 := m.AuthenticateFunc.nextHook()(v0, v1, v2, v3)
+	m.AuthenticateFunc.appendCall(UsersStoreAuthenticateFuncCall{v0, v1, v2, v3, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the Authenticate method
+// of the parent MockUsersStore instance is invoked and the hook queue is
+// empty.
+func (f *UsersStoreAuthenticateFunc) SetDefaultHook(hook func(context.Context, string, string, int64) (*db.User, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Authenticate method of the parent MockUsersStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *UsersStoreAuthenticateFunc) PushHook(hook func(context.Context, string, string, int64) (*db.User, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *UsersStoreAuthenticateFunc) SetDefaultReturn(r0 *db.User, r1 error) {
+	f.SetDefaultHook(func(context.Context, string, string, int64) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *UsersStoreAuthenticateFunc) PushReturn(r0 *db.User, r1 error) {
+	f.PushHook(func(context.Context, string, string, int64) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+func (f *UsersStoreAuthenticateFunc) nextHook() func(context.Context, string, string, int64) (*db.User, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *UsersStoreAuthenticateFunc) appendCall(r0 UsersStoreAuthenticateFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of UsersStoreAuthenticateFuncCall objects
+// describing the invocations of this function.
+func (f *UsersStoreAuthenticateFunc) History() []UsersStoreAuthenticateFuncCall {
+	f.mutex.Lock()
+	history := make([]UsersStoreAuthenticateFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// UsersStoreAuthenticateFuncCall is an object that describes an invocation
+// of method Authenticate on an instance of MockUsersStore.
+type UsersStoreAuthenticateFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 string
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 string
+	// Arg3 is the value of the 4th argument passed to this method
+	// invocation.
+	Arg3 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.User
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c UsersStoreAuthenticateFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c UsersStoreAuthenticateFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// UsersStoreCreateFunc describes the behavior when the Create method of the
+// parent MockUsersStore instance is invoked.
+type UsersStoreCreateFunc struct {
+	defaultHook func(context.Context, string, string, db.CreateUserOpts) (*db.User, error)
+	hooks       []func(context.Context, string, string, db.CreateUserOpts) (*db.User, error)
+	history     []UsersStoreCreateFuncCall
+	mutex       sync.Mutex
+}
+
+// Create delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockUsersStore) Create(v0 context.Context, v1 string, v2 string, v3 db.CreateUserOpts) (*db.User, error) {
+	r0, r1 := m.CreateFunc.nextHook()(v0, v1, v2, v3)
+	m.CreateFunc.appendCall(UsersStoreCreateFuncCall{v0, v1, v2, v3, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the Create method of the
+// parent MockUsersStore instance is invoked and the hook queue is empty.
+func (f *UsersStoreCreateFunc) SetDefaultHook(hook func(context.Context, string, string, db.CreateUserOpts) (*db.User, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// Create method of the parent MockUsersStore instance invokes the hook at
+// the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *UsersStoreCreateFunc) PushHook(hook func(context.Context, string, string, db.CreateUserOpts) (*db.User, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *UsersStoreCreateFunc) SetDefaultReturn(r0 *db.User, r1 error) {
+	f.SetDefaultHook(func(context.Context, string, string, db.CreateUserOpts) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *UsersStoreCreateFunc) PushReturn(r0 *db.User, r1 error) {
+	f.PushHook(func(context.Context, string, string, db.CreateUserOpts) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+func (f *UsersStoreCreateFunc) nextHook() func(context.Context, string, string, db.CreateUserOpts) (*db.User, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *UsersStoreCreateFunc) appendCall(r0 UsersStoreCreateFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of UsersStoreCreateFuncCall objects describing
+// the invocations of this function.
+func (f *UsersStoreCreateFunc) History() []UsersStoreCreateFuncCall {
+	f.mutex.Lock()
+	history := make([]UsersStoreCreateFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// UsersStoreCreateFuncCall is an object that describes an invocation of
+// method Create on an instance of MockUsersStore.
+type UsersStoreCreateFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 string
+	// Arg2 is the value of the 3rd argument passed to this method
+	// invocation.
+	Arg2 string
+	// Arg3 is the value of the 4th argument passed to this method
+	// invocation.
+	Arg3 db.CreateUserOpts
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.User
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c UsersStoreCreateFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c UsersStoreCreateFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// UsersStoreGetByEmailFunc describes the behavior when the GetByEmail
+// method of the parent MockUsersStore instance is invoked.
+type UsersStoreGetByEmailFunc struct {
+	defaultHook func(context.Context, string) (*db.User, error)
+	hooks       []func(context.Context, string) (*db.User, error)
+	history     []UsersStoreGetByEmailFuncCall
+	mutex       sync.Mutex
+}
+
+// GetByEmail delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockUsersStore) GetByEmail(v0 context.Context, v1 string) (*db.User, error) {
+	r0, r1 := m.GetByEmailFunc.nextHook()(v0, v1)
+	m.GetByEmailFunc.appendCall(UsersStoreGetByEmailFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetByEmail method of
+// the parent MockUsersStore instance is invoked and the hook queue is
+// empty.
+func (f *UsersStoreGetByEmailFunc) SetDefaultHook(hook func(context.Context, string) (*db.User, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetByEmail method of the parent MockUsersStore instance invokes the hook
+// at the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *UsersStoreGetByEmailFunc) PushHook(hook func(context.Context, string) (*db.User, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *UsersStoreGetByEmailFunc) SetDefaultReturn(r0 *db.User, r1 error) {
+	f.SetDefaultHook(func(context.Context, string) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *UsersStoreGetByEmailFunc) PushReturn(r0 *db.User, r1 error) {
+	f.PushHook(func(context.Context, string) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+func (f *UsersStoreGetByEmailFunc) nextHook() func(context.Context, string) (*db.User, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *UsersStoreGetByEmailFunc) appendCall(r0 UsersStoreGetByEmailFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of UsersStoreGetByEmailFuncCall objects
+// describing the invocations of this function.
+func (f *UsersStoreGetByEmailFunc) History() []UsersStoreGetByEmailFuncCall {
+	f.mutex.Lock()
+	history := make([]UsersStoreGetByEmailFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// UsersStoreGetByEmailFuncCall is an object that describes an invocation of
+// method GetByEmail on an instance of MockUsersStore.
+type UsersStoreGetByEmailFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 string
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.User
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c UsersStoreGetByEmailFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c UsersStoreGetByEmailFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// UsersStoreGetByIDFunc describes the behavior when the GetByID method of
+// the parent MockUsersStore instance is invoked.
+type UsersStoreGetByIDFunc struct {
+	defaultHook func(context.Context, int64) (*db.User, error)
+	hooks       []func(context.Context, int64) (*db.User, error)
+	history     []UsersStoreGetByIDFuncCall
+	mutex       sync.Mutex
+}
+
+// GetByID delegates to the next hook function in the queue and stores the
+// parameter and result values of this invocation.
+func (m *MockUsersStore) GetByID(v0 context.Context, v1 int64) (*db.User, error) {
+	r0, r1 := m.GetByIDFunc.nextHook()(v0, v1)
+	m.GetByIDFunc.appendCall(UsersStoreGetByIDFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetByID method of
+// the parent MockUsersStore instance is invoked and the hook queue is
+// empty.
+func (f *UsersStoreGetByIDFunc) SetDefaultHook(hook func(context.Context, int64) (*db.User, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetByID method of the parent MockUsersStore instance invokes the hook at
+// the front of the queue and discards it. After the queue is empty, the
+// default hook function is invoked for any future action.
+func (f *UsersStoreGetByIDFunc) PushHook(hook func(context.Context, int64) (*db.User, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *UsersStoreGetByIDFunc) SetDefaultReturn(r0 *db.User, r1 error) {
+	f.SetDefaultHook(func(context.Context, int64) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *UsersStoreGetByIDFunc) PushReturn(r0 *db.User, r1 error) {
+	f.PushHook(func(context.Context, int64) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+func (f *UsersStoreGetByIDFunc) nextHook() func(context.Context, int64) (*db.User, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *UsersStoreGetByIDFunc) appendCall(r0 UsersStoreGetByIDFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of UsersStoreGetByIDFuncCall objects
+// describing the invocations of this function.
+func (f *UsersStoreGetByIDFunc) History() []UsersStoreGetByIDFuncCall {
+	f.mutex.Lock()
+	history := make([]UsersStoreGetByIDFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// UsersStoreGetByIDFuncCall is an object that describes an invocation of
+// method GetByID on an instance of MockUsersStore.
+type UsersStoreGetByIDFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 int64
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.User
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c UsersStoreGetByIDFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c UsersStoreGetByIDFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}
+
+// UsersStoreGetByUsernameFunc describes the behavior when the GetByUsername
+// method of the parent MockUsersStore instance is invoked.
+type UsersStoreGetByUsernameFunc struct {
+	defaultHook func(context.Context, string) (*db.User, error)
+	hooks       []func(context.Context, string) (*db.User, error)
+	history     []UsersStoreGetByUsernameFuncCall
+	mutex       sync.Mutex
+}
+
+// GetByUsername delegates to the next hook function in the queue and stores
+// the parameter and result values of this invocation.
+func (m *MockUsersStore) GetByUsername(v0 context.Context, v1 string) (*db.User, error) {
+	r0, r1 := m.GetByUsernameFunc.nextHook()(v0, v1)
+	m.GetByUsernameFunc.appendCall(UsersStoreGetByUsernameFuncCall{v0, v1, r0, r1})
+	return r0, r1
+}
+
+// SetDefaultHook sets function that is called when the GetByUsername method
+// of the parent MockUsersStore instance is invoked and the hook queue is
+// empty.
+func (f *UsersStoreGetByUsernameFunc) SetDefaultHook(hook func(context.Context, string) (*db.User, error)) {
+	f.defaultHook = hook
+}
+
+// PushHook adds a function to the end of hook queue. Each invocation of the
+// GetByUsername method of the parent MockUsersStore instance invokes the
+// hook at the front of the queue and discards it. After the queue is empty,
+// the default hook function is invoked for any future action.
+func (f *UsersStoreGetByUsernameFunc) PushHook(hook func(context.Context, string) (*db.User, error)) {
+	f.mutex.Lock()
+	f.hooks = append(f.hooks, hook)
+	f.mutex.Unlock()
+}
+
+// SetDefaultReturn calls SetDefaultHook with a function that returns the
+// given values.
+func (f *UsersStoreGetByUsernameFunc) SetDefaultReturn(r0 *db.User, r1 error) {
+	f.SetDefaultHook(func(context.Context, string) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+// PushReturn calls PushHook with a function that returns the given values.
+func (f *UsersStoreGetByUsernameFunc) PushReturn(r0 *db.User, r1 error) {
+	f.PushHook(func(context.Context, string) (*db.User, error) {
+		return r0, r1
+	})
+}
+
+func (f *UsersStoreGetByUsernameFunc) nextHook() func(context.Context, string) (*db.User, error) {
+	f.mutex.Lock()
+	defer f.mutex.Unlock()
+
+	if len(f.hooks) == 0 {
+		return f.defaultHook
+	}
+
+	hook := f.hooks[0]
+	f.hooks = f.hooks[1:]
+	return hook
+}
+
+func (f *UsersStoreGetByUsernameFunc) appendCall(r0 UsersStoreGetByUsernameFuncCall) {
+	f.mutex.Lock()
+	f.history = append(f.history, r0)
+	f.mutex.Unlock()
+}
+
+// History returns a sequence of UsersStoreGetByUsernameFuncCall objects
+// describing the invocations of this function.
+func (f *UsersStoreGetByUsernameFunc) History() []UsersStoreGetByUsernameFuncCall {
+	f.mutex.Lock()
+	history := make([]UsersStoreGetByUsernameFuncCall, len(f.history))
+	copy(history, f.history)
+	f.mutex.Unlock()
+
+	return history
+}
+
+// UsersStoreGetByUsernameFuncCall is an object that describes an invocation
+// of method GetByUsername on an instance of MockUsersStore.
+type UsersStoreGetByUsernameFuncCall struct {
+	// Arg0 is the value of the 1st argument passed to this method
+	// invocation.
+	Arg0 context.Context
+	// Arg1 is the value of the 2nd argument passed to this method
+	// invocation.
+	Arg1 string
+	// Result0 is the value of the 1st result returned from this method
+	// invocation.
+	Result0 *db.User
+	// Result1 is the value of the 2nd result returned from this method
+	// invocation.
+	Result1 error
+}
+
+// Args returns an interface slice containing the arguments of this
+// invocation.
+func (c UsersStoreGetByUsernameFuncCall) Args() []interface{} {
+	return []interface{}{c.Arg0, c.Arg1}
+}
+
+// Results returns an interface slice containing the results of this
+// invocation.
+func (c UsersStoreGetByUsernameFuncCall) Results() []interface{} {
+	return []interface{}{c.Result0, c.Result1}
+}

+ 17 - 17
internal/route/lfs/route_test.go

@@ -52,12 +52,12 @@ func Test_authenticate(t *testing.T) {
 				"Authorization": []string{"Basic dXNlcm5hbWU6cGFzc3dvcmQ="},
 			},
 			mockUsersStore: func() db.UsersStore {
-				mock := db.NewMockUsersStore()
+				mock := NewMockUsersStore()
 				mock.AuthenticateFunc.SetDefaultReturn(&db.User{}, nil)
 				return mock
 			},
 			mockTwoFactorsStore: func() db.TwoFactorsStore {
-				mock := db.NewMockTwoFactorsStore()
+				mock := NewMockTwoFactorsStore()
 				mock.IsUserEnabledFunc.SetDefaultReturn(true)
 				return mock
 			},
@@ -71,12 +71,12 @@ func Test_authenticate(t *testing.T) {
 				"Authorization": []string{"Basic dXNlcm5hbWU="},
 			},
 			mockUsersStore: func() db.UsersStore {
-				mock := db.NewMockUsersStore()
+				mock := NewMockUsersStore()
 				mock.AuthenticateFunc.SetDefaultReturn(nil, auth.ErrBadCredentials{})
 				return mock
 			},
 			mockAccessTokensStore: func() db.AccessTokensStore {
-				mock := db.NewMockAccessTokensStore()
+				mock := NewMockAccessTokensStore()
 				mock.GetBySHA1Func.SetDefaultReturn(nil, db.ErrAccessTokenNotExist{})
 				return mock
 			},
@@ -94,12 +94,12 @@ func Test_authenticate(t *testing.T) {
 				"Authorization": []string{"Basic dXNlcm5hbWU6cGFzc3dvcmQ="},
 			},
 			mockUsersStore: func() db.UsersStore {
-				mock := db.NewMockUsersStore()
+				mock := NewMockUsersStore()
 				mock.AuthenticateFunc.SetDefaultReturn(&db.User{ID: 1, Name: "unknwon"}, nil)
 				return mock
 			},
 			mockTwoFactorsStore: func() db.TwoFactorsStore {
-				mock := db.NewMockTwoFactorsStore()
+				mock := NewMockTwoFactorsStore()
 				mock.IsUserEnabledFunc.SetDefaultReturn(false)
 				return mock
 			},
@@ -113,13 +113,13 @@ func Test_authenticate(t *testing.T) {
 				"Authorization": []string{"Basic dXNlcm5hbWU="},
 			},
 			mockUsersStore: func() db.UsersStore {
-				mock := db.NewMockUsersStore()
+				mock := NewMockUsersStore()
 				mock.AuthenticateFunc.SetDefaultReturn(nil, auth.ErrBadCredentials{})
 				mock.GetByIDFunc.SetDefaultReturn(&db.User{ID: 1, Name: "unknwon"}, nil)
 				return mock
 			},
 			mockAccessTokensStore: func() db.AccessTokensStore {
-				mock := db.NewMockAccessTokensStore()
+				mock := NewMockAccessTokensStore()
 				mock.GetBySHA1Func.SetDefaultReturn(&db.AccessToken{}, nil)
 				return mock
 			},
@@ -176,7 +176,7 @@ func Test_authorize(t *testing.T) {
 			name:      "user does not exist",
 			authroize: authorize(db.AccessModeNone),
 			mockUsersStore: func() db.UsersStore {
-				mock := db.NewMockUsersStore()
+				mock := NewMockUsersStore()
 				mock.GetByUsernameFunc.SetDefaultReturn(nil, db.ErrUserNotExist{})
 				return mock
 			},
@@ -186,14 +186,14 @@ func Test_authorize(t *testing.T) {
 			name:      "repository does not exist",
 			authroize: authorize(db.AccessModeNone),
 			mockUsersStore: func() db.UsersStore {
-				mock := db.NewMockUsersStore()
+				mock := NewMockUsersStore()
 				mock.GetByUsernameFunc.SetDefaultHook(func(ctx context.Context, username string) (*db.User, error) {
 					return &db.User{Name: username}, nil
 				})
 				return mock
 			},
 			mockReposStore: func() db.ReposStore {
-				mock := db.NewMockReposStore()
+				mock := NewMockReposStore()
 				mock.GetByNameFunc.SetDefaultReturn(nil, db.ErrRepoNotExist{})
 				return mock
 			},
@@ -203,21 +203,21 @@ func Test_authorize(t *testing.T) {
 			name:      "actor is not authorized",
 			authroize: authorize(db.AccessModeWrite),
 			mockUsersStore: func() db.UsersStore {
-				mock := db.NewMockUsersStore()
+				mock := NewMockUsersStore()
 				mock.GetByUsernameFunc.SetDefaultHook(func(ctx context.Context, username string) (*db.User, error) {
 					return &db.User{Name: username}, nil
 				})
 				return mock
 			},
 			mockReposStore: func() db.ReposStore {
-				mock := db.NewMockReposStore()
+				mock := NewMockReposStore()
 				mock.GetByNameFunc.SetDefaultHook(func(ctx context.Context, ownerID int64, name string) (*db.Repository, error) {
 					return &db.Repository{Name: name}, nil
 				})
 				return mock
 			},
 			mockPermsStore: func() db.PermsStore {
-				mock := db.NewMockPermsStore()
+				mock := NewMockPermsStore()
 				mock.AuthorizeFunc.SetDefaultHook(func(ctx context.Context, userID int64, repoID int64, desired db.AccessMode, opts db.AccessModeOptions) bool {
 					return desired <= db.AccessModeRead
 				})
@@ -230,21 +230,21 @@ func Test_authorize(t *testing.T) {
 			name:      "actor is authorized",
 			authroize: authorize(db.AccessModeRead),
 			mockUsersStore: func() db.UsersStore {
-				mock := db.NewMockUsersStore()
+				mock := NewMockUsersStore()
 				mock.GetByUsernameFunc.SetDefaultHook(func(ctx context.Context, username string) (*db.User, error) {
 					return &db.User{Name: username}, nil
 				})
 				return mock
 			},
 			mockReposStore: func() db.ReposStore {
-				mock := db.NewMockReposStore()
+				mock := NewMockReposStore()
 				mock.GetByNameFunc.SetDefaultHook(func(ctx context.Context, ownerID int64, name string) (*db.Repository, error) {
 					return &db.Repository{Name: name}, nil
 				})
 				return mock
 			},
 			mockPermsStore: func() db.PermsStore {
-				mock := db.NewMockPermsStore()
+				mock := NewMockPermsStore()
 				mock.AuthorizeFunc.SetDefaultHook(func(ctx context.Context, userID int64, repoID int64, desired db.AccessMode, opts db.AccessModeOptions) bool {
 					return desired <= db.AccessModeRead
 				})

+ 44 - 0
mockgen.yaml

@@ -0,0 +1,44 @@
+force: true
+goimports: goimports
+file-prefix: |
+  This file was generated by running `go-mockgen` at the root of this repository.
+  To add additional mocks to this or another package, add a new entry to the
+  mockgen.yaml file in the root of this repository.
+mocks:
+  # To generate a new mock struct from an interface definition, add a new value to this
+  # list. Each item will need to supply two pieces of information:
+  #
+  #  (1) First, you will need to give a target filename
+  #  (2) Second, you will need to supply a target import path and interface name. If the
+  #      set of interface definitions you are mocking are all from the same package, then
+  #      you can supply a `path` and `interfaces` key which take a string and string array,
+  #      respectively. If the set of interface definitions you are mocking come from multiple
+  #      import paths, you can supply a `sources` array, each item containing a `path` and
+  #      `interfaces` key.
+  #
+  # By convention, you should generate mocks next to the CONSUMER of an interface, not the
+  # definition. It is NOT considered an anti-pattern to generate multiple mocks for the same
+  # shared interface.
+  #
+  # By convention, the filename containing generated mocks should be `mocks_test.go`.
+  - filename: internal/db/mocks_test.go
+    sources:
+      - path: gogs.io/gogs/internal/db
+        interfaces:
+          - LoginSourcesStore
+          - LoginSourceFilesStore
+          - LoginSourceFileStore
+          - loginSourceFileStore
+      - path: gogs.io/gogs/internal/auth
+        interfaces:
+          - Provider
+  - filename: internal/route/lfs/mocks_test.go
+    sources:
+      - path: gogs.io/gogs/internal/db
+        interfaces:
+          - LFSStore
+          - UsersStore
+          - TwoFactorsStore
+          - AccessTokensStore
+          - ReposStore
+          - PermsStore