Skip to content
This repository has been archived by the owner on Aug 9, 2021. It is now read-only.

Commit

Permalink
adding test suite.
Browse files Browse the repository at this point in the history
  • Loading branch information
AnalogJ committed Aug 27, 2018
1 parent c7df690 commit 9d93ac1
Show file tree
Hide file tree
Showing 42 changed files with 946 additions and 87 deletions.
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -292,3 +292,4 @@ CapsuleCD is licensed under the MIT License - see the
- http://craigwickesser.com/2015/02/golang-cmd-with-custom-environment/
- https://opencredo.com/why-i-dont-like-error-handling-in-go/
- https://godoc.org/github.com/pkg/errors
- https://blog.strapi.io/testing-npm-package-before-releasing-it-using-verdaccio-and-ngrok/
35 changes: 0 additions & 35 deletions pkg/engine/engine_chef_test.go
Expand Up @@ -166,30 +166,6 @@ func (suite *EngineChefTestSuite) TestEngineChef_AssembleStep_WithoutMetadata()
require.Error(suite.T(), berr, "should return an error")
}

func (suite *EngineChefTestSuite) TestEngineChef_DependenciesStep() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)

//copy cookbook fixture into a temp directory.
parentPath, err := ioutil.TempDir("", "")
require.NoError(suite.T(), err)
defer os.RemoveAll(parentPath)
suite.PipelineData.GitParentPath = parentPath
suite.PipelineData.GitLocalPath = path.Join(parentPath, "cookbook_analogj_test")
cerr := utils.CopyDir(path.Join("testdata", "chef", "cookbook_analogj_test"), suite.PipelineData.GitLocalPath)
require.NoError(suite.T(), cerr)

chefEngine, err := engine.Create("chef", suite.PipelineData, suite.Config, suite.Scm)
require.NoError(suite.T(), err)

//test
berr := chefEngine.DependenciesStep()

//assert
require.NoError(suite.T(), berr)
require.True(suite.T(), utils.FileExists(path.Join(suite.PipelineData.GitLocalPath, "Berksfile.lock")))
require.True(suite.T(), utils.FileExists(path.Join(suite.PipelineData.GitLocalPath, "Gemfile.lock")))
}

func (suite *EngineChefTestSuite) TestEngineChef_TestStep_AllDisabled() {
//setup
Expand Down Expand Up @@ -320,16 +296,5 @@ func (suite *EngineChefTestSuite) TestEngineChef_PackageStep_WithoutLockFiles()
}

func (suite *EngineChefTestSuite) TestEngineChef_DistStep_WithoutCredentials() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)
suite.Config.EXPECT().IsSet("chef_supermarket_username").MinTimes(1).Return(false)

chefEngine, err := engine.Create("chef", suite.PipelineData, suite.Config, suite.Scm)
require.NoError(suite.T(), err)

//test
berr := chefEngine.DistStep()

//assert
require.Error(suite.T(), berr)
}
24 changes: 0 additions & 24 deletions pkg/engine/engine_golang_test.go
Expand Up @@ -160,30 +160,6 @@ func (suite *EngineGolangTestSuite) TestEngineGolang_AssembleStep_WithoutVersion
require.Error(suite.T(), berr, "should return an error")
}

func (suite *EngineGolangTestSuite) TestEngineGolang_DependenciesStep() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)

//copy cookbook fixture into a temp directory.
parentPath, err := ioutil.TempDir("", "")
require.NoError(suite.T(), err)
defer os.RemoveAll(parentPath)
suite.PipelineData.GitParentPath = parentPath
suite.PipelineData.GitLocalPath = path.Join(parentPath, "golang_analogj_test")
cerr := utils.CopyDir(path.Join("testdata", "golang", "golang_analogj_test"), suite.PipelineData.GitLocalPath)
require.NoError(suite.T(), cerr)

