]> source.dussan.org Git - gitea.git/commitdiff
Add test to ensure that dumping of login sources remains correct (#16847)
authorzeripath <art27@cantab.net>
Sat, 28 Aug 2021 03:25:27 +0000 (04:25 +0100)
committerGitHub <noreply@github.com>
Sat, 28 Aug 2021 03:25:27 +0000 (04:25 +0100)
#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>
models/models_test.go

index 9793394e0b6f247fe1a14df46fedd385ad653b28..c75c299e4fdbb06d2c3e68cc62bbc34491f48e82 100644 (file)
@@ -5,12 +5,15 @@
 package models
 
 import (
+       "encoding/json"
        "io/ioutil"
        "os"
        "path/filepath"
+       "strings"
        "testing"
 
        "code.gitea.io/gitea/modules/setting"
+       "xorm.io/xorm/schemas"
 
        "github.com/stretchr/testify/assert"
 )
@@ -32,3 +35,46 @@ func TestDumpDatabase(t *testing.T) {
                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"`)
+}