github.com/astaxie/beego@v1.12.3/config_test.go (about)

     1  // Copyright 2014 beego Author. All Rights Reserved.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package beego
    16  
    17  import (
    18  	"encoding/json"
    19  	"reflect"
    20  	"testing"
    21  
    22  	"github.com/astaxie/beego/config"
    23  )
    24  
    25  func TestDefaults(t *testing.T) {
    26  	if BConfig.WebConfig.FlashName != "BEEGO_FLASH" {
    27  		t.Errorf("FlashName was not set to default.")
    28  	}
    29  
    30  	if BConfig.WebConfig.FlashSeparator != "BEEGOFLASH" {
    31  		t.Errorf("FlashName was not set to default.")
    32  	}
    33  }
    34  
    35  func TestAssignConfig_01(t *testing.T) {
    36  	_BConfig := &Config{}
    37  	_BConfig.AppName = "beego_test"
    38  	jcf := &config.JSONConfig{}
    39  	ac, _ := jcf.ParseData([]byte(`{"AppName":"beego_json"}`))
    40  	assignSingleConfig(_BConfig, ac)
    41  	if _BConfig.AppName != "beego_json" {
    42  		t.Log(_BConfig)
    43  		t.FailNow()
    44  	}
    45  }
    46  
    47  func TestAssignConfig_02(t *testing.T) {
    48  	_BConfig := &Config{}
    49  	bs, _ := json.Marshal(newBConfig())
    50  
    51  	jsonMap := M{}
    52  	json.Unmarshal(bs, &jsonMap)
    53  
    54  	configMap := M{}
    55  	for k, v := range jsonMap {
    56  		if reflect.TypeOf(v).Kind() == reflect.Map {
    57  			for k1, v1 := range v.(M) {
    58  				if reflect.TypeOf(v1).Kind() == reflect.Map {
    59  					for k2, v2 := range v1.(M) {
    60  						configMap[k2] = v2
    61  					}
    62  				} else {
    63  					configMap[k1] = v1
    64  				}
    65  			}
    66  		} else {
    67  			configMap[k] = v
    68  		}
    69  	}
    70  	configMap["MaxMemory"] = 1024
    71  	configMap["Graceful"] = true
    72  	configMap["XSRFExpire"] = 32
    73  	configMap["SessionProviderConfig"] = "file"
    74  	configMap["FileLineNum"] = true
    75  
    76  	jcf := &config.JSONConfig{}
    77  	bs, _ = json.Marshal(configMap)
    78  	ac, _ := jcf.ParseData(bs)
    79  
    80  	for _, i := range []interface{}{_BConfig, &_BConfig.Listen, &_BConfig.WebConfig, &_BConfig.Log, &_BConfig.WebConfig.Session} {
    81  		assignSingleConfig(i, ac)
    82  	}
    83  
    84  	if _BConfig.MaxMemory != 1024 {
    85  		t.Log(_BConfig.MaxMemory)
    86  		t.FailNow()
    87  	}
    88  
    89  	if !_BConfig.Listen.Graceful {
    90  		t.Log(_BConfig.Listen.Graceful)
    91  		t.FailNow()
    92  	}
    93  
    94  	if _BConfig.WebConfig.XSRFExpire != 32 {
    95  		t.Log(_BConfig.WebConfig.XSRFExpire)
    96  		t.FailNow()
    97  	}
    98  
    99  	if _BConfig.WebConfig.Session.SessionProviderConfig != "file" {
   100  		t.Log(_BConfig.WebConfig.Session.SessionProviderConfig)
   101  		t.FailNow()
   102  	}
   103  
   104  	if !_BConfig.Log.FileLineNum {
   105  		t.Log(_BConfig.Log.FileLineNum)
   106  		t.FailNow()
   107  	}
   108  
   109  }
   110  
   111  func TestAssignConfig_03(t *testing.T) {
   112  	jcf := &config.JSONConfig{}
   113  	ac, _ := jcf.ParseData([]byte(`{"AppName":"beego"}`))
   114  	ac.Set("AppName", "test_app")
   115  	ac.Set("RunMode", "online")
   116  	ac.Set("StaticDir", "download:down download2:down2")
   117  	ac.Set("StaticExtensionsToGzip", ".css,.js,.html,.jpg,.png")
   118  	ac.Set("StaticCacheFileSize", "87456")
   119  	ac.Set("StaticCacheFileNum", "1254")
   120  	assignConfig(ac)
   121  
   122  	t.Logf("%#v", BConfig)
   123  
   124  	if BConfig.AppName != "test_app" {
   125  		t.FailNow()
   126  	}
   127  
   128  	if BConfig.RunMode != "online" {
   129  		t.FailNow()
   130  	}
   131  	if BConfig.WebConfig.StaticDir["/download"] != "down" {
   132  		t.FailNow()
   133  	}
   134  	if BConfig.WebConfig.StaticDir["/download2"] != "down2" {
   135  		t.FailNow()
   136  	}
   137  	if BConfig.WebConfig.StaticCacheFileSize != 87456 {
   138  		t.FailNow()
   139  	}
   140  	if BConfig.WebConfig.StaticCacheFileNum != 1254 {
   141  		t.FailNow()
   142  	}
   143  	if len(BConfig.WebConfig.StaticExtensionsToGzip) != 5 {
   144  		t.FailNow()
   145  	}
   146  }