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