github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/erlang/parse_rebar_lock_test.go (about) 1 package erlang 2 3 import ( 4 "testing" 5 6 "github.com/anchore/syft/syft/artifact" 7 "github.com/anchore/syft/syft/file" 8 "github.com/anchore/syft/syft/pkg" 9 "github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest" 10 ) 11 12 func TestParseRebarLock(t *testing.T) { 13 tests := []struct { 14 fixture string 15 expected []pkg.Package 16 }{ 17 { 18 fixture: "test-fixtures/rebar.lock", 19 expected: []pkg.Package{ 20 { 21 Name: "certifi", 22 Version: "2.9.0", 23 Language: pkg.Erlang, 24 Type: pkg.HexPkg, 25 PURL: "pkg:hex/certifi@2.9.0", 26 MetadataType: pkg.RebarLockMetadataType, 27 Metadata: pkg.RebarLockMetadata{ 28 Name: "certifi", 29 Version: "2.9.0", 30 PkgHash: "6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21", 31 PkgHashExt: "266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641", 32 }, 33 }, 34 { 35 Name: "idna", 36 Version: "6.1.1", 37 Language: pkg.Erlang, 38 Type: pkg.HexPkg, 39 PURL: "pkg:hex/idna@6.1.1", 40 MetadataType: pkg.RebarLockMetadataType, 41 Metadata: pkg.RebarLockMetadata{ 42 Name: "idna", 43 Version: "6.1.1", 44 PkgHash: "8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D", 45 PkgHashExt: "92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA", 46 }, 47 }, 48 { 49 Name: "metrics", 50 Version: "1.0.1", 51 Language: pkg.Erlang, 52 Type: pkg.HexPkg, 53 PURL: "pkg:hex/metrics@1.0.1", 54 MetadataType: pkg.RebarLockMetadataType, 55 Metadata: pkg.RebarLockMetadata{ 56 Name: "metrics", 57 Version: "1.0.1", 58 PkgHash: "25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486", 59 PkgHashExt: "69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16", 60 }, 61 }, 62 { 63 Name: "mimerl", 64 Version: "1.2.0", 65 Language: pkg.Erlang, 66 Type: pkg.HexPkg, 67 PURL: "pkg:hex/mimerl@1.2.0", 68 MetadataType: pkg.RebarLockMetadataType, 69 Metadata: pkg.RebarLockMetadata{ 70 Name: "mimerl", 71 Version: "1.2.0", 72 PkgHash: "67E2D3F571088D5CFD3E550C383094B47159F3EEE8FFA08E64106CDF5E981BE3", 73 PkgHashExt: "F278585650AA581986264638EBF698F8BB19DF297F66AD91B18910DFC6E19323", 74 }, 75 }, 76 { 77 Name: "parse_trans", 78 Version: "3.3.1", 79 Language: pkg.Erlang, 80 Type: pkg.HexPkg, 81 PURL: "pkg:hex/parse_trans@3.3.1", 82 MetadataType: pkg.RebarLockMetadataType, 83 Metadata: pkg.RebarLockMetadata{ 84 Name: "parse_trans", 85 Version: "3.3.1", 86 PkgHash: "16328AB840CC09919BD10DAB29E431DA3AF9E9E7E7E6F0089DD5A2D2820011D8", 87 PkgHashExt: "07CD9577885F56362D414E8C4C4E6BDF10D43A8767ABB92D24CBE8B24C54888B", 88 }, 89 }, 90 { 91 Name: "ssl_verify_fun", 92 Version: "1.1.6", 93 Language: pkg.Erlang, 94 Type: pkg.HexPkg, 95 PURL: "pkg:hex/ssl_verify_fun@1.1.6", 96 MetadataType: pkg.RebarLockMetadataType, 97 Metadata: pkg.RebarLockMetadata{ 98 Name: "ssl_verify_fun", 99 Version: "1.1.6", 100 PkgHash: "CF344F5692C82D2CD7554F5EC8FD961548D4FD09E7D22F5B62482E5AEAEBD4B0", 101 PkgHashExt: "BDB0D2471F453C88FF3908E7686F86F9BE327D065CC1EC16FA4540197EA04680", 102 }, 103 }, 104 { 105 Name: "unicode_util_compat", 106 Version: "0.7.0", 107 Language: pkg.Erlang, 108 Type: pkg.HexPkg, 109 PURL: "pkg:hex/unicode_util_compat@0.7.0", 110 MetadataType: pkg.RebarLockMetadataType, 111 Metadata: pkg.RebarLockMetadata{ 112 Name: "unicode_util_compat", 113 Version: "0.7.0", 114 PkgHash: "BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78", 115 PkgHashExt: "25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521", 116 }, 117 }, 118 }, 119 }, 120 { 121 fixture: "test-fixtures/rebar-2.lock", 122 expected: []pkg.Package{ 123 //[{<<"bcrypt">>,{pkg,<<"bcrypt">>,<<"1.1.5">>},0}, 124 // {<<"bcrypt">>, <<"A6763BD4E1AF46D34776F85B7995E63A02978DE110C077E9570ED17006E03386">>}, 125 // {<<"bcrypt">>, <<"3418821BC17CE6E96A4A77D1A88D7485BF783E212069FACFC79510AFBFF95352">>}, 126 { 127 Name: "bcrypt", 128 Version: "1.1.5", 129 Language: pkg.Erlang, 130 Type: pkg.HexPkg, 131 PURL: "pkg:hex/bcrypt@1.1.5", 132 MetadataType: pkg.RebarLockMetadataType, 133 Metadata: pkg.RebarLockMetadata{ 134 Name: "bcrypt", 135 Version: "1.1.5", 136 PkgHash: "A6763BD4E1AF46D34776F85B7995E63A02978DE110C077E9570ED17006E03386", 137 PkgHashExt: "3418821BC17CE6E96A4A77D1A88D7485BF783E212069FACFC79510AFBFF95352", 138 }, 139 }, 140 // {<<"bson">>, 141 // {git,"https://github.com/comtihon/bson-erlang", 142 // {ref,"14308ab927cfa69324742c3de720578094e0bb19"}}, 143 // 1}, 144 { 145 Name: "bson", 146 Version: "14308ab927cfa69324742c3de720578094e0bb19", 147 Language: pkg.Erlang, 148 Type: pkg.HexPkg, 149 PURL: "pkg:hex/bson@14308ab927cfa69324742c3de720578094e0bb19", 150 MetadataType: pkg.RebarLockMetadataType, 151 Metadata: pkg.RebarLockMetadata{ 152 Name: "bson", 153 Version: "14308ab927cfa69324742c3de720578094e0bb19", 154 }, 155 }, 156 // {<<"certifi">>,{pkg,<<"certifi">>,<<"2.9.0">>},1}, 157 // {<<"certifi">>, <<"6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21">>}, {<<"stdout_formatter">>, <<"EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A">>}, 158 // {<<"certifi">>, <<"266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641">>}, 159 { 160 Name: "certifi", 161 Version: "2.9.0", 162 Language: pkg.Erlang, 163 Type: pkg.HexPkg, 164 PURL: "pkg:hex/certifi@2.9.0", 165 MetadataType: pkg.RebarLockMetadataType, 166 Metadata: pkg.RebarLockMetadata{ 167 Name: "certifi", 168 Version: "2.9.0", 169 PkgHash: "6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21", 170 PkgHashExt: "266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641", 171 }, 172 }, 173 // {<<"stdout_formatter">>,{pkg,<<"stdout_formatter">>,<<"0.2.3">>},0}, 174 // {<<"stdout_formatter">>, <<"EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A">>}, 175 // {<<"stdout_formatter">>, <<"6B9CAAD8930006F9BB35680C5D3311917AC67690C3AF1BA018623324C015ABE5">>}, 176 { 177 Name: "stdout_formatter", 178 Version: "0.2.3", 179 Language: pkg.Erlang, 180 Type: pkg.HexPkg, 181 PURL: "pkg:hex/stdout_formatter@0.2.3", 182 MetadataType: pkg.RebarLockMetadataType, 183 Metadata: pkg.RebarLockMetadata{ 184 Name: "stdout_formatter", 185 Version: "0.2.3", 186 PkgHash: "EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A", 187 PkgHashExt: "6B9CAAD8930006F9BB35680C5D3311917AC67690C3AF1BA018623324C015ABE5", 188 }, 189 }, 190 // {<<"swc">>, 191 // {git,"https://github.com/vernemq/ServerWideClocks.git", 192 // {ref,"4835239dca5a5f4ac7202dd94d7effcaa617d575"}}, 193 // 0}, 194 { 195 Name: "swc", 196 Version: "4835239dca5a5f4ac7202dd94d7effcaa617d575", 197 Language: pkg.Erlang, 198 Type: pkg.HexPkg, 199 PURL: "pkg:hex/swc@4835239dca5a5f4ac7202dd94d7effcaa617d575", 200 MetadataType: pkg.RebarLockMetadataType, 201 Metadata: pkg.RebarLockMetadata{ 202 Name: "swc", 203 Version: "4835239dca5a5f4ac7202dd94d7effcaa617d575", 204 }, 205 }, 206 // {<<"syslog">>,{pkg,<<"syslog">>,<<"1.1.0">>},0}, 207 // {<<"syslog">>, <<"6419A232BEA84F07B56DC575225007FFE34D9FDC91ABE6F1B2F254FD71D8EFC2">>}, 208 // {<<"syslog">>, <<"4C6A41373C7E20587BE33EF841D3DE6F3BEBA08519809329ECC4D27B15B659E1">>}, 209 { 210 Name: "syslog", 211 Version: "1.1.0", 212 Language: pkg.Erlang, 213 Type: pkg.HexPkg, 214 PURL: "pkg:hex/syslog@1.1.0", 215 MetadataType: pkg.RebarLockMetadataType, 216 Metadata: pkg.RebarLockMetadata{ 217 Name: "syslog", 218 Version: "1.1.0", 219 PkgHash: "6419A232BEA84F07B56DC575225007FFE34D9FDC91ABE6F1B2F254FD71D8EFC2", 220 PkgHashExt: "4C6A41373C7E20587BE33EF841D3DE6F3BEBA08519809329ECC4D27B15B659E1", 221 }, 222 }, 223 // {<<"unicode_util_compat">>,{pkg,<<"unicode_util_compat">>,<<"0.7.0">>},1}, 224 // {<<"unicode_util_compat">>, <<"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78">>}]}, 225 // {<<"unicode_util_compat">>, <<"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521">>}]} 226 { 227 Name: "unicode_util_compat", 228 Version: "0.7.0", 229 Language: pkg.Erlang, 230 Type: pkg.HexPkg, 231 PURL: "pkg:hex/unicode_util_compat@0.7.0", 232 MetadataType: pkg.RebarLockMetadataType, 233 Metadata: pkg.RebarLockMetadata{ 234 Name: "unicode_util_compat", 235 Version: "0.7.0", 236 PkgHash: "BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78", 237 PkgHashExt: "25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521", 238 }, 239 }, 240 // {<<"vernemq_dev">>, 241 // {git,"https://github.com/vernemq/vernemq_dev.git", 242 // {ref,"6d622aa8c901ae7777433aef2bd049e380c474a6"}}, 243 // 0}]}. 244 { 245 Name: "vernemq_dev", 246 Version: "6d622aa8c901ae7777433aef2bd049e380c474a6", 247 Language: pkg.Erlang, 248 Type: pkg.HexPkg, 249 PURL: "pkg:hex/vernemq_dev@6d622aa8c901ae7777433aef2bd049e380c474a6", 250 MetadataType: pkg.RebarLockMetadataType, 251 Metadata: pkg.RebarLockMetadata{ 252 Name: "vernemq_dev", 253 Version: "6d622aa8c901ae7777433aef2bd049e380c474a6", 254 }, 255 }, 256 }, 257 }, 258 } 259 260 for _, test := range tests { 261 t.Run(test.fixture, func(t *testing.T) { 262 // TODO: relationships are not under test 263 var expectedRelationships []artifact.Relationship 264 265 for idx := range test.expected { 266 test.expected[idx].Locations = file.NewLocationSet(file.NewLocation(test.fixture)) 267 } 268 269 pkgtest.TestFileParser(t, test.fixture, parseRebarLock, test.expected, expectedRelationships) 270 }) 271 } 272 }