Add test to ensure that dumping of login sources remains correct (#16847)

#16831 has occurred because of a missed regression. This PR adds a simple test to
try to prevent this occuring again.

Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
zeripath 2021-08-28 04:25:27 +01:00 committed by GitHub
parent 88abb0dc8a
commit 1904941382
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 46 additions and 0 deletions

View File

@ -5,12 +5,15 @@
package models package models
import ( import (
"encoding/json"
"io/ioutil" "io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"strings"
"testing" "testing"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"xorm.io/xorm/schemas"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -32,3 +35,46 @@ func TestDumpDatabase(t *testing.T) {
assert.NoError(t, DumpDatabase(filepath.Join(dir, dbType+".sql"), dbType)) assert.NoError(t, DumpDatabase(filepath.Join(dir, dbType+".sql"), dbType))
} }
} }
type TestSource struct {
Provider string
ClientID string
ClientSecret string
OpenIDConnectAutoDiscoveryURL string
IconURL string
}
// FromDB fills up a LDAPConfig from serialized format.
func (source *TestSource) FromDB(bs []byte) error {
return json.Unmarshal(bs, &source)
}
// ToDB exports a LDAPConfig to a serialized format.
func (source *TestSource) ToDB() ([]byte, error) {
return json.Marshal(source)
}
func TestDumpLoginSource(t *testing.T) {
assert.NoError(t, PrepareTestDatabase())
loginSourceSchema, err := x.TableInfo(new(LoginSource))
assert.NoError(t, err)
RegisterLoginTypeConfig(LoginOAuth2, new(TestSource))
CreateLoginSource(&LoginSource{
Type: LoginOAuth2,
Name: "TestSource",
IsActive: false,
Cfg: &TestSource{
Provider: "ConvertibleSourceName",
ClientID: "42",
},
})
sb := new(strings.Builder)
x.DumpTables([]*schemas.Table{loginSourceSchema}, sb)
assert.Contains(t, sb.String(), `"Provider":"ConvertibleSourceName"`)
}