1
1
package coderdtest
2
2
3
3
import (
4
+ "archive/tar"
4
5
"bytes"
5
6
"context"
6
7
"crypto"
@@ -52,6 +53,7 @@ import (
52
53
"cdr.dev/slog"
53
54
"cdr.dev/slog/sloggers/sloghuman"
54
55
"cdr.dev/slog/sloggers/slogtest"
56
+ "github.com/coder/coder/v2/archive"
55
57
"github.com/coder/coder/v2/coderd/files"
56
58
"github.com/coder/quartz"
57
59
@@ -886,14 +888,22 @@ func createAnotherUserRetry(t testing.TB, client *codersdk.Client, organizationI
886
888
return other ,user
887
889
}
888
890
889
- // CreateTemplateVersion creates a template import provisioner job
890
- // with the responses provided. It uses the "echo" provisioner for compatibility
891
- // with testing.
892
- func CreateTemplateVersion (t testing.TB ,client * codersdk.Client ,organizationID uuid.UUID ,res * echo.Responses ,mutators ... func (* codersdk.CreateTemplateVersionRequest )) codersdk.TemplateVersion {
891
+ func CreateTemplateVersionMimeType (t testing.TB ,client * codersdk.Client ,mimeType string ,organizationID uuid.UUID ,res * echo.Responses ,mutators ... func (* codersdk.CreateTemplateVersionRequest )) codersdk.TemplateVersion {
893
892
t .Helper ()
894
893
data ,err := echo .TarWithOptions (context .Background (),client .Logger (),res )
895
894
require .NoError (t ,err )
896
- file ,err := client .Upload (context .Background (),codersdk .ContentTypeTar ,bytes .NewReader (data ))
895
+
896
+ switch mimeType {
897
+ case codersdk .ContentTypeTar :
898
+ // do nothing
899
+ case codersdk .ContentTypeZip :
900
+ data ,err = archive .CreateZipFromTar (tar .NewReader (bytes .NewBuffer (data )),int64 (len (data )))
901
+ require .NoError (t ,err ,"creating zip" )
902
+ default :
903
+ t .Fatal ("unexpected mime type" ,mimeType )
904
+ }
905
+
906
+ file ,err := client .Upload (context .Background (),mimeType ,bytes .NewReader (data ))
897
907
require .NoError (t ,err )
898
908
899
909
req := codersdk.CreateTemplateVersionRequest {
@@ -910,6 +920,13 @@ func CreateTemplateVersion(t testing.TB, client *codersdk.Client, organizationID
910
920
return templateVersion
911
921
}
912
922
923
+ // CreateTemplateVersion creates a template import provisioner job
924
+ // with the responses provided. It uses the "echo" provisioner for compatibility
925
+ // with testing.
926
+ func CreateTemplateVersion (t testing.TB ,client * codersdk.Client ,organizationID uuid.UUID ,res * echo.Responses ,mutators ... func (* codersdk.CreateTemplateVersionRequest )) codersdk.TemplateVersion {
927
+ return CreateTemplateVersionMimeType (t ,client ,codersdk .ContentTypeTar ,organizationID ,res ,mutators ... )
928
+ }
929
+
913
930
// CreateWorkspaceBuild creates a workspace build for the given workspace and transition.
914
931
func CreateWorkspaceBuild (
915
932
t * testing.T ,