@@ -3,6 +3,7 @@ package osscache
33import (
44 "os"
55 "reflect"
6+ "strings"
67 "testing"
78 "time"
89
@@ -26,7 +27,6 @@ func TestWriteAndReadCache(t *testing.T) {
2627 cacheFile := GetCacheFilePath ()
2728 defer os .Remove (cacheFile )
2829
29- // prepare a cache object
3030 ttl := time .Now ().Add (time .Hour ).Truncate (time .Second )
3131 want := Cache {
3232 TTL : ttl ,
@@ -40,12 +40,10 @@ func TestWriteAndReadCache(t *testing.T) {
4040 },
4141 }
4242
43- // write it
4443 if err := WriteCache (want , & want .TTL ); err != nil {
4544 t .Fatalf ("WriteCache() error = %v; want no error" , err )
4645 }
4746
48- // read it back
4947 got := ReadCache ()
5048 if got == nil {
5149 t .Fatal ("ReadCache() returned nil; want non-nil" )
@@ -61,27 +59,24 @@ func TestAppendToCache(t *testing.T) {
6159 cacheFile := GetCacheFilePath ()
6260 defer os .Remove (cacheFile )
6361
64- // first batch
6562 first := & wrappers.RealtimeScannerPackageResponse {
6663 Packages : []wrappers.RealtimeScannerResults {
6764 {PackageManager : "npm" , PackageName : "lodash" , Version : "4.17.21" , Status : "OK" },
6865 },
6966 }
70- if err := AppendToCache (first ); err != nil {
67+ if err := AppendToCache (first , nil ); err != nil {
7168 t .Fatalf ("AppendToCache(first) error = %v; want no error" , err )
7269 }
7370
74- // second batch
7571 second := & wrappers.RealtimeScannerPackageResponse {
7672 Packages : []wrappers.RealtimeScannerResults {
7773 {PackageManager : "npm" , PackageName : "express" , Version : "4.17.1" , Status : "Malicious" },
7874 },
7975 }
80- if err := AppendToCache (second ); err != nil {
76+ if err := AppendToCache (second , nil ); err != nil {
8177 t .Fatalf ("AppendToCache(second) error = %v; want no error" , err )
8278 }
8379
84- // now read & verify we have both entries
8580 cache := ReadCache ()
8681 if cache == nil {
8782 t .Fatal ("ReadCache() returned nil; want non-nil" )
@@ -107,44 +102,46 @@ func TestAppendToCache(t *testing.T) {
107102 }
108103}
109104
110- func Test_buildCacheMap (t * testing.T ) {
111- type args struct {
112- cache Cache
113- }
114- tests := [] struct {
115- name string
116- args args
117- want map [ string ] string
118- }{
119- // TODO: Add test cases.
120- }
121- for _ , tt := range tests {
122- t . Run ( tt . name , func ( t * testing. T ) {
123- if got := BuildCacheMap ( tt . args . cache ); ! reflect . DeepEqual ( got , tt . want ) {
124- t . Errorf ( "buildCacheMap() = %v, want %v" , got , tt . want )
125- }
126- } )
105+ func TestAppendToCache_WithVersionMapping (t * testing.T ) {
106+ cacheFile := GetCacheFilePath ()
107+ var latestVersionInCache bool
108+ var exactVersionInCache bool
109+ defer os . Remove ( cacheFile )
110+
111+ pkgResponse := & wrappers. RealtimeScannerPackageResponse {
112+ Packages : []wrappers. RealtimeScannerResults {
113+ { PackageManager : "npm" , PackageName : "lodash" , Version : "4.17.21" , Status : "OK" },
114+ { PackageManager : "npm" , PackageName : "express" , Version : "1.1.1" , Status : "Malicious" },
115+ },
116+ }
117+ versionMapping := map [ string ] string {
118+ "npm-express-1.1.1" : "latest" ,
119+ }
120+ if err := AppendToCache ( pkgResponse , versionMapping ); err != nil {
121+ t . Fatalf ( "AppendToCache(first) error = %v; want no error" , err )
127122 }
128- }
129123
130- func Test_cacheKey (t * testing.T ) {
131- type args struct {
132- manager string
133- name string
134- version string
135- }
136- tests := []struct {
137- name string
138- args args
139- want string
140- }{
141- // TODO: Add test cases.
142- }
143- for _ , tt := range tests {
144- t .Run (tt .name , func (t * testing.T ) {
145- if got := GenerateCacheKey (tt .args .manager , tt .args .name , tt .args .version ); got != tt .want {
146- t .Errorf ("cacheKey() = %v, want %v" , got , tt .want )
147- }
148- })
124+ cache := ReadCache ()
125+ if cache == nil {
126+ t .Fatal ("ReadCache() returned nil; want non-nil" )
149127 }
128+
129+ var got []wrappers.RealtimeScannerResults
130+ for _ , e := range cache .Packages {
131+ pkg := wrappers.RealtimeScannerResults {
132+ PackageManager : e .PackageManager ,
133+ PackageName : e .PackageName ,
134+ Version : e .PackageVersion ,
135+ Status : e .Status ,
136+ }
137+ got = append (got , pkg )
138+ if strings .EqualFold (pkg .PackageName , "express" ) && strings .EqualFold (pkg .Version , "latest" ) {
139+ latestVersionInCache = true
140+ } else if strings .EqualFold (pkg .PackageName , "express" ) && strings .EqualFold (pkg .Version , "1.1.1" ) {
141+ exactVersionInCache = true
142+ }
143+ }
144+ asserts .True (t , latestVersionInCache , "Expected latest version of express to be in cache" )
145+ asserts .True (t , exactVersionInCache , "Expected exact versions of express to be in cache" )
146+ asserts .Greater (t , len (got ), len (pkgResponse .Packages )) // Ensure that the cache contains the exact version and the latest version of express
150147}
0 commit comments