github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/piperenv/CPEMap_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package piperenv 5 6 import ( 7 "encoding/json" 8 "fmt" 9 "os" 10 "path" 11 "testing" 12 13 "github.com/stretchr/testify/require" 14 ) 15 16 func Test_writeMapToDisk(t *testing.T) { 17 t.Parallel() 18 testMap := CPEMap{ 19 "A/B": "Hallo", 20 "sub": map[string]interface{}{ 21 "A/B": "Test", 22 }, 23 "number": 5, 24 } 25 26 tmpDir := t.TempDir() 27 err := testMap.WriteToDisk(tmpDir) 28 require.NoError(t, err) 29 30 testData := []struct { 31 Path string 32 ExpectedValue string 33 }{ 34 { 35 Path: "A/B", 36 ExpectedValue: "Hallo", 37 }, 38 { 39 Path: "sub.json", 40 ExpectedValue: "{\"A/B\":\"Test\"}", 41 }, 42 { 43 Path: "number.json", 44 ExpectedValue: "5", 45 }, 46 } 47 48 for _, testCase := range testData { 49 t.Run(fmt.Sprintf("check path %s", testCase.Path), func(t *testing.T) { 50 tPath := path.Join(tmpDir, testCase.Path) 51 bytes, err := os.ReadFile(tPath) 52 require.NoError(t, err) 53 require.Equal(t, testCase.ExpectedValue, string(bytes)) 54 }) 55 } 56 } 57 58 func TestCPEMap_LoadFromDisk(t *testing.T) { 59 t.Parallel() 60 tmpDir := t.TempDir() 61 62 err := os.WriteFile(path.Join(tmpDir, "Foo"), []byte("Bar"), 0644) 63 require.NoError(t, err) 64 err = os.WriteFile(path.Join(tmpDir, "Hello"), []byte("World"), 0644) 65 require.NoError(t, err) 66 subPath := path.Join(tmpDir, "Batman") 67 err = os.Mkdir(subPath, 0744) 68 require.NoError(t, err) 69 err = os.WriteFile(path.Join(subPath, "Bruce"), []byte("Wayne"), 0644) 70 require.NoError(t, err) 71 err = os.WriteFile(path.Join(subPath, "Robin"), []byte("toBeEmptied"), 0644) 72 require.NoError(t, err) 73 err = os.WriteFile(path.Join(subPath, "Test.json"), []byte("54"), 0644) 74 require.NoError(t, err) 75 76 cpe := CPEMap{} 77 err = cpe.LoadFromDisk(tmpDir) 78 require.NoError(t, err) 79 80 require.Equal(t, "Bar", cpe["Foo"]) 81 require.Equal(t, "World", cpe["Hello"]) 82 require.Equal(t, "", cpe["Batman/Robin"]) 83 require.Equal(t, "Wayne", cpe["Batman/Bruce"]) 84 require.Equal(t, json.Number("54"), cpe["Batman/Test"]) 85 } 86 87 func TestNumbersArePassedCorrectly(t *testing.T) { 88 t.Parallel() 89 tmpDir := t.TempDir() 90 91 const jsonNumber = "5.5000" 92 err := os.WriteFile(path.Join(tmpDir, "test.json"), []byte(jsonNumber), 0644) 93 require.NoError(t, err) 94 95 cpeMap := CPEMap{} 96 err = cpeMap.LoadFromDisk(tmpDir) 97 require.NoError(t, err) 98 99 rawJSON, err := json.Marshal(cpeMap["test"]) 100 require.NoError(t, err) 101 require.Equal(t, jsonNumber, string(rawJSON)) 102 } 103 104 func TestCommonPipelineEnvDirNotPresent(t *testing.T) { 105 cpe := CPEMap{} 106 err := cpe.LoadFromDisk("/path/does/not/exist") 107 require.NoError(t, err) 108 require.Len(t, cpe, 0) 109 }