Skip to content

Commit 04378a9

Browse files
committed
WKS-2076 - Add base64 encoding support for source code
1 parent 984d60a commit 04378a9

3 files changed

Lines changed: 48 additions & 0 deletions

File tree

commands/deploy_cmd.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package commands
22

33
import (
4+
"encoding/base64"
45
"encoding/json"
56
"fmt"
67
"net/http"
@@ -39,6 +40,7 @@ func GetDeployCommand() components.Command {
3940
model.GetChangesVersionFlag(),
4041
model.GetChangesDescriptionFlag(),
4142
model.GetChangesCommitShaFlag(),
43+
model.GetBase64Flag(),
4244
},
4345
Action: func(c *components.Context) error {
4446
server, err := model.GetServerDetails(c)
@@ -151,6 +153,10 @@ func prepareDeployRequest(ctx *components.Context, manifest *model.Manifest, act
151153
}
152154
sourceCode = common.CleanImports(sourceCode)
153155

156+
if ctx.GetBoolFlagValue(model.FlagBase64) {
157+
sourceCode = "base64:" + base64.StdEncoding.EncodeToString([]byte(sourceCode))
158+
}
159+
154160
var secrets []*model.Secret
155161

156162
if !ctx.GetBoolFlagValue(model.FlagNoSecrets) {

commands/deploy_cmd_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package commands
55

66
import (
7+
"encoding/base64"
78
"encoding/json"
89
"errors"
910
"fmt"
@@ -155,6 +156,31 @@ func TestDeployCommand(t *testing.T) {
155156
),
156157
commandArgs: []string{"--" + model.FlagChangesVersion, "version number", "--" + model.FlagChangesDescription, "version description", "--" + model.FlagChangesCommitSha, "version commitsha"},
157158
},
159+
{
160+
name: "create with base64 encoding",
161+
workerAction: "BEFORE_UPLOAD",
162+
workerName: "wk-0",
163+
commandArgs: []string{"--" + model.FlagBase64},
164+
serverBehavior: common.NewServerStub(t).
165+
WithGetOneEndpoint().
166+
WithCreateEndpoint(
167+
expectDeployRequestBase64(actionsMeta, "wk-0", "BEFORE_UPLOAD", ""),
168+
),
169+
},
170+
{
171+
name: "update with base64 encoding",
172+
workerAction: "GENERIC_EVENT",
173+
workerName: "wk-1",
174+
commandArgs: []string{"--" + model.FlagBase64},
175+
serverBehavior: common.NewServerStub(t).
176+
WithGetOneEndpoint().
177+
WithUpdateEndpoint(
178+
expectDeployRequestBase64(actionsMeta, "wk-1", "GENERIC_EVENT", ""),
179+
).
180+
WithWorkers(&model.WorkerDetails{
181+
Key: "wk-1",
182+
}),
183+
},
158184
{
159185
name: "fails when version invalid",
160186
serverBehavior: common.NewServerStub(t).
@@ -239,6 +265,17 @@ func expectDeployRequest(actionsMeta common.ActionsMetadata, workerName, actionN
239265
}
240266
}
241267

268+
func expectDeployRequestBase64(actionsMeta common.ActionsMetadata, workerName, actionName, projectKey string, secrets ...*model.Secret) common.BodyValidator {
269+
return func(t require.TestingT, body []byte) {
270+
want := getExpectedDeployRequestForAction(t, actionsMeta, workerName, actionName, projectKey, secrets...)
271+
want.SourceCode = "base64:" + base64.StdEncoding.EncodeToString([]byte(want.SourceCode))
272+
got := &deployRequest{}
273+
err := json.Unmarshal(body, got)
274+
require.NoError(t, err)
275+
assertDeployRequestEquals(t, want, got)
276+
}
277+
}
278+
242279
func getExpectedDeployRequestForAction(
243280
t require.TestingT,
244281
actionsMeta common.ActionsMetadata,

model/flags.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const (
2525
FlagChangesVersion = "changes-version"
2626
FlagChangesDescription = "changes-description"
2727
FlagChangesCommitSha = "changes-commitsha"
28+
FlagBase64 = "base64"
2829
defaultTimeoutMillis = 5000
2930
)
3031

@@ -119,6 +120,10 @@ func GetChangesCommitShaFlag() components.StringFlag {
119120
return components.NewStringFlag(FlagChangesCommitSha, "Commit identifier or your change in your VCS.", components.WithStrDefaultValue(""))
120121
}
121122

123+
func GetBase64Flag() components.BoolFlag {
124+
return components.NewBoolFlag(FlagBase64, "Encode the worker source code in base64 before sending.", components.WithBoolDefaultValue(false))
125+
}
126+
122127
func GetServerDetails(c *components.Context) (*config.ServerDetails, error) {
123128
serverURLFromEnv, envHasServerURL := os.LookupEnv(EnvKeyServerURL)
124129
accessTokenFromEnv, envHasAccessToken := os.LookupEnv(EnvKeyAccessToken)

0 commit comments

Comments
 (0)