mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
* fix: Show error messages on fatal failures #32 * test: Add E2E test * test: fix E2E scripts * test: fix E2E scripts * fix: Race condition in concurrent analyzer * fix: update formatting to ensure docs URL is clickable Signed-off-by: Sahil Bansal <bansalsahil315@gmail.com> * fix: E2E test --------- Signed-off-by: Sahil Bansal <bansalsahil315@gmail.com> Co-authored-by: Sahil Bansal <bansalsahil315@gmail.com>
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package guard
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
packagev1 "buf.build/gen/go/safedep/api/protocolbuffers/go/safedep/messages/package/v1"
|
|
"github.com/safedep/pmg/analyzer"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGuardConcurrentlyAnalyzePackagesMalwareQueryService(t *testing.T) {
|
|
mq, err := analyzer.NewMalysisQueryAnalyzer(analyzer.MalysisQueryAnalyzerConfig{})
|
|
if err != nil {
|
|
t.Fatalf("failed to create mq: %v", err)
|
|
}
|
|
|
|
pg, err := NewPackageManagerGuard(DefaultPackageManagerGuardConfig(), nil, nil,
|
|
[]analyzer.PackageVersionAnalyzer{mq}, PackageManagerGuardInteraction{})
|
|
if err != nil {
|
|
t.Fatalf("failed to create pg: %v", err)
|
|
}
|
|
|
|
t.Run("should resolve a single known malicious package version", func(t *testing.T) {
|
|
r, err := pg.concurrentAnalyzePackages(context.Background(), []*packagev1.PackageVersion{
|
|
{
|
|
Package: &packagev1.Package{
|
|
Name: "nyc-config",
|
|
Ecosystem: packagev1.Ecosystem_ECOSYSTEM_NPM,
|
|
},
|
|
Version: "10.0.0",
|
|
},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("failed to analyze packages: %v", err)
|
|
}
|
|
|
|
assert.Equal(t, 1, len(r))
|
|
assert.Equal(t, "nyc-config", r[0].PackageVersion.GetPackage().GetName())
|
|
assert.Equal(t, "10.0.0", r[0].PackageVersion.GetVersion())
|
|
assert.Equal(t, packagev1.Ecosystem_ECOSYSTEM_NPM, r[0].PackageVersion.GetPackage().GetEcosystem())
|
|
assert.NotEmpty(t, r[0].ReferenceURL)
|
|
assert.NotEmpty(t, r[0].Summary)
|
|
assert.NotNil(t, r[0].Data)
|
|
assert.Equal(t, analyzer.ActionBlock, r[0].Action)
|
|
})
|
|
}
|