@@ -34,6 +34,12 @@ func TestCalculateDiagnostics(t *testing.T) {
34
34
End : protocol.Position {Line : 0 , Character : 18 },
35
35
},
36
36
Severity : types .CreateDiagnosticSeverityPointer (protocol .DiagnosticSeverityHint ),
37
+ Data : []types.NamedEdit {
38
+ {
39
+ Title : "Pin the base image digest" ,
40
+ Edit : "FROM alpine:3.16.1@sha256:7580ece7963bfa863801466c0a488f11c86f85d9988051a9f9c68cb27f6b7872" ,
41
+ },
42
+ },
37
43
},
38
44
{
39
45
Message : "The image contains 1 critical and 3 high vulnerabilities" ,
@@ -55,6 +61,76 @@ func TestCalculateDiagnostics(t *testing.T) {
55
61
End : protocol.Position {Line : 0 , Character : 18 },
56
62
},
57
63
Severity : types .CreateDiagnosticSeverityPointer (protocol .DiagnosticSeverityInformation ),
64
+ Data : []types.NamedEdit {
65
+ {
66
+ Title : "Update image to preferred tag (3.21.3)" ,
67
+ Edit : "FROM alpine:3.21.3" ,
68
+ },
69
+ {
70
+ Title : "Update image OS minor version (3.20.6)" ,
71
+ Edit : "FROM alpine:3.20.6" ,
72
+ },
73
+ {
74
+ Title : "Update image OS minor version (3.18.12)" ,
75
+ Edit : "FROM alpine:3.18.12" ,
76
+ },
77
+ },
78
+ },
79
+ },
80
+ },
81
+ {
82
+ name : "outdated alpine:3.16.1 with --platform flag" ,
83
+ content : "FROM --platform=$BUILDPLATFORM alpine:3.16.1" ,
84
+ diagnostics : []protocol.Diagnostic {
85
+ {
86
+ Message : "The image can be pinned to a digest" ,
87
+ Source : types .CreateStringPointer ("scout-testing-source" ),
88
+ Range : protocol.Range {
89
+ Start : protocol.Position {Line : 0 , Character : 0 },
90
+ End : protocol.Position {Line : 0 , Character : 44 },
91
+ },
92
+ Severity : types .CreateDiagnosticSeverityPointer (protocol .DiagnosticSeverityHint ),
93
+ Data : []types.NamedEdit {
94
+ {
95
+ Title : "Pin the base image digest" ,
96
+ Edit : "FROM --platform=$BUILDPLATFORM alpine:3.16.1@sha256:7580ece7963bfa863801466c0a488f11c86f85d9988051a9f9c68cb27f6b7872" ,
97
+ },
98
+ },
99
+ },
100
+ {
101
+ Message : "The image contains 1 critical and 3 high vulnerabilities" ,
102
+ Source : types .CreateStringPointer ("scout-testing-source" ),
103
+ CodeDescription : & protocol.CodeDescription {
104
+ HRef : "https://hub.docker.com/layers/library/alpine/3.16.1/images/sha256-9b2a28eb47540823042a2ba401386845089bb7b62a9637d55816132c4c3c36eb" ,
105
+ },
106
+ Range : protocol.Range {
107
+ Start : protocol.Position {Line : 0 , Character : 0 },
108
+ End : protocol.Position {Line : 0 , Character : 44 },
109
+ },
110
+ Severity : types .CreateDiagnosticSeverityPointer (protocol .DiagnosticSeverityWarning ),
111
+ },
112
+ {
113
+ Message : "Tag recommendations available" ,
114
+ Source : types .CreateStringPointer ("scout-testing-source" ),
115
+ Range : protocol.Range {
116
+ Start : protocol.Position {Line : 0 , Character : 0 },
117
+ End : protocol.Position {Line : 0 , Character : 44 },
118
+ },
119
+ Severity : types .CreateDiagnosticSeverityPointer (protocol .DiagnosticSeverityInformation ),
120
+ Data : []types.NamedEdit {
121
+ {
122
+ Title : "Update image to preferred tag (3.21.3)" ,
123
+ Edit : "FROM --platform=$BUILDPLATFORM alpine:3.21.3" ,
124
+ },
125
+ {
126
+ Title : "Update image OS minor version (3.20.6)" ,
127
+ Edit : "FROM --platform=$BUILDPLATFORM alpine:3.20.6" ,
128
+ },
129
+ {
130
+ Title : "Update image OS minor version (3.18.12)" ,
131
+ Edit : "FROM --platform=$BUILDPLATFORM alpine:3.18.12" ,
132
+ },
133
+ },
58
134
},
59
135
},
60
136
},
@@ -116,6 +192,7 @@ func TestCalculateDiagnostics(t *testing.T) {
116
192
require .Equal (t , expectedDiagnostic .Severity , diagnostic .Severity )
117
193
require .Equal (t , expectedDiagnostic .Source , diagnostic .Source )
118
194
require .Equal (t , expectedDiagnostic .CodeDescription , diagnostic .CodeDescription )
195
+ require .Equal (t , expectedDiagnostic .Data , diagnostic .Data )
119
196
found = true
120
197
break
121
198
}
0 commit comments