-
Notifications
You must be signed in to change notification settings - Fork 174
Expand file tree
/
Copy pathreprocessor_test.go
More file actions
118 lines (89 loc) · 4.13 KB
/
reprocessor_test.go
File metadata and controls
118 lines (89 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//go:build sql_integration
package reprocessor
import (
"context"
"testing"
"time"
imageDatastore "github.com/stackrox/rox/central/image/datastore"
imagePostgresV2 "github.com/stackrox/rox/central/image/datastore/store/v2/postgres"
imageV2Datastore "github.com/stackrox/rox/central/imagev2/datastore"
imageV2PG "github.com/stackrox/rox/central/imagev2/datastore/store/postgres"
"github.com/stackrox/rox/central/ranking"
"github.com/stackrox/rox/generated/storage"
"github.com/stackrox/rox/pkg/concurrency"
"github.com/stackrox/rox/pkg/features"
"github.com/stackrox/rox/pkg/fixtures"
"github.com/stackrox/rox/pkg/images/utils"
"github.com/stackrox/rox/pkg/postgres/pgtest"
"github.com/stackrox/rox/pkg/protocompat"
"github.com/stackrox/rox/pkg/sac"
"github.com/stackrox/rox/pkg/testutils"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestImagesWithSignaturesQuery(t *testing.T) {
testutils.MustUpdateFeature(t, features.FlattenImageData, false)
testCtx := sac.WithAllAccess(context.Background())
testingDB := pgtest.ForT(t)
pool := testingDB.DB
defer pool.Close()
imageDS := imageDatastore.NewWithPostgres(imagePostgresV2.New(pool, false, concurrency.NewKeyFence()), nil, ranking.ImageRanker(), ranking.ComponentRanker())
imgWithSignature := fixtures.GetImage()
imgWithoutSignature := fixtures.GetImageWithUniqueComponents(10)
oneHourAgo := time.Now().Add(-1 * time.Hour)
oneMinuteAgo := time.Now().Add(-1 * time.Minute)
const imgWithSignatureID = "sha256:image-with-signature"
const imgWithoutSignatureID = "sha256:image-without-signature"
imgWithSignature.Id = imgWithSignatureID
imgWithSignature.Signature = &storage.ImageSignature{
Fetched: protocompat.ConvertTimeToTimestampOrNil(&oneHourAgo),
}
imgWithoutSignature.Id = imgWithoutSignatureID
require.NoError(t, imageDS.UpsertImage(testCtx, imgWithSignature))
require.NoError(t, imageDS.UpsertImage(testCtx, imgWithoutSignature))
results, err := imageDS.Search(testCtx, imagesWithSignaturesQuery)
assert.NoError(t, err)
require.Len(t, results, 1)
assert.Equal(t, results[0].ID, imgWithSignatureID)
imgWithSignature.Signature = &storage.ImageSignature{
Fetched: protocompat.ConvertTimeToTimestampOrNil(&oneMinuteAgo),
}
require.NoError(t, imageDS.UpsertImage(testCtx, imgWithSignature))
results, err = imageDS.Search(testCtx, imagesWithSignaturesQuery)
assert.NoError(t, err)
require.Len(t, results, 1)
assert.Equal(t, results[0].ID, imgWithSignatureID)
}
func TestImagesWithSignaturesQueryV2(t *testing.T) {
testutils.MustUpdateFeature(t, features.FlattenImageData, true)
testCtx := sac.WithAllAccess(context.Background())
testingDB := pgtest.ForT(t)
pool := testingDB.DB
defer pool.Close()
imageDS := imageV2Datastore.NewWithPostgres(imageV2PG.New(pool, false, concurrency.NewKeyFence()), nil, ranking.ImageRanker(), ranking.ComponentRanker())
imgWithSignature := fixtures.GetImageV2()
imgWithoutSignature := fixtures.GetImageV2WithUniqueComponents(10)
oneHourAgo := time.Now().Add(-1 * time.Hour)
oneMinuteAgo := time.Now().Add(-1 * time.Minute)
imgWithSignatureID := utils.NewImageV2ID(imgWithSignature.GetName(), "sha256:image-with-signature")
imgWithoutSignatureID := utils.NewImageV2ID(imgWithoutSignature.GetName(), "sha256:image-without-signature")
imgWithSignature.Id = imgWithSignatureID
imgWithSignature.Signature = &storage.ImageSignature{
Fetched: protocompat.ConvertTimeToTimestampOrNil(&oneHourAgo),
}
imgWithoutSignature.Id = imgWithoutSignatureID
require.NoError(t, imageDS.UpsertImage(testCtx, imgWithSignature))
require.NoError(t, imageDS.UpsertImage(testCtx, imgWithoutSignature))
results, err := imageDS.Search(testCtx, imagesWithSignaturesQuery)
assert.NoError(t, err)
require.Len(t, results, 1)
assert.Equal(t, results[0].ID, imgWithSignatureID)
imgWithSignature.Signature = &storage.ImageSignature{
Fetched: protocompat.ConvertTimeToTimestampOrNil(&oneMinuteAgo),
}
require.NoError(t, imageDS.UpsertImage(testCtx, imgWithSignature))
results, err = imageDS.Search(testCtx, imagesWithSignaturesQuery)
assert.NoError(t, err)
require.Len(t, results, 1)
assert.Equal(t, results[0].ID, imgWithSignatureID)
}