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  `)