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 ,
0 commit comments