golangEngine, err := engine.Create("golang", suite.PipelineData, suite.Config, suite.Scm)
require.NoError(suite.T(), err)

//test
berr := golangEngine.DependenciesStep()

//assert
require.NoError(suite.T(), berr)
require.True(suite.T(), utils.FileExists(path.Join(suite.PipelineData.GitLocalPath, "glide.lock")))
}

func (suite *EngineGolangTestSuite) TestEngineGolang_TestStep_AllDisabled() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)
Expand Down
26 changes: 0 additions & 26 deletions pkg/engine/engine_ruby_test.go
Expand Up @@ -167,32 +167,6 @@ func (suite *EngineRubyTestSuite) TestEngineRuby_AssembleStep_WithoutGemspec() {
require.Error(suite.T(), berr, "should return an error")
}

func (suite *EngineRubyTestSuite) TestEngineRuby_DependenciesStep() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)

//copy cookbook fixture into a temp directory.
parentPath, err := ioutil.TempDir("", "")
require.NoError(suite.T(), err)
defer os.RemoveAll(parentPath)
suite.PipelineData.GitParentPath = parentPath
suite.PipelineData.GitLocalPath = path.Join(parentPath, "gem_analogj_test")
cerr := utils.CopyDir(path.Join("testdata", "ruby", "gem_analogj_test"), suite.PipelineData.GitLocalPath)
require.NoError(suite.T(), cerr)
cperr := utils.CopyFile(path.Join("testdata", "ruby", "gem_analogj_test-0.1.4.gem"), path.Join(suite.PipelineData.GitLocalPath, "-.gem"))
require.NoError(suite.T(), cperr)

rubyEngine, err := engine.Create("ruby", suite.PipelineData, suite.Config, suite.Scm)
require.NoError(suite.T(), err)

//test
berr := rubyEngine.DependenciesStep()

//assert
require.NoError(suite.T(), berr)
require.True(suite.T(), utils.FileExists(path.Join(suite.PipelineData.GitLocalPath, "Gemfile.lock")))
}

func (suite *EngineRubyTestSuite) TestEngineRuby_TestStep_AllDisabled() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)
Expand Down
145 changes: 145 additions & 0 deletions pkg/mgr/mgr_chef_berkshelf_test.go
@@ -0,0 +1,145 @@
package mgr_test

import (
"github.com/stretchr/testify/suite"
"github.com/golang/mock/gomock"
"capsulecd/pkg/mgr/mock"
"capsulecd/pkg/config/mock"
"capsulecd/pkg/pipeline"
"testing"
"io/ioutil"
"github.com/stretchr/testify/require"
"os"
"path"
"capsulecd/pkg/metadata"
"capsulecd/pkg/mgr"
"capsulecd/pkg/utils"
)

// Define the suite, and absorb the built-in basic suite
// functionality from testify - including a T() method which
// returns the current testing context
type MgrChefBerkshelfTestSuite struct {
suite.Suite
MockCtrl *gomock.Controller
Mgr *mock_mgr.MockInterface
Config *mock_config.MockInterface
PipelineData *pipeline.Data
}

// Make sure that VariableThatShouldStartAtFive is set to five
// before each test
func (suite *MgrChefBerkshelfTestSuite) SetupTest() {
suite.MockCtrl = gomock.NewController(suite.T())

suite.PipelineData = new(pipeline.Data)

suite.Config = mock_config.NewMockInterface(suite.MockCtrl)
suite.Mgr = mock_mgr.NewMockInterface(suite.MockCtrl)

}

func (suite *MgrChefBerkshelfTestSuite) TearDownTest() {
suite.MockCtrl.Finish()
}

// In order for 'go test' to run this suite, we need to create
// a normal test function and pass our suite to suite.Run
func TestMgrChefBerkshelf_TestSuite(t *testing.T) {
suite.Run(t, new(MgrChefBerkshelfTestSuite))
}

