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  }