Skip to content

Commit 905737c

Browse files
authored
Merge pull request #429 from cpanato/GH-349
🏃tests: Load SSH public key from file via env var AZURE_SSH_PUBLIC_KEY_FILE
2 parents 5c3e56e + fa8e8c2 commit 905737c

File tree

2 files changed

+36
-9
lines changed

2 files changed

+36
-9
lines changed

docs/development.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
- [Executing unit tests](#executing-unit-tests)
2525
- [Automated Testing](#automated-testing)
2626
- [Mocks](#mocks)
27+
- [E2E Testing](#e2e-testing)
2728

2829
<!-- /TOC -->
2930

@@ -220,6 +221,16 @@ To generate the mocks you can run
220221
make generate-go
221222
```
222223

224+
#### E2E Testing
225+
226+
To run E2E locally, set `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_SUBSCRIPTION_ID`, `AZURE_TENANT_ID` and run:
227+
228+
```bash
229+
./scripts/ci-e2e.sh
230+
```
231+
232+
You can optionally set `AZURE_SSH_PUBLIC_KEY_FILE` to use your own ssh key.
233+
223234
<!-- References -->
224235

225236
[jq]: https://stedolan.github.io/jq/download/
@@ -232,4 +243,4 @@ make generate-go
232243
[pyenv]: https://github.com/pyenv/pyenv
233244
[kustomize]: https://github.com/kubernetes-sigs/kustomize
234245
[kustomizelinux]: https://github.com/kubernetes-sigs/kustomize/blob/master/docs/INSTALL.md
235-
[gomock]: https://github.com/golang/mock
246+
[gomock]: https://github.com/golang/mock

test/e2e/resource_generators.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"encoding/base64"
2525
"encoding/json"
2626
"fmt"
27+
"io/ioutil"
2728
"log"
2829
random "math/rand"
2930
"os"
@@ -253,15 +254,30 @@ func cloudConfig(clusterName string, creds auth.Creds) string {
253254
}
254255

255256
func sshkey() (string, error) {
256-
// TODO Load from AZURE_SSH_PUBLIC_KEY_FILE if set
257-
prv, err := rsa.GenerateKey(rand.Reader, 2048)
258-
if err != nil {
259-
return "", errors.Wrap(err, "Failed to generate private key")
260-
}
261-
pub, err := ssh.NewPublicKey(&prv.PublicKey)
262-
if err != nil {
263-
return "", errors.Wrap(err, "Failed to generate public key")
257+
var pub ssh.PublicKey
258+
259+
if os.Getenv("AZURE_SSH_PUBLIC_KEY_FILE") != "" {
260+
authorizedKeysBytes, err := ioutil.ReadFile(os.Getenv("AZURE_SSH_PUBLIC_KEY_FILE"))
261+
if err != nil {
262+
return "", errors.Wrap(err, "Failed to load public key provided via environment variable")
263+
}
264+
265+
// double checking if the public key provided is valid
266+
pub, _, _, _, err = ssh.ParseAuthorizedKey(authorizedKeysBytes)
267+
if err != nil {
268+
return "", errors.Wrap(err, "Failed to parse public key provided via environment variable")
269+
}
270+
} else {
271+
prv, err := rsa.GenerateKey(rand.Reader, 2048)
272+
if err != nil {
273+
return "", errors.Wrap(err, "Failed to generate private key")
274+
}
275+
pub, err = ssh.NewPublicKey(&prv.PublicKey)
276+
if err != nil {
277+
return "", errors.Wrap(err, "Failed to generate public key")
278+
}
264279
}
280+
265281
return base64.StdEncoding.EncodeToString(ssh.MarshalAuthorizedKey(pub)), nil
266282
}
267283

0 commit comments

Comments
 (0)