github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/packet/resource_packet_ssh_key_test.go (about) 1 package packet 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/hashicorp/terraform/helper/acctest" 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 rInt := acctest.RandInt() 16 publicKeyMaterial, _, err := acctest.RandSSHKeyPair("") 17 if err != nil { 18 t.Fatalf("Cannot generate test SSH key pair: %s", err) 19 } 20 21 resource.Test(t, resource.TestCase{ 22 PreCheck: func() { testAccPreCheck(t) }, 23 Providers: testAccProviders, 24 CheckDestroy: testAccCheckPacketSSHKeyDestroy, 25 Steps: []resource.TestStep{ 26 { 27 Config: testAccCheckPacketSSHKeyConfig_basic(rInt, publicKeyMaterial), 28 Check: resource.ComposeTestCheckFunc( 29 testAccCheckPacketSSHKeyExists("packet_ssh_key.foobar", &key), 30 resource.TestCheckResourceAttr( 31 "packet_ssh_key.foobar", "name", fmt.Sprintf("foobar-%d", rInt)), 32 resource.TestCheckResourceAttr( 33 "packet_ssh_key.foobar", "public_key", publicKeyMaterial), 34 ), 35 }, 36 }, 37 }) 38 } 39 40 func testAccCheckPacketSSHKeyDestroy(s *terraform.State) error { 41 client := testAccProvider.Meta().(*packngo.Client) 42 43 for _, rs := range s.RootModule().Resources { 44 if rs.Type != "packet_ssh_key" { 45 continue 46 } 47 if _, _, err := client.SSHKeys.Get(rs.Primary.ID); err == nil { 48 return fmt.Errorf("SSH key still exists") 49 } 50 } 51 52 return nil 53 } 54 55 func testAccCheckPacketSSHKeyExists(n string, key *packngo.SSHKey) resource.TestCheckFunc { 56 return func(s *terraform.State) error { 57 rs, ok := s.RootModule().Resources[n] 58 if !ok { 59 return fmt.Errorf("Not found: %s", n) 60 } 61 if rs.Primary.ID == "" { 62 return fmt.Errorf("No Record ID is set") 63 } 64 65 client := testAccProvider.Meta().(*packngo.Client) 66 67 foundKey, _, err := client.SSHKeys.Get(rs.Primary.ID) 68 if err != nil { 69 return err 70 } 71 if foundKey.ID != rs.Primary.ID { 72 return fmt.Errorf("SSh Key not found: %v - %v", rs.Primary.ID, foundKey) 73 } 74 75 *key = *foundKey 76 77 fmt.Printf("key: %v", key) 78 return nil 79 } 80 } 81 82 func testAccCheckPacketSSHKeyConfig_basic(rInt int, publicSshKey string) string { 83 return fmt.Sprintf(` 84 resource "packet_ssh_key" "foobar" { 85 name = "foobar-%d" 86 public_key = "%s" 87 }`, rInt, publicSshKey) 88 }