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