mirror of
				https://github.com/go-gitea/gitea
				synced 2025-09-28 03:28:13 +00:00 
			
		
		
		
	There are too many files in `models/migrations` folder so that I split them into sub folders.
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2021 The Gitea 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 v1_16 //nolint
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"code.gitea.io/gitea/models/migrations/base"
 | |
| 	"code.gitea.io/gitea/modules/json"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| // LoginSource represents an external way for authorizing users.
 | |
| type LoginSourceOriginalV189 struct {
 | |
| 	ID        int64 `xorm:"pk autoincr"`
 | |
| 	Type      int
 | |
| 	IsActived bool   `xorm:"INDEX NOT NULL DEFAULT false"`
 | |
| 	Cfg       string `xorm:"TEXT"`
 | |
| 	Expected  string `xorm:"TEXT"`
 | |
| }
 | |
| 
 | |
| func (ls *LoginSourceOriginalV189) TableName() string {
 | |
| 	return "login_source"
 | |
| }
 | |
| 
 | |
| func Test_UnwrapLDAPSourceCfg(t *testing.T) {
 | |
| 	// Prepare and load the testing database
 | |
| 	x, deferable := base.PrepareTestEnv(t, 0, new(LoginSourceOriginalV189))
 | |
| 	if x == nil || t.Failed() {
 | |
| 		defer deferable()
 | |
| 		return
 | |
| 	}
 | |
| 	defer deferable()
 | |
| 
 | |
| 	// LoginSource represents an external way for authorizing users.
 | |
| 	type LoginSource struct {
 | |
| 		ID       int64 `xorm:"pk autoincr"`
 | |
| 		Type     int
 | |
| 		IsActive bool   `xorm:"INDEX NOT NULL DEFAULT false"`
 | |
| 		Cfg      string `xorm:"TEXT"`
 | |
| 		Expected string `xorm:"TEXT"`
 | |
| 	}
 | |
| 
 | |
| 	// Run the migration
 | |
| 	if err := UnwrapLDAPSourceCfg(x); err != nil {
 | |
| 		assert.NoError(t, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	const batchSize = 100
 | |
| 	for start := 0; ; start += batchSize {
 | |
| 		sources := make([]*LoginSource, 0, batchSize)
 | |
| 		if err := x.Table("login_source").Limit(batchSize, start).Find(&sources); err != nil {
 | |
| 			assert.NoError(t, err)
 | |
| 			return
 | |
| 		}
 | |
| 
 | |
| 		if len(sources) == 0 {
 | |
| 			break
 | |
| 		}
 | |
| 
 | |
| 		for _, source := range sources {
 | |
| 			converted := map[string]interface{}{}
 | |
| 			expected := map[string]interface{}{}
 | |
| 
 | |
| 			if err := json.Unmarshal([]byte(source.Cfg), &converted); err != nil {
 | |
| 				assert.NoError(t, err)
 | |
| 				return
 | |
| 			}
 | |
| 
 | |
| 			if err := json.Unmarshal([]byte(source.Expected), &expected); err != nil {
 | |
| 				assert.NoError(t, err)
 | |
| 				return
 | |
| 			}
 | |
| 
 | |
| 			assert.EqualValues(t, expected, converted, "UnwrapLDAPSourceCfg failed for %d", source.ID)
 | |
| 			assert.EqualValues(t, source.ID%2 == 0, source.IsActive, "UnwrapLDAPSourceCfg failed for %d", source.ID)
 | |
| 		}
 | |
| 	}
 | |
| }
 |