github.com/safing/portbase@v0.19.5/config/persistence_test.go (about) 1 package config 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "testing" 7 ) 8 9 var ( 10 jsonData = `{ 11 "a": "b", 12 "c": { 13 "d": "e", 14 "f": "g", 15 "h": { 16 "i": "j", 17 "k": "l", 18 "m": { 19 "n": "o" 20 } 21 } 22 }, 23 "p": "q" 24 }` 25 jsonBytes = []byte(jsonData) 26 27 mapData = map[string]interface{}{ 28 "a": "b", 29 "p": "q", 30 "c/d": "e", 31 "c/f": "g", 32 "c/h/i": "j", 33 "c/h/k": "l", 34 "c/h/m/n": "o", 35 } 36 ) 37 38 func TestJSONMapConversion(t *testing.T) { 39 t.Parallel() 40 41 // convert to json 42 j, err := MapToJSON(mapData) 43 if err != nil { 44 t.Fatal(err) 45 } 46 47 // check if to json matches 48 if !bytes.Equal(jsonBytes, j) { 49 t.Errorf("json does not match, got %s", j) 50 } 51 52 // convert to map 53 m, err := JSONToMap(jsonBytes) 54 if err != nil { 55 t.Fatal(err) 56 } 57 58 // and back 59 j2, err := MapToJSON(m) 60 if err != nil { 61 t.Fatal(err) 62 } 63 64 // check if double convert matches 65 if !bytes.Equal(jsonBytes, j2) { 66 t.Errorf("json does not match, got %s", j) 67 } 68 } 69 70 func TestConfigCleaning(t *testing.T) { 71 t.Parallel() 72 73 // load 74 configFlat, err := JSONToMap(jsonBytes) 75 if err != nil { 76 t.Fatal(err) 77 } 78 79 // clean everything 80 CleanFlattenedConfig(configFlat) 81 if len(configFlat) != 0 { 82 t.Errorf("should be empty: %+v", configFlat) 83 } 84 85 // load manuall for hierarchical config 86 configHier := make(map[string]interface{}) 87 err = json.Unmarshal(jsonBytes, &configHier) 88 if err != nil { 89 t.Fatal(err) 90 } 91 92 // clean everything 93 CleanHierarchicalConfig(configHier) 94 if len(configHier) != 0 { 95 t.Errorf("should be empty: %+v", configHier) 96 } 97 }