github.com/peterbale/terraform@v0.9.0-beta2.0.20170315142748-5723acd55547/builtin/providers/packet/resource_packet_ssh_key_test.go (about) 1 package packet 2 3 import ( 4 "fmt" 5 "strings" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 "github.com/packethost/packngo" 12 ) 13 14 func TestAccPacketSSHKey_Basic(t *testing.T) { 15 var key packngo.SSHKey 16 rInt := acctest.RandInt() 17 18 resource.Test(t, resource.TestCase{ 19 PreCheck: func() { testAccPreCheck(t) }, 20 Providers: testAccProviders, 21 CheckDestroy: testAccCheckPacketSSHKeyDestroy, 22 Steps: []resource.TestStep{ 23 { 24 Config: testAccCheckPacketSSHKeyConfig_basic(rInt), 25 Check: resource.ComposeTestCheckFunc( 26 testAccCheckPacketSSHKeyExists("packet_ssh_key.foobar", &key), 27 resource.TestCheckResourceAttr( 28 "packet_ssh_key.foobar", "name", fmt.Sprintf("foobar-%d", rInt)), 29 resource.TestCheckResourceAttr( 30 "packet_ssh_key.foobar", "public_key", testAccValidPublicKey), 31 ), 32 }, 33 }, 34 }) 35 } 36 37 func testAccCheckPacketSSHKeyDestroy(s *terraform.State) error { 38 client := testAccProvider.Meta().(*packngo.Client) 39 40 for _, rs := range s.RootModule().Resources { 41 if rs.Type != "packet_ssh_key" { 42 continue 43 } 44 if _, _, err := client.SSHKeys.Get(rs.Primary.ID); err == nil { 45 return fmt.Errorf("SSH key still exists") 46 } 47 } 48 49 return nil 50 } 51 52 func testAccCheckPacketSSHKeyExists(n string, key *packngo.SSHKey) resource.TestCheckFunc { 53 return func(s *terraform.State) error { 54 rs, ok := s.RootModule().Resources[n] 55 if !ok { 56 return fmt.Errorf("Not found: %s", n) 57 } 58 if rs.Primary.ID == "" { 59 return fmt.Errorf("No Record ID is set") 60 } 61 62 client := testAccProvider.Meta().(*packngo.Client) 63 64 foundKey, _, err := client.SSHKeys.Get(rs.Primary.ID) 65 if err != nil { 66 return err 67 } 68 if foundKey.ID != rs.Primary.ID { 69 return fmt.Errorf("SSh Key not found: %v - %v", rs.Primary.ID, foundKey) 70 } 71 72 *key = *foundKey 73 74 fmt.Printf("key: %v", key) 75 return nil 76 } 77 } 78 79 func testAccCheckPacketSSHKeyConfig_basic(rInt int) string { 80 return fmt.Sprintf(` 81 resource "packet_ssh_key" "foobar" { 82 name = "foobar-%d" 83 public_key = "%s" 84 }`, rInt, testAccValidPublicKey) 85 } 86 87 var testAccValidPublicKey = strings.TrimSpace(` 88 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR 89 `)