github.com/anchore/syft@v1.38.2/syft/pkg/cataloger/php/interpreter_cataloger_test.go (about) 1 package php 2 3 import ( 4 "testing" 5 6 "github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest" 7 ) 8 9 func Test_InterpreterCataloger(t *testing.T) { 10 tests := []struct { 11 name string 12 fixture string 13 expectedPkgs []string 14 expectedRels []string 15 }{ 16 { 17 name: "native installation with extensions", 18 fixture: "image-extensions", 19 expectedPkgs: []string{ 20 // interpreters 21 "php-cli @ 8.3.27 (/usr/local/bin/php)", 22 "php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 23 24 // extensions 25 "bcmath @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so)", 26 "exif @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so)", 27 "ftp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so)", 28 "gd @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so)", 29 "gmp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so)", 30 "intl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so)", 31 "ldap @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so)", 32 "opcache @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so)", 33 "pcntl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so)", 34 "pdo_mysql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so)", 35 "pdo_pgsql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so)", 36 "sodium @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so)", 37 "sysvsem @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so)", 38 "zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so)", 39 }, 40 expectedRels: []string{ 41 "bcmath @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 42 "bcmath @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 43 "exif @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 44 "exif @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 45 "ftp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 46 "ftp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 47 "gd @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 48 "gd @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 49 "gmp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 50 "gmp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 51 "intl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 52 "intl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 53 "ldap @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 54 "ldap @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 55 "opcache @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 56 "opcache @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 57 "pcntl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 58 "pcntl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 59 "pdo_mysql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 60 "pdo_mysql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 61 "pdo_pgsql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 62 "pdo_pgsql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 63 "sodium @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 64 "sodium @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 65 "sysvsem @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 66 "sysvsem @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 67 "zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)", 68 "zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)", 69 }, 70 }, 71 { 72 name: "apache installation with libphp and extensions", 73 fixture: "image-apache", 74 expectedPkgs: []string{ 75 // interpreters 76 "libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 77 78 // extensions 79 "calendar @ 8.2.29 (/usr/lib/php/20220829/calendar.so)", 80 "ctype @ 8.2.29 (/usr/lib/php/20220829/ctype.so)", 81 "exif @ 8.2.29 (/usr/lib/php/20220829/exif.so)", 82 "ffi @ 8.2.29 (/usr/lib/php/20220829/ffi.so)", 83 "fileinfo @ 8.2.29 (/usr/lib/php/20220829/fileinfo.so)", 84 "ftp @ 8.2.29 (/usr/lib/php/20220829/ftp.so)", 85 "gettext @ 8.2.29 (/usr/lib/php/20220829/gettext.so)", 86 "iconv @ 8.2.29 (/usr/lib/php/20220829/iconv.so)", 87 "mysqli @ 8.2.29 (/usr/lib/php/20220829/mysqli.so)", 88 "opcache @ 8.2.29 (/usr/lib/php/20220829/opcache.so)", 89 "pdo @ 8.2.29 (/usr/lib/php/20220829/pdo.so)", 90 "pdo_mysql @ 8.2.29 (/usr/lib/php/20220829/pdo_mysql.so)", 91 "phar @ 8.2.29 (/usr/lib/php/20220829/phar.so)", 92 "posix @ 8.2.29 (/usr/lib/php/20220829/posix.so)", 93 "readline @ 8.2.29 (/usr/lib/php/20220829/readline.so)", 94 "shmop @ 8.2.29 (/usr/lib/php/20220829/shmop.so)", 95 "simplexml @ 8.2.29 (/usr/lib/php/20220829/simplexml.so)", 96 "sockets @ 8.2.29 (/usr/lib/php/20220829/sockets.so)", 97 "sysvmsg @ 8.2.29 (/usr/lib/php/20220829/sysvmsg.so)", 98 "sysvsem @ 8.2.29 (/usr/lib/php/20220829/sysvsem.so)", 99 "sysvshm @ 8.2.29 (/usr/lib/php/20220829/sysvshm.so)", 100 "tokenizer @ 8.2.29 (/usr/lib/php/20220829/tokenizer.so)", 101 "xml @ 8.2.29 (/usr/lib/php/20220829/xml.so)", 102 "xmlreader @ 8.2.29 (/usr/lib/php/20220829/xmlreader.so)", 103 "xmlwriter @ 8.2.29 (/usr/lib/php/20220829/xmlwriter.so)", 104 "xsl @ 8.2.29 (/usr/lib/php/20220829/xsl.so)", 105 }, 106 expectedRels: []string{ 107 "calendar @ 8.2.29 (/usr/lib/php/20220829/calendar.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 108 "ctype @ 8.2.29 (/usr/lib/php/20220829/ctype.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 109 "exif @ 8.2.29 (/usr/lib/php/20220829/exif.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 110 "ffi @ 8.2.29 (/usr/lib/php/20220829/ffi.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 111 "fileinfo @ 8.2.29 (/usr/lib/php/20220829/fileinfo.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 112 "ftp @ 8.2.29 (/usr/lib/php/20220829/ftp.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 113 "gettext @ 8.2.29 (/usr/lib/php/20220829/gettext.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 114 "iconv @ 8.2.29 (/usr/lib/php/20220829/iconv.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 115 "mysqli @ 8.2.29 (/usr/lib/php/20220829/mysqli.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 116 "opcache @ 8.2.29 (/usr/lib/php/20220829/opcache.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 117 "pdo @ 8.2.29 (/usr/lib/php/20220829/pdo.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 118 "pdo_mysql @ 8.2.29 (/usr/lib/php/20220829/pdo_mysql.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 119 "phar @ 8.2.29 (/usr/lib/php/20220829/phar.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 120 "posix @ 8.2.29 (/usr/lib/php/20220829/posix.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 121 "readline @ 8.2.29 (/usr/lib/php/20220829/readline.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 122 "shmop @ 8.2.29 (/usr/lib/php/20220829/shmop.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 123 "simplexml @ 8.2.29 (/usr/lib/php/20220829/simplexml.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 124 "sockets @ 8.2.29 (/usr/lib/php/20220829/sockets.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 125 "sysvmsg @ 8.2.29 (/usr/lib/php/20220829/sysvmsg.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 126 "sysvsem @ 8.2.29 (/usr/lib/php/20220829/sysvsem.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 127 "sysvshm @ 8.2.29 (/usr/lib/php/20220829/sysvshm.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 128 "tokenizer @ 8.2.29 (/usr/lib/php/20220829/tokenizer.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 129 "xml @ 8.2.29 (/usr/lib/php/20220829/xml.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 130 "xmlreader @ 8.2.29 (/usr/lib/php/20220829/xmlreader.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 131 "xmlwriter @ 8.2.29 (/usr/lib/php/20220829/xmlwriter.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 132 "xsl @ 8.2.29 (/usr/lib/php/20220829/xsl.so) [dependency-of] libphp @ 8.2.29 (/usr/lib/apache2/modules/libphp8.2.so)", 133 }, 134 }, 135 } 136 137 for _, tt := range tests { 138 t.Run(tt.name, func(t *testing.T) { 139 c := NewInterpreterCataloger() 140 pkgtest.NewCatalogTester(). 141 WithImageResolver(t, tt.fixture). 142 IgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change 143 //Expects(tt.expected, nil). 144 ExpectsPackageStrings(tt.expectedPkgs). 145 ExpectsRelationshipStrings(tt.expectedRels). 146 TestCataloger(t, c) 147 }) 148 } 149 }