mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			81 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
| package setting
 | |
| 
 | |
| import (
 | |
| 	"strconv"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/require"
 | |
| 	"gopkg.in/ini.v1"
 | |
| )
 | |
| 
 | |
| func TestFeatureToggles(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		name            string
 | |
| 		conf            map[string]string
 | |
| 		err             error
 | |
| 		expectedToggles map[string]bool
 | |
| 	}{
 | |
| 		{
 | |
| 			name: "can parse feature toggles passed in the `enable` array",
 | |
| 			conf: map[string]string{
 | |
| 				"enable": "feature1,feature2",
 | |
| 			},
 | |
| 			expectedToggles: map[string]bool{
 | |
| 				"feature1": true,
 | |
| 				"feature2": true,
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "can parse feature toggles listed under [feature_toggles]",
 | |
| 			conf: map[string]string{
 | |
| 				"enable":   "feature1,feature2",
 | |
| 				"feature3": "true",
 | |
| 			},
 | |
| 			expectedToggles: map[string]bool{
 | |
| 				"feature1": true,
 | |
| 				"feature2": true,
 | |
| 				"feature3": true,
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "toggles under [feature_toggles] overrides those in the array",
 | |
| 			conf: map[string]string{
 | |
| 				"enable":   "feature1,feature2",
 | |
| 				"feature2": "false",
 | |
| 			},
 | |
| 			expectedToggles: map[string]bool{
 | |
| 				"feature1": true,
 | |
| 				"feature2": false,
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "invalid boolean value should return syntax error",
 | |
| 			conf: map[string]string{
 | |
| 				"enable":   "feature1,feature2",
 | |
| 				"feature2": "invalid",
 | |
| 			},
 | |
| 			expectedToggles: map[string]bool{},
 | |
| 			err:             strconv.ErrSyntax,
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, tc := range testCases {
 | |
| 		f := ini.Empty()
 | |
| 
 | |
| 		toggles, _ := f.NewSection("feature_toggles")
 | |
| 		for k, v := range tc.conf {
 | |
| 			_, err := toggles.NewKey(k, v)
 | |
| 			require.ErrorIs(t, err, nil)
 | |
| 		}
 | |
| 
 | |
| 		featureToggles, err := ReadFeatureTogglesFromInitFile(toggles)
 | |
| 		require.ErrorIs(t, err, tc.err)
 | |
| 
 | |
| 		if err == nil {
 | |
| 			for k, v := range featureToggles {
 | |
| 				require.Equal(t, tc.expectedToggles[k], v, tc.name)
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |