github.com/swisscom/cloudfoundry-cli@v7.1.0+incompatible/actor/v3action/v3action_suite_test.go (about)

     1  package v3action_test
     2  
     3  import (
     4  	"archive/zip"
     5  	"io"
     6  	"os"
     7  	"path/filepath"
     8  	"strings"
     9  
    10  	. "code.cloudfoundry.org/cli/actor/v3action"
    11  	"code.cloudfoundry.org/cli/actor/v3action/v3actionfakes"
    12  	. "github.com/onsi/ginkgo"
    13  	. "github.com/onsi/gomega"
    14  	log "github.com/sirupsen/logrus"
    15  
    16  	"testing"
    17  )
    18  
    19  func TestV3Action(t *testing.T) {
    20  	RegisterFailHandler(Fail)
    21  	RunSpecs(t, "V3 Actions Suite")
    22  }
    23  
    24  var _ = BeforeEach(func() {
    25  	log.SetLevel(log.PanicLevel)
    26  })
    27  
    28  func NewTestActor() (*Actor, *v3actionfakes.FakeCloudControllerClient, *v3actionfakes.FakeConfig, *v3actionfakes.FakeSharedActor, *v3actionfakes.FakeUAAClient) {
    29  	fakeCloudControllerClient := new(v3actionfakes.FakeCloudControllerClient)
    30  	fakeConfig := new(v3actionfakes.FakeConfig)
    31  	fakeSharedActor := new(v3actionfakes.FakeSharedActor)
    32  	fakeUAAClient := new(v3actionfakes.FakeUAAClient)
    33  	actor := NewActor(fakeCloudControllerClient, fakeConfig, fakeSharedActor, fakeUAAClient)
    34  
    35  	return actor, fakeCloudControllerClient, fakeConfig, fakeSharedActor, fakeUAAClient
    36  }
    37  
    38  // Thanks to Svett Ralchev
    39  // http://blog.ralch.com/tutorial/golang-working-with-zip/
    40  func zipit(source, target, prefix string) error {
    41  	zipfile, err := os.Create(target)
    42  	if err != nil {
    43  		return err
    44  	}
    45  	defer zipfile.Close()
    46  
    47  	if prefix != "" {
    48  		_, err = io.WriteString(zipfile, prefix)
    49  		if err != nil {
    50  			return err
    51  		}
    52  	}
    53  
    54  	archive := zip.NewWriter(zipfile)
    55  	defer archive.Close()
    56  
    57  	err = filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
    58  		if err != nil {
    59  			return err
    60  		}
    61  
    62  		header, err := zip.FileInfoHeader(info)
    63  		if err != nil {
    64  			return err
    65  		}
    66  
    67  		header.Name = strings.TrimPrefix(path, source)
    68  
    69  		if info.IsDir() {
    70  			header.Name += string(os.PathSeparator)
    71  		} else {
    72  			header.Method = zip.Deflate
    73  		}
    74  
    75  		writer, err := archive.CreateHeader(header)
    76  		if err != nil {
    77  			return err
    78  		}
    79  
    80  		if info.IsDir() {
    81  			return nil
    82  		}
    83  
    84  		file, err := os.Open(path)
    85  		if err != nil {
    86  			return err
    87  		}
    88  		defer file.Close()
    89  
    90  		_, err = io.Copy(writer, file)
    91  		return err
    92  	})
    93  
    94  	return err
    95  }