11package coderdtest
22
33import (
4+ "archive/tar"
45 "bytes"
56 "context"
67 "crypto"
@@ -52,6 +53,7 @@ import (
5253 "cdr.dev/slog"
5354 "cdr.dev/slog/sloggers/sloghuman"
5455 "cdr.dev/slog/sloggers/slogtest"
56+ "github.com/coder/coder/v2/archive"
5557 "github.com/coder/coder/v2/coderd/files"
5658 "github.com/coder/quartz"
5759
@@ -886,14 +888,22 @@ func createAnotherUserRetry(t testing.TB, client *codersdk.Client, organizationI
886888 return other , user
887889}
888890
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 {
893892 t .Helper ()
894893 data , err := echo .TarWithOptions (context .Background (), client .Logger (), res )
895894 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 ))
897907 require .NoError (t , err )
898908
899909 req := codersdk.CreateTemplateVersionRequest {
@@ -910,6 +920,13 @@ func CreateTemplateVersion(t testing.TB, client *codersdk.Client, organizationID
910920 return templateVersion
911921}
912922
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+
913930// CreateWorkspaceBuild creates a workspace build for the given workspace and transition.
914931func CreateWorkspaceBuild (
915932 t * testing.T ,
0 commit comments