mirror of
https://github.com/coder/coder.git
synced 2025-06-28 04:33:02 +00:00
chore(coderd): improve tests for tar<->zip conversion (#12477)
* improve tests for tar<->zip conversion * set mode and modtime correctly when converting from zip to tar (#12476)
This commit is contained in:
@ -5,6 +5,8 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/google/uuid"
|
||||
@ -13,7 +15,6 @@ import (
|
||||
"github.com/coder/coder/v2/coderd"
|
||||
"github.com/coder/coder/v2/coderd/coderdtest"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/coder/v2/provisioner/echo"
|
||||
"github.com/coder/coder/v2/testutil"
|
||||
)
|
||||
|
||||
@ -83,16 +84,20 @@ func TestDownload(t *testing.T) {
|
||||
// given
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
|
||||
defer cancel()
|
||||
tarball, err := os.ReadFile(filepath.Join("testdata", "test.tar"))
|
||||
require.NoError(t, err)
|
||||
|
||||
// when
|
||||
resp, err := client.Upload(ctx, codersdk.ContentTypeTar, bytes.NewReader(make([]byte, 1024)))
|
||||
resp, err := client.Upload(ctx, codersdk.ContentTypeTar, bytes.NewReader(tarball))
|
||||
require.NoError(t, err)
|
||||
data, contentType, err := client.Download(ctx, resp.ID)
|
||||
require.NoError(t, err)
|
||||
|
||||
// then
|
||||
require.Len(t, data, 1024)
|
||||
require.Len(t, data, len(tarball))
|
||||
require.Equal(t, codersdk.ContentTypeTar, contentType)
|
||||
require.Equal(t, tarball, data)
|
||||
assertSampleTarFile(t, data)
|
||||
})
|
||||
|
||||
t.Run("InsertZip_DownloadTar", func(t *testing.T) {
|
||||
@ -101,14 +106,7 @@ func TestDownload(t *testing.T) {
|
||||
_ = coderdtest.CreateFirstUser(t, client)
|
||||
|
||||
// given
|
||||
tarball, err := echo.Tar(&echo.Responses{
|
||||
Parse: echo.ParseComplete,
|
||||
ProvisionApply: echo.ApplyComplete,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
tarReader := tar.NewReader(bytes.NewReader(tarball))
|
||||
zipContent, err := coderd.CreateZipFromTar(tarReader)
|
||||
zipContent, err := os.ReadFile(filepath.Join("testdata", "test.zip"))
|
||||
require.NoError(t, err)
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
|
||||
@ -122,7 +120,10 @@ func TestDownload(t *testing.T) {
|
||||
|
||||
// then
|
||||
require.Equal(t, codersdk.ContentTypeTar, contentType)
|
||||
require.Equal(t, tarball, data)
|
||||
|
||||
// Note: creating a zip from a tar will result in some loss of information
|
||||
// as zip files do not store UNIX user:group data.
|
||||
assertSampleTarFile(t, data)
|
||||
})
|
||||
|
||||
t.Run("InsertTar_DownloadZip", func(t *testing.T) {
|
||||
@ -131,10 +132,7 @@ func TestDownload(t *testing.T) {
|
||||
_ = coderdtest.CreateFirstUser(t, client)
|
||||
|
||||
// given
|
||||
tarball, err := echo.Tar(&echo.Responses{
|
||||
Parse: echo.ParseComplete,
|
||||
ProvisionApply: echo.ApplyComplete,
|
||||
})
|
||||
tarball, err := os.ReadFile(filepath.Join("testdata", "test.tar"))
|
||||
require.NoError(t, err)
|
||||
|
||||
tarReader := tar.NewReader(bytes.NewReader(tarball))
|
||||
@ -153,5 +151,6 @@ func TestDownload(t *testing.T) {
|
||||
// then
|
||||
require.Equal(t, codersdk.ContentTypeZip, contentType)
|
||||
require.Equal(t, expectedZip, data)
|
||||
assertSampleZipFile(t, data)
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user