github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/utils/parser/unsafe_test.go (about) 1 package parser 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/lmorg/murex/test/count" 8 "github.com/lmorg/murex/utils/json" 9 ) 10 11 func TestIsCmdUnsafe(t *testing.T) { 12 trues := []string{">", ">>", "$var", "@g", "rm"} 13 falses := append(safeCmds, 14 "open", "regexp", "match", 15 "cast", "format", "[", "[[", 16 "runtime", 17 ) 18 19 count.Tests(t, len(trues)+len(falses)) 20 21 for i := range trues { 22 v := isCmdUnsafe(trues[i]) 23 if v != true { 24 t.Errorf("Returned `%s` expected `%s`: '%s'", "false", "true", trues[i]) 25 } 26 } 27 28 for i := range falses { 29 v := isCmdUnsafe(falses[i]) 30 if v != false { 31 t.Errorf("Returned `%s` expected `%s`: '%s'", "true", "false", falses[i]) 32 } 33 } 34 } 35 36 func TestReadSafeCmds(t *testing.T) { 37 count.Tests(t, 1) 38 39 v, err := ReadSafeCmds() 40 if err != nil { 41 t.Error(err.Error()) 42 } 43 44 switch v.(type) { 45 case []string: 46 // success 47 default: 48 t.Errorf("incorrect type. Should be a []string") 49 } 50 } 51 52 func TestWriteSafeCmds(t *testing.T) { 53 count.Tests(t, 5) 54 55 safeCmdsDefault := make([]string, len(safeCmds)) 56 copy(safeCmdsDefault, safeCmds) 57 defer copy(safeCmds, safeCmdsDefault) 58 59 var v interface{} 60 61 v = 13 62 err := WriteSafeCmds(v) 63 if err == nil || !strings.Contains(err.Error(), "invalid data-type") { 64 t.Error("invalid data-type accepted:", err) 65 } 66 67 v = []string{"foo", "bar"} 68 err = WriteSafeCmds(v) 69 if err == nil || !strings.Contains(err.Error(), "invalid data-type") { 70 t.Error("invalid data-type accepted:", err) 71 } 72 73 v = "foobar" 74 err = WriteSafeCmds(v) 75 if err == nil { 76 t.Error("value not marshalled as JSON:", err) 77 } 78 79 v = `{"foo": "bar"}` 80 err = WriteSafeCmds(v) 81 if err == nil { 82 t.Error("invalid JSON object accepted:", err) 83 } 84 85 v = `["foo"]` 86 err = WriteSafeCmds(v) 87 if err != nil { 88 t.Error("JSON object should have be valid:", err) 89 } 90 if len(safeCmds) != 1 || safeCmds[0] != "foo" { 91 t.Errorf("safeCmds incorrectly set: %s", json.LazyLogging(safeCmds)) 92 } 93 }