github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/erlang/erlang_parser_test.go (about) 1 package erlang 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func Test_parseErlang(t *testing.T) { 12 tests := []struct { 13 name string 14 content string 15 wantErr require.ErrorAssertionFunc 16 }{ 17 { 18 name: "basic valid content", 19 content: ` 20 {"1.2.0", 21 [{<<"bcrypt">>,{pkg,<<"bcrypt">>,<<"1.1.5">>},0}, 22 {<<"bson">>, 23 {git,"https://github.com/comtihon/bson-erlang", 24 {ref,"14308ab927cfa69324742c3de720578094e0bb19"}}, 25 1}, 26 {<<"syslog">>,{pkg,<<"syslog">>,<<"1.1.0">>},0}, 27 {<<"unicode_util_compat">>,{pkg,<<"unicode_util_compat">>,<<"0.7.0">>},1}, 28 {<<"vernemq_dev">>, 29 {git,"https://github.com/vernemq/vernemq_dev.git", 30 {ref,"6d622aa8c901ae7777433aef2bd049e380c474a6"}}, 31 0}] 32 }. 33 [ 34 {pkg_hash,[ 35 {<<"bcrypt">>, <<"A6763BD4E1AF46D34776F85B7995E63A02978DE110C077E9570ED17006E03386">>}, 36 {<<"unicode_util_compat">>, <<"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78">>}]}, 37 {pkg_hash_ext,[ 38 {<<"bcrypt">>, <<"3418821BC17CE6E96A4A77D1A88D7485BF783E212069FACFC79510AFBFF95352">>}, 39 {<<"unicode_util_compat">>, <<"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521">>}]} 40 ].`, 41 }, 42 { 43 name: "invalid string content", 44 wantErr: require.Error, 45 content: ` 46 {"1.2.0 47 ">>}, 48 ].`, 49 }, 50 { 51 name: "invalid content", 52 wantErr: require.Error, 53 content: ` 54 {"1.2.0"}. 55 ].`, 56 }, 57 } 58 59 for _, test := range tests { 60 t.Run(test.name, func(t *testing.T) { 61 value, err := parseErlang(bytes.NewReader([]byte(test.content))) 62 63 if test.wantErr == nil { 64 require.NoError(t, err) 65 } else { 66 test.wantErr(t, err) 67 } 68 69 assert.IsType(t, erlangNode{}, value) 70 }) 71 } 72 }