@@ -1082,6 +1082,101 @@ func TestFilterCPEsByVersion(t *testing.T) {
1082
1082
}
1083
1083
}
1084
1084
1085
+ func TestCombineVersionAndUpdate (t * testing.T ) {
1086
+ tests := []struct {
1087
+ name string
1088
+ searchVersion string
1089
+ updateCpeField string
1090
+ format version.Format
1091
+ expectedVersion string
1092
+ }{
1093
+ {
1094
+ name : "non-JVM package with update field (NTP example)" ,
1095
+ searchVersion : "4.2.8" ,
1096
+ updateCpeField : "p18" ,
1097
+ format : version .UnknownFormat ,
1098
+ expectedVersion : "4.2.8p18" ,
1099
+ },
1100
+ {
1101
+ name : "non-JVM package without update field" ,
1102
+ searchVersion : "1.2.3" ,
1103
+ updateCpeField : "" ,
1104
+ format : version .UnknownFormat ,
1105
+ expectedVersion : "1.2.3" ,
1106
+ },
1107
+ {
1108
+ name : "non-JVM package with Any update field" ,
1109
+ searchVersion : "1.2.3" ,
1110
+ updateCpeField : "" ,
1111
+ format : version .UnknownFormat ,
1112
+ expectedVersion : "1.2.3" ,
1113
+ },
1114
+ {
1115
+ name : "non-JVM package with NA update field" ,
1116
+ searchVersion : "1.2.3" ,
1117
+ updateCpeField : "-" ,
1118
+ format : version .UnknownFormat ,
1119
+ expectedVersion : "1.2.3" ,
1120
+ },
1121
+ {
1122
+ name : "JVM package with update field" ,
1123
+ searchVersion : "1.8.0" ,
1124
+ updateCpeField : "update400" ,
1125
+ format : version .JVMFormat ,
1126
+ expectedVersion : "1.8.0_400" ,
1127
+ },
1128
+ {
1129
+ name : "JVM package without update field (Any)" ,
1130
+ searchVersion : "1.8.0" ,
1131
+ updateCpeField : "" ,
1132
+ format : version .JVMFormat ,
1133
+ expectedVersion : "1.8.0" ,
1134
+ },
1135
+ {
1136
+ name : "JVM package without update field (NA)" ,
1137
+ searchVersion : "1.8.0" ,
1138
+ updateCpeField : "-" ,
1139
+ format : version .JVMFormat ,
1140
+ expectedVersion : "1.8.0" ,
1141
+ },
1142
+ {
1143
+ name : "semantic package with patch update" ,
1144
+ searchVersion : "2.4.1" ,
1145
+ updateCpeField : "rc1" ,
1146
+ format : version .SemanticFormat ,
1147
+ expectedVersion : "2.4.1rc1" ,
1148
+ },
1149
+ {
1150
+ name : "debian package with update" ,
1151
+ searchVersion : "1.0.0" ,
1152
+ updateCpeField : "deb1" ,
1153
+ format : version .DebFormat ,
1154
+ expectedVersion : "1.0.0deb1" ,
1155
+ },
1156
+ {
1157
+ name : "non-JVM package with wildcard version should not combine" ,
1158
+ searchVersion : "" ,
1159
+ updateCpeField : "update123" ,
1160
+ format : version .UnknownFormat ,
1161
+ expectedVersion : "" ,
1162
+ },
1163
+ {
1164
+ name : "non-JVM package with NA version should not combine" ,
1165
+ searchVersion : "-" ,
1166
+ updateCpeField : "update123" ,
1167
+ format : version .UnknownFormat ,
1168
+ expectedVersion : "-" ,
1169
+ },
1170
+ }
1171
+
1172
+ for _ , test := range tests {
1173
+ t .Run (test .name , func (t * testing.T ) {
1174
+ result := combineVersionAndUpdate (test .searchVersion , test .updateCpeField , test .format )
1175
+ assert .Equal (t , test .expectedVersion , result )
1176
+ })
1177
+ }
1178
+ }
1179
+
1085
1180
func TestAddMatchDetails (t * testing.T ) {
1086
1181
tests := []struct {
1087
1182
name string
0 commit comments