func (suite *MgrChefBerkshelfTestSuite) TestMgrChefBerkshelfTestSuite_DependenciesStep() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)

//copy cookbook fixture into a temp directory.
parentPath, err := ioutil.TempDir("", "")
require.NoError(suite.T(), err)
defer os.RemoveAll(parentPath)
suite.PipelineData.GitParentPath = parentPath
suite.PipelineData.GitLocalPath = path.Join(parentPath, "cookbook_analogj_test")
cerr := utils.CopyDir(path.Join("testdata", "chef", "cookbook_analogj_test"), suite.PipelineData.GitLocalPath)
require.NoError(suite.T(), cerr)

mgrChefBerkshelf, err := mgr.Create("berkshelf", suite.PipelineData, suite.Config, nil)
require.NoError(suite.T(), err)

currentVersion := new(metadata.ChefMetadata)
nextVersion := new(metadata.ChefMetadata)

//test
berr := mgrChefBerkshelf.MgrDependenciesStep(currentVersion, nextVersion)

//assert
require.NoError(suite.T(), berr)
require.True(suite.T(), utils.FileExists(path.Join(suite.PipelineData.GitLocalPath, "Berksfile.lock")))
require.True(suite.T(), utils.FileExists(path.Join(suite.PipelineData.GitLocalPath, "Gemfile.lock")))

}


func (suite *MgrChefBerkshelfTestSuite) TestMgrChefBerkshelfTestSuite_WithoutCredentials() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)
suite.Config.EXPECT().IsSet("chef_supermarket_username").MinTimes(1).Return(false)

mgrChefBerkshelf, err := mgr.Create("berkshelf", suite.PipelineData, suite.Config, nil)
require.NoError(suite.T(), err)

currentVersion := new(metadata.ChefMetadata)
nextVersion := new(metadata.ChefMetadata)

//test
berr := mgrChefBerkshelf.MgrDistStep(currentVersion, nextVersion)

//assert
require.Error(suite.T(), berr)
}

//
//// junk username/password only for use on test.pypi.org
//// username: capsulecd
//// password: capsulecd$23$
//// we're not going to mock out this test, as we want to ensure that package manager integration works correctly, so we'll just
//// communicate with the test pypi server.
//func (suite *MgrPythonPipTestSuite) TestMgrChefBerkshelfTestSuite_DistStep_WithCredentials() {
// //setup
// //suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)
// suite.Config.EXPECT().IsSet("pypi_username").MinTimes(1).Return(true)
// suite.Config.EXPECT().IsSet("pypi_password").MinTimes(1).Return(true)
// suite.Config.EXPECT().GetString("pypi_username").MinTimes(1).Return("capsulecd")
// suite.Config.EXPECT().GetString("pypi_password").MinTimes(1).Return("capsulecd$23$")
// suite.Config.EXPECT().GetString("pypi_repository").MinTimes(1).Return("https://test.pypi.org/legacy/") //using test repo
//
//
// //copy cookbook fixture into a temp directory.
// parentPath, err := ioutil.TempDir("", "")
// require.NoError(suite.T(), err)
// defer os.RemoveAll(parentPath)
// suite.PipelineData.GitParentPath = parentPath
// suite.PipelineData.GitLocalPath = path.Join(parentPath, "pip_analogj_test")
// cerr := utils.CopyDir(path.Join("testdata", "python", "pip_analogj_test"), suite.PipelineData.GitLocalPath)
// require.NoError(suite.T(), cerr)
//
//
// //using current date/time as a pseudo version number
// t := time.Now()
// dateVersion := t.Format("20060102.1504.05") //yyyymmdd.HHMM.SS
// werr := ioutil.WriteFile(path.Join(suite.PipelineData.GitLocalPath, "VERSION"), []byte(dateVersion), 0644)
// require.NoError(suite.T(), werr)
//
//
// mgrPythonPip, err := mgr.Create("pip", suite.PipelineData, suite.Config, nil)
// require.NoError(suite.T(), err)
//
// currentVersion := new(metadata.PythonMetadata)
// nextVersion := new(metadata.PythonMetadata)
//
// //test
// berr := mgrPythonPip.MgrDistStep(currentVersion, nextVersion)
//
// //assert
// require.NoError(suite.T(), berr)
//}

