github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/provider/joyent/joyent_test.go (about)

     1  // Copyright 2013 Joyent Inc.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package joyent_test
     5  
     6  import (
     7  	"fmt"
     8  	"io/ioutil"
     9  	"os"
    10  
    11  	jc "github.com/juju/testing/checkers"
    12  	"github.com/juju/utils"
    13  	gc "gopkg.in/check.v1"
    14  
    15  	envtesting "github.com/juju/juju/environs/testing"
    16  	coretesting "github.com/juju/juju/testing"
    17  )
    18  
    19  const (
    20  	testUser        = "test"
    21  	testKeyFileName = "provider_id_rsa"
    22  	testPrivateKey  = `-----BEGIN RSA PRIVATE KEY-----
    23  MIIEpAIBAAKCAQEAza+KvczCrcpQGRq9e347VHx9oEvuhseJt0ydR+UMAveyQprU
    24  4JHvzwUUhGnG147GJQYyfQ4nzaSG62az/YThoZJzw8gtxGkVHv0wlAlRkYhxbKbq
    25  8WQIh73xDQkHLw2lXLvf7Tt0Mhow0qGEmkOjTb5fPsj2evphrV3jJ15QlhL4cv33
    26  t8jVadIrL0iIpwdqWiPqUKpsrSfKJghkoXS6quPy78P820TnuoBG+/Ppr8Kkvn6m
    27  A7j4xnOQ12QE6jPK4zkikj5ZczSC4fTG0d3BwwX4VYu+4y/T/BX0L9VNUmQU22Y+
    28  /MRXAUZxsa8VhNB+xXF5XSubyb2n6loMWWaYGwIDAQABAoIBAQDCJt9JxYxGS+BL
    29  sigF9+O9Hj3fH42p/5QJR/J2uMgbzP+hS1GCIX9B5MO3MbmWI5j5vd3OmZwMyy7n
    30  6Wwg9FufDgTkW4KIEcD0HX7LXfh27VpTe0PuU8SRjUOKUGlNiw36eQUog6Rs3rgT
    31  Oo9Wpl3xtq9lLoErGEk3QpZ2xNpArTfsN9N3pdmD4sv7wmJq0PZQyej482g9R0g/
    32  5k2ni6JpcEifzBQ6Bzx3EV2l9UipEIqbqDpMOtYFCpnLQhEaDfUribqXINGIsjiq
    33  VyFa3Mbg/eayqG3UX3rVTCif2NnW2ojl4mMgWCyxgWfb4Jg1trc3v7X4SXfbgPWD
    34  WcfrOhOhAoGBAP7ZC8KHAnjujwvXf3PxVNm6CTs5evbByQVyxNciGxRuOomJIR4D
    35  euqepQ4PuNAabnrbMyQWXpibIKpmLnBVoj1q0IMXYvi2MZF5e2tH/Gx01UvxamHh
    36  bKhHmp9ImHhVl6kObXOdNvLVTt/BI5FZBblvm7qOoiVwImPbqqVHP7Q5AoGBAM6d
    37  mNsrW0iV/nP1m7d8mcFw74PI0FNlNdfUoePUgokO0t5OU0Ri/lPBDCRGlvVF3pj1
    38  HnmwroNtdWr9oPVB6km8193fb2zIWe53tj+6yRFQpz5elrSPfeZaZXlJZAGCCCdN
    39  gBggWQFPeQiT54aPywPpcTZHIs72XBqQ6QsIPrbzAoGAdW2hg5MeSobyFuzHZ69N
    40  /70/P7DuvgDxFbeah97JR5K7GmC7h87mtnE/cMlByXJEcgvK9tfv4rWoSZwnzc9H
    41  oLE1PxJpolyhXnzxp69V2svC9OlasZtjq+7Cip6y0s/twBJL0Lgid6ZeX6/pKbIx
    42  dw68XSwX/tQ6pHS1ns7DxdECgYBJbBWapNCefbbbjEcWsC+PX0uuABmP2SKGHSie
    43  ZrEwdVUX7KuIXMlWB/8BkRgp9vdAUbLPuap6R9Z2+8RMA213YKUxUiotdREIPgBE
    44  q2KyRX/5GPHjHi62Qh9XN25TXtr45ICFklEutwgitTSMS+Lv8+/oQuUquL9ILYCz
    45  C+4FYwKBgQDE9yZTUpJjG2424z6bl/MHzwl5RB4pMronp0BbeVqPwhCBfj0W5I42
    46  1ZL4+8eniHfUs4GXzf5tb9YwVt3EltIF2JybaBvFsv2o356yJUQmqQ+jyYRoEpT5
    47  2SwilFo/XCotCXxi5n8sm9V94a0oix4ehZrohTA/FZLsggwFCPmXfw==
    48  -----END RSA PRIVATE KEY-----`
    49  	testKeyFingerprint = "66:ca:1c:09:75:99:35:69:be:91:08:25:03:c0:17:c0"
    50  )
    51  
    52  type providerSuite struct {
    53  	coretesting.FakeJujuHomeSuite
    54  	envtesting.ToolsFixture
    55  	restoreTimeouts func()
    56  }
    57  
    58  var _ = gc.Suite(&providerSuite{})
    59  
    60  func (s *providerSuite) SetUpSuite(c *gc.C) {
    61  	s.restoreTimeouts = envtesting.PatchAttemptStrategies()
    62  	s.FakeJujuHomeSuite.SetUpSuite(c)
    63  }
    64  
    65  func (s *providerSuite) TearDownSuite(c *gc.C) {
    66  	s.restoreTimeouts()
    67  	s.FakeJujuHomeSuite.TearDownSuite(c)
    68  }
    69  
    70  func (s *providerSuite) SetUpTest(c *gc.C) {
    71  	s.FakeJujuHomeSuite.SetUpTest(c)
    72  	s.ToolsFixture.SetUpTest(c)
    73  	s.AddCleanup(CreateTestKey(c))
    74  }
    75  
    76  func (s *providerSuite) TearDownTest(c *gc.C) {
    77  	s.ToolsFixture.TearDownTest(c)
    78  	s.FakeJujuHomeSuite.TearDownTest(c)
    79  }
    80  
    81  func GetFakeConfig(sdcUrl, mantaUrl string) coretesting.Attrs {
    82  	return coretesting.FakeConfig().Merge(coretesting.Attrs{
    83  		"name":             "joyent test environment",
    84  		"type":             "joyent",
    85  		"sdc-user":         testUser,
    86  		"sdc-key-id":       testKeyFingerprint,
    87  		"sdc-url":          sdcUrl,
    88  		"manta-user":       testUser,
    89  		"manta-key-id":     testKeyFingerprint,
    90  		"manta-url":        mantaUrl,
    91  		"private-key-path": fmt.Sprintf("~/.ssh/%s", testKeyFileName),
    92  		"algorithm":        "rsa-sha256",
    93  		"control-dir":      "juju-test",
    94  		"agent-version":    coretesting.FakeVersionNumber.String(),
    95  	})
    96  }
    97  
    98  func CreateTestKey(c *gc.C) func(*gc.C) {
    99  	keyFile := fmt.Sprintf("~/.ssh/%s", testKeyFileName)
   100  	keyFilePath, err := utils.NormalizePath(keyFile)
   101  	c.Assert(err, jc.ErrorIsNil)
   102  	err = ioutil.WriteFile(keyFilePath, []byte(testPrivateKey), 400)
   103  	c.Assert(err, jc.ErrorIsNil)
   104  	return func(c *gc.C) {
   105  		os.Remove(keyFilePath)
   106  	}
   107  }