get.porter.sh/porter@v1.3.0/pkg/porter/create_test.go (about) 1 package porter 2 3 import ( 4 "path/filepath" 5 "testing" 6 7 "get.porter.sh/porter/pkg" 8 "get.porter.sh/porter/pkg/manifest" 9 "get.porter.sh/porter/pkg/yaml" 10 "get.porter.sh/porter/tests" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestCreateInWorkingDirectory(t *testing.T) { 15 p := NewTestPorter(t) 16 defer p.Close() 17 18 err := p.Create() 19 require.NoError(t, err) 20 21 // Verify that files are present in the root directory 22 configFileStats, err := p.FileSystem.Stat("porter.yaml") 23 require.NoError(t, err) 24 tests.AssertFilePermissionsEqual(t, "porter.yaml", pkg.FileModeWritable, configFileStats.Mode()) 25 26 helperFileStats, err := p.FileSystem.Stat("helpers.sh") 27 require.NoError(t, err) 28 tests.AssertFilePermissionsEqual(t, "helpers.sh", pkg.FileModeExecutable, helperFileStats.Mode()) 29 30 dockerfileStats, err := p.FileSystem.Stat("template.Dockerfile") 31 require.NoError(t, err) 32 tests.AssertFilePermissionsEqual(t, "template.Dockerfile", pkg.FileModeWritable, dockerfileStats.Mode()) 33 34 readmeStats, err := p.FileSystem.Stat("README.md") 35 require.NoError(t, err) 36 tests.AssertFilePermissionsEqual(t, "README.md", pkg.FileModeWritable, readmeStats.Mode()) 37 38 gitignoreStats, err := p.FileSystem.Stat(".gitignore") 39 require.NoError(t, err) 40 tests.AssertFilePermissionsEqual(t, ".gitignore", pkg.FileModeWritable, gitignoreStats.Mode()) 41 42 dockerignoreStats, err := p.FileSystem.Stat(".dockerignore") 43 require.NoError(t, err) 44 tests.AssertFilePermissionsEqual(t, ".dockerignore", pkg.FileModeWritable, dockerignoreStats.Mode()) 45 } 46 47 // tests to ensure behavior similarity with helm create 48 func TestCreateWithBundleName(t *testing.T) { 49 bundleName := "mybundle" 50 51 p := NewTestPorter(t) 52 err := p.CreateInDir(bundleName) 53 require.NoError(t, err) 54 55 // Verify that files are present in the "mybundle" directory 56 configFileStats, err := p.FileSystem.Stat(filepath.Join(bundleName, "porter.yaml")) 57 require.NoError(t, err) 58 tests.AssertFilePermissionsEqual(t, filepath.Join(bundleName, "porter.yaml"), pkg.FileModeWritable, configFileStats.Mode()) 59 60 helperFileStats, err := p.FileSystem.Stat(filepath.Join(bundleName, "helpers.sh")) 61 require.NoError(t, err) 62 tests.AssertFilePermissionsEqual(t, filepath.Join(bundleName, "helpers.sh"), pkg.FileModeExecutable, helperFileStats.Mode()) 63 64 dockerfileStats, err := p.FileSystem.Stat(filepath.Join(bundleName, "template.Dockerfile")) 65 require.NoError(t, err) 66 tests.AssertFilePermissionsEqual(t, filepath.Join(bundleName, "template.Dockerfile"), pkg.FileModeWritable, dockerfileStats.Mode()) 67 68 readmeStats, err := p.FileSystem.Stat(filepath.Join(bundleName, "README.md")) 69 require.NoError(t, err) 70 tests.AssertFilePermissionsEqual(t, filepath.Join(bundleName, "README.md"), pkg.FileModeWritable, readmeStats.Mode()) 71 72 gitignoreStats, err := p.FileSystem.Stat(filepath.Join(bundleName, ".gitignore")) 73 require.NoError(t, err) 74 tests.AssertFilePermissionsEqual(t, filepath.Join(bundleName, ".gitignore"), pkg.FileModeWritable, gitignoreStats.Mode()) 75 76 dockerignoreStats, err := p.FileSystem.Stat(filepath.Join(bundleName, ".dockerignore")) 77 require.NoError(t, err) 78 tests.AssertFilePermissionsEqual(t, filepath.Join(bundleName, ".dockerignore"), pkg.FileModeWritable, dockerignoreStats.Mode()) 79 80 // verify "name" inside porter.yaml is set to "mybundle" 81 porterYaml := &manifest.Manifest{} 82 data, err := p.FileSystem.ReadFile(filepath.Join(bundleName, "porter.yaml")) 83 require.NoError(t, err) 84 require.NoError(t, yaml.Unmarshal(data, &porterYaml)) 85 require.True(t, porterYaml.Name == bundleName) 86 } 87 88 // make sure bundlename is not the entire file structure, just the "base" 89 func TestCreateNestedBundleName(t *testing.T) { 90 dir := "foo/bar/bar" 91 bundleName := "mybundle" 92 93 p := NewTestPorter(t) 94 err := p.CreateInDir(filepath.Join(dir, bundleName)) 95 require.NoError(t, err) 96 97 // Verify that files are present in the "mybundle" directory 98 configFileStats, err := p.FileSystem.Stat(filepath.Join(dir, bundleName, "porter.yaml")) 99 require.NoError(t, err) 100 tests.AssertFilePermissionsEqual(t, filepath.Join(dir, bundleName, "porter.yaml"), pkg.FileModeWritable, configFileStats.Mode()) 101 102 helperFileStats, err := p.FileSystem.Stat(filepath.Join(dir, bundleName, "helpers.sh")) 103 require.NoError(t, err) 104 tests.AssertFilePermissionsEqual(t, filepath.Join(dir, bundleName, "helpers.sh"), pkg.FileModeExecutable, helperFileStats.Mode()) 105 106 dockerfileStats, err := p.FileSystem.Stat(filepath.Join(dir, bundleName, "template.Dockerfile")) 107 require.NoError(t, err) 108 tests.AssertFilePermissionsEqual(t, filepath.Join(dir, bundleName, "template.Dockerfile"), pkg.FileModeWritable, dockerfileStats.Mode()) 109 110 readmeStats, err := p.FileSystem.Stat(filepath.Join(dir, bundleName, "README.md")) 111 require.NoError(t, err) 112 tests.AssertFilePermissionsEqual(t, filepath.Join(dir, bundleName, "README.md"), pkg.FileModeWritable, readmeStats.Mode()) 113 114 gitignoreStats, err := p.FileSystem.Stat(filepath.Join(dir, bundleName, ".gitignore")) 115 require.NoError(t, err) 116 tests.AssertFilePermissionsEqual(t, filepath.Join(dir, bundleName, ".gitignore"), pkg.FileModeWritable, gitignoreStats.Mode()) 117 118 dockerignoreStats, err := p.FileSystem.Stat(filepath.Join(dir, bundleName, ".dockerignore")) 119 require.NoError(t, err) 120 tests.AssertFilePermissionsEqual(t, filepath.Join(dir, bundleName, ".dockerignore"), pkg.FileModeWritable, dockerignoreStats.Mode()) 121 122 // verify "name" inside porter.yaml is set to "mybundle" 123 porterYaml := &manifest.Manifest{} 124 data, err := p.FileSystem.ReadFile(filepath.Join(dir, bundleName, "porter.yaml")) 125 require.NoError(t, err) 126 require.NoError(t, yaml.Unmarshal(data, &porterYaml)) 127 require.True(t, porterYaml.Name == bundleName) 128 }