@@ -5,75 +5,58 @@ import (
5
5
"errors"
6
6
"io"
7
7
"os"
8
+ "path/filepath"
8
9
"strings"
9
10
"testing"
10
11
11
12
"github.com/openshift/cluster-authentication-operator/pkg/cmd/render"
12
- "github.com/spf13/afero"
13
13
)
14
14
15
15
func TestRenderOptionsRun (t * testing.T ) {
16
16
type testcase struct {
17
17
name string
18
- renderOptions * render.RenderOptions
18
+ assets render.AssetsFunc
19
+ assetsToRender []string
19
20
expectedErr error
20
21
expectedAssets map [string ][]byte
21
22
}
22
23
23
24
testcases := []testcase {
24
- {
25
- name : "asset-output-dir can not be created, error" ,
26
- renderOptions : & render.RenderOptions {
27
- AssetOutputDir : "temp" ,
28
- // using a read-only afero.Fs will error on MkdirAll calls
29
- Filesystem : afero .NewReadOnlyFs (nil ),
30
- Assets : func (name string ) ([]byte , error ) {
31
- return nil , nil
32
- },
33
- AssetsToRender : []string {},
34
- },
35
- expectedAssets : make (map [string ][]byte ),
36
- expectedErr : errors .New ("creating asset-output-dir:" ),
37
- },
38
25
{
39
26
name : "asset-output-dir can be created, fetching asset fails, error" ,
40
- renderOptions : & render.RenderOptions {
41
- AssetOutputDir : "temp" ,
42
- // using a read-only afero.Fs will error on MkdirAll calls
43
- Filesystem : afero .NewMemMapFs (),
44
- Assets : func (name string ) ([]byte , error ) {
45
- return nil , errors .New ("boom" )
46
- },
47
- AssetsToRender : []string {
48
- "foobar" ,
49
- },
27
+ assets : func (name string ) ([]byte , error ) {
28
+ return nil , errors .New ("boom" )
29
+ },
30
+ assetsToRender : []string {
31
+ "foobar" ,
50
32
},
51
33
expectedAssets : make (map [string ][]byte ),
52
34
expectedErr : errors .New ("getting asset \" foobar\" to be rendered:" ),
53
35
},
54
36
{
55
37
name : "asset-output-dir can be created, fetching asset successful, no error, manifest rendered successfully" ,
56
- renderOptions : & render.RenderOptions {
57
- AssetOutputDir : "temp" ,
58
- // using a read-only afero.Fs will error on MkdirAll calls
59
- Filesystem : afero .NewMemMapFs (),
60
- Assets : func (name string ) ([]byte , error ) {
61
- return []byte ("baz" ), nil
62
- },
63
- AssetsToRender : []string {
64
- "foobar" ,
65
- },
38
+ assets : func (name string ) ([]byte , error ) {
39
+ return []byte ("baz" ), nil
40
+ },
41
+ assetsToRender : []string {
42
+ "foobar" ,
66
43
},
67
44
expectedAssets : map [string ][]byte {
68
- "temp/ foobar" : []byte ("baz" ),
45
+ "foobar" : []byte ("baz" ),
69
46
},
70
47
expectedErr : nil ,
71
48
},
72
49
}
73
50
74
51
for _ , tc := range testcases {
75
52
t .Run (tc .name , func (t * testing.T ) {
76
- err := tc .renderOptions .Run ()
53
+ tempDir := t .TempDir ()
54
+ renderOpts := & render.RenderOptions {
55
+ AssetOutputDir : tempDir ,
56
+ Assets : tc .assets ,
57
+ AssetsToRender : tc .assetsToRender ,
58
+ }
59
+ err := renderOpts .Run ()
77
60
switch {
78
61
case err != nil && tc .expectedErr != nil :
79
62
if ! strings .Contains (err .Error (), tc .expectedErr .Error ()) {
@@ -86,7 +69,7 @@ func TestRenderOptionsRun(t *testing.T) {
86
69
}
87
70
88
71
for path , contents := range tc .expectedAssets {
89
- file , err := tc . renderOptions . Filesystem . Open (path )
72
+ file , err := os . Open (filepath . Join ( tempDir , path ) )
90
73
if err != nil {
91
74
if os .IsNotExist (err ) {
92
75
t .Fatalf ("expected rendered manifest %q to exist in filesystem but it does not" , path )
0 commit comments