93 changes: 93 additions & 0 deletions pkg/mgr/mgr_golang_dep_test.go
@@ -0,0 +1,93 @@
package mgr_test

import (
"github.com/stretchr/testify/suite"
"github.com/golang/mock/gomock"
"capsulecd/pkg/mgr/mock"
"capsulecd/pkg/config/mock"
"capsulecd/pkg/pipeline"
"testing"
"io/ioutil"
"github.com/stretchr/testify/require"
"os"
"path"
"capsulecd/pkg/metadata"
"capsulecd/pkg/utils"
"capsulecd/pkg/mgr"
)

// Define the suite, and absorb the built-in basic suite
// functionality from testify - including a T() method which
// returns the current testing context
type MgrGolangDepTestSuite struct {
suite.Suite
MockCtrl *gomock.Controller
Mgr *mock_mgr.MockInterface
Config *mock_config.MockInterface
PipelineData *pipeline.Data
}

// Make sure that VariableThatShouldStartAtFive is set to five
// before each test
func (suite *MgrGolangDepTestSuite) SetupTest() {
suite.MockCtrl = gomock.NewController(suite.T())

suite.PipelineData = new(pipeline.Data)

suite.Config = mock_config.NewMockInterface(suite.MockCtrl)
suite.Mgr = mock_mgr.NewMockInterface(suite.MockCtrl)

}

func (suite *MgrGolangDepTestSuite) TearDownTest() {
suite.MockCtrl.Finish()
}

// In order for 'go test' to run this suite, we need to create
// a normal test function and pass our suite to suite.Run
func TestMgrGolangDep_TestSuite(t *testing.T) {
suite.Run(t, new(MgrGolangDepTestSuite))
}

func (suite *MgrGolangDepTestSuite) TestMgrGolangDepTestSuite_DependenciesStep() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)

//copy cookbook fixture into a temp directory.
parentPath, err := ioutil.TempDir("", "")
require.NoError(suite.T(), err)
defer os.RemoveAll(parentPath)
suite.PipelineData.GitParentPath = parentPath
suite.PipelineData.GitLocalPath = path.Join(parentPath, "dep_analogj_test")
cerr := utils.CopyDir(path.Join("testdata", "golang", "dep_analogj_test"), suite.PipelineData.GitLocalPath)
require.NoError(suite.T(), cerr)

mgrGolangDeg, err := mgr.Create("dep", suite.PipelineData, suite.Config, nil)
require.NoError(suite.T(), err)
currentVersion := new(metadata.GolangMetadata)
nextVersion := new(metadata.GolangMetadata)

//test
berr := mgrGolangDeg.MgrDependenciesStep(currentVersion, nextVersion)

//assert
require.NoError(suite.T(), berr)
require.True(suite.T(), utils.FileExists(path.Join(suite.PipelineData.GitLocalPath, "Gopkg.toml")))

}


func (suite *MgrGolangDepTestSuite) TestMgrGolangDepTestSuite_MgrDistStep_WithoutCredentials() {
//setup
suite.Config.EXPECT().SetDefault(gomock.Any(), gomock.Any()).MinTimes(1)
mgrGolangDeg, err := mgr.Create("dep", suite.PipelineData, suite.Config, nil)
require.NoError(suite.T(), err)
currentVersion := new(metadata.ChefMetadata)
nextVersion := new(metadata.ChefMetadata)

//test
berr := mgrGolangDeg.MgrDistStep(currentVersion, nextVersion)

//assert
require.Error(suite.T(), berr)
}

0 comments on commit 9d93ac1

Please sign in to comment.