github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/php/parse_composer_lock_test.go (about)

     1  package php
     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 TestParseComposerFileLock(t *testing.T) {
    13  	var expectedRelationships []artifact.Relationship
    14  	fixture := "test-fixtures/composer.lock"
    15  	locations := file.NewLocationSet(file.NewLocation(fixture))
    16  	expectedPkgs := []pkg.Package{
    17  		{
    18  			Name:      "adoy/fastcgi-client",
    19  			Version:   "1.0.2",
    20  			PURL:      "pkg:composer/adoy/fastcgi-client@1.0.2",
    21  			Locations: locations,
    22  			Licenses: pkg.NewLicenseSet(
    23  				pkg.NewLicenseFromLocations("MIT", file.NewLocation(fixture)),
    24  			),
    25  			Language:     pkg.PHP,
    26  			Type:         pkg.PhpComposerPkg,
    27  			MetadataType: pkg.PhpComposerJSONMetadataType,
    28  			Metadata: pkg.PhpComposerJSONMetadata{
    29  				Name:    "adoy/fastcgi-client",
    30  				Version: "1.0.2",
    31  				Source: pkg.PhpComposerExternalReference{
    32  					Type:      "git",
    33  					URL:       "https://github.com/adoy/PHP-FastCGI-Client.git",
    34  					Reference: "6d9a552f0206a1db7feb442824540aa6c55e5b27",
    35  				},
    36  				Dist: pkg.PhpComposerExternalReference{
    37  					Type:      "zip",
    38  					URL:       "https://api.github.com/repos/adoy/PHP-FastCGI-Client/zipball/6d9a552f0206a1db7feb442824540aa6c55e5b27",
    39  					Reference: "6d9a552f0206a1db7feb442824540aa6c55e5b27",
    40  				},
    41  				Type:            "library",
    42  				NotificationURL: "https://packagist.org/downloads/",
    43  				Authors: []pkg.PhpComposerAuthors{
    44  					{
    45  						Name:  "Pierrick Charron",
    46  						Email: "pierrick@adoy.net",
    47  					},
    48  				},
    49  				Description: "Lightweight, single file FastCGI client for PHP.",
    50  				Keywords: []string{
    51  					"fastcgi",
    52  					"fcgi",
    53  				},
    54  				Time: "2019-12-11T13:49:21+00:00",
    55  			},
    56  		},
    57  		{
    58  			Name:      "alcaeus/mongo-php-adapter",
    59  			Version:   "1.1.11",
    60  			Locations: locations,
    61  			PURL:      "pkg:composer/alcaeus/mongo-php-adapter@1.1.11",
    62  			Language:  pkg.PHP,
    63  			Licenses: pkg.NewLicenseSet(
    64  				pkg.NewLicenseFromLocations("MIT", file.NewLocation(fixture)),
    65  			),
    66  			Type:         pkg.PhpComposerPkg,
    67  			MetadataType: pkg.PhpComposerJSONMetadataType,
    68  			Metadata: pkg.PhpComposerJSONMetadata{
    69  				Name:    "alcaeus/mongo-php-adapter",
    70  				Version: "1.1.11",
    71  				Source: pkg.PhpComposerExternalReference{
    72  					Type:      "git",
    73  					URL:       "https://github.com/alcaeus/mongo-php-adapter.git",
    74  					Reference: "43b6add94c8b4cb9890d662cba4c0defde733dcf",
    75  				},
    76  				Dist: pkg.PhpComposerExternalReference{
    77  					Type:      "zip",
    78  					URL:       "https://api.github.com/repos/alcaeus/mongo-php-adapter/zipball/43b6add94c8b4cb9890d662cba4c0defde733dcf",
    79  					Reference: "43b6add94c8b4cb9890d662cba4c0defde733dcf",
    80  				},
    81  				Require: map[string]string{
    82  					"ext-ctype":       "*",
    83  					"ext-hash":        "*",
    84  					"ext-mongodb":     "^1.2.0",
    85  					"mongodb/mongodb": "^1.0.1",
    86  					"php":             "^5.6 || ^7.0",
    87  				},
    88  				Provide: map[string]string{
    89  					"ext-mongo": "1.6.14",
    90  				},
    91  				RequireDev: map[string]string{
    92  					"phpunit/phpunit":           "^5.7.27 || ^6.0 || ^7.0",
    93  					"squizlabs/php_codesniffer": "^3.2",
    94  				},
    95  				Type:            "library",
    96  				NotificationURL: "https://packagist.org/downloads/",
    97  				Authors: []pkg.PhpComposerAuthors{
    98  					{
    99  						Name:  "alcaeus",
   100  						Email: "alcaeus@alcaeus.org",
   101  					},
   102  					{
   103  						Name:  "Olivier Lechevalier",
   104  						Email: "olivier.lechevalier@gmail.com",
   105  					},
   106  				},
   107  				Description: "Adapter to provide ext-mongo interface on top of mongo-php-libary",
   108  				Keywords: []string{
   109  					"database",
   110  					"mongodb",
   111  				},
   112  				Time: "2019-11-11T20:47:32+00:00",
   113  			},
   114  		},
   115  	}
   116  	pkgtest.TestFileParser(t, fixture, parseComposerLock, expectedPkgs, expectedRelationships)
   117  }