Files
gocryptotrader/common/file/archive/zip_test.go
Eng Zer Jun 21b3d6a6c9 test: use T.TempDir to create temporary test directory (#934)
* test: use `T.TempDir` to create temporary test directory

This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>

* test: fix TestEncryptTwiceReusesSaltButNewCipher on Windows

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>

* test: fix TestCheckConnection on Windows

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>

* test: fix TestRPCServer_GetTicker_LastUpdatedNanos on Windows

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>

* test: cleanup TestGenerateReport

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2022-04-28 12:01:15 +10:00

86 lines
2.3 KiB
Go

package archive
import (
"archive/zip"
"errors"
"path/filepath"
"testing"
)
func TestUnZip(t *testing.T) {
tempDir := t.TempDir()
zipFile := filepath.Join("..", "..", "..", "testdata", "testdata.zip")
files, err := UnZip(zipFile, tempDir)
if err != nil {
t.Fatal(err)
}
if len(files) != 2 {
t.Fatalf("expected 2 files to be extracted received: %v ", len(files))
}
zipFile = filepath.Join("..", "..", "..", "testdata", "zip-slip.zip")
_, err = UnZip(zipFile, tempDir)
if err == nil {
t.Fatal("Zip() expected to error due to ZipSlip detection but extracted successfully")
}
zipFile = filepath.Join("..", "..", "..", "testdata", "configtest.json")
_, err = UnZip(zipFile, tempDir)
if err == nil {
t.Fatal("Zip() expected to error due to invalid zipfile")
}
}
func TestZip(t *testing.T) {
tempDir := t.TempDir()
singleFile := filepath.Join("..", "..", "..", "testdata", "configtest.json")
outFile := filepath.Join(tempDir, "out.zip")
err := Zip(singleFile, outFile)
if err != nil {
t.Fatal(err)
}
o, err := UnZip(outFile, tempDir)
if err != nil {
t.Fatal(err)
}
if len(o) != 1 {
t.Fatalf("expected 1 files to be extracted received: %v ", len(o))
}
folder := filepath.Join("..", "..", "..", "testdata", "http_mock")
outFolderZip := filepath.Join(tempDir, "out_folder.zip")
err = Zip(folder, outFolderZip)
if err != nil {
t.Fatal(err)
}
o, err = UnZip(outFolderZip, tempDir)
if err != nil {
t.Fatal(err)
}
if filepath.Base(o[0]) != "binance.json" || filepath.Base(o[4]) != "localbitcoins.json" {
t.Fatal("unexpected archive result received")
}
if expected := 7; len(o) != expected {
t.Fatalf("expected %v files to be extracted received: %v ", expected, len(o))
}
folder = filepath.Join("..", "..", "..", "testdata", "invalid_file.json")
outFolderZip = filepath.Join(tempDir, "invalid.zip")
err = Zip(folder, outFolderZip)
if err == nil {
t.Fatal("expected IsNotExistError on invalid file")
}
addFilesToZip = addFilesToZipTestWrapper
folder = filepath.Join("..", "..", "..", "testdata", "http_mock")
outFolderZip = filepath.Join(tempDir, "error_zip.zip")
err = Zip(folder, outFolderZip)
if err == nil {
t.Fatal("expected Zip() to fail due to invalid addFilesToZipTestWrapper()")
}
}
func addFilesToZipTestWrapper(_ *zip.Writer, _ string, _ bool) error {
return errors.New("error")
}