Skip to content

Commit

Permalink
simplify provider tests
Browse files Browse the repository at this point in the history
  • Loading branch information
adamcstephens committed Apr 16, 2023
1 parent c3521d7 commit ef67b01
Showing 1 changed file with 0 additions and 261 deletions.
261 changes: 0 additions & 261 deletions lxd/provider_test.go
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
package lxd

import (
"log"
"os"
"strings"
"testing"

"fmt"

"io/ioutil"

"path/filepath"

petname "github.com/dustinkirkland/golang-petname"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
lxd "github.com/lxc/lxd/lxc/config"
)

var testAccProviders map[string]*schema.Provider
Expand Down Expand Up @@ -63,25 +55,6 @@ func TestAccLxdProvider_envRemote(t *testing.T) {
})
}

func TestAccLxdProvider_providerRemote(t *testing.T) {
envName := strings.ToLower(petname.Generate(2, "-"))
envPort := os.Getenv("LXD_PORT")
envAddr := os.Getenv("LXD_ADDR")
envPassword := os.Getenv("LXD_PASSWORD")

resource.Test(t, resource.TestCase{
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccLxdProvider_remote(envName, envAddr, envPort, envPassword),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("lxd_noop.noop1", "remote", envName),
),
},
},
})
}

func TestAccLxdProvider_imageRemotes(t *testing.T) {
resource.Test(t, resource.TestCase{
Providers: testAccProviders,
Expand All @@ -108,253 +81,19 @@ func TestAccLxdProvider_imageRemotes(t *testing.T) {
})
}

func TestAccLxdProvider_socketRemote(t *testing.T) {
remoteName := strings.ToLower(petname.Generate(2, "-"))
socketAddr := "/var/snap/lxd/common/lxd/unix.socket"
addr := fmt.Sprintf("unix:%s", socketAddr)

envName := os.Getenv("LXD_REMOTE")
os.Unsetenv("LXD_REMOTE")
defer os.Setenv("LXD_REMOTE", envName)

tmpDirName := petname.Generate(1, "")
tmpDir, err := ioutil.TempDir(os.TempDir(), tmpDirName)
if err != nil {
log.Fatal(err)
}
defer os.RemoveAll(tmpDir) // clean up

conf := &lxd.Config{}
conf.Remotes = map[string]lxd.Remote{
remoteName: {
Addr: addr,
},
}
conf.DefaultRemote = remoteName
conf.SaveConfig(filepath.Join(tmpDir, "config.yml"))

resource.Test(t, resource.TestCase{
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccLxdProvider_socketRemote(remoteName, socketAddr),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("lxd_noop.noop1", "remote", remoteName),
),
},
},
})
}

func TestAccLxdProvider_lxcConfigRemotes(t *testing.T) {
remoteName := strings.ToLower(petname.Generate(2, "-"))
remoteAddr := os.Getenv("LXD_ADDR")
remotePort := os.Getenv("LXD_PORT")
remotePassword := os.Getenv("LXD_PASSWORD")

envName := os.Getenv("LXD_REMOTE")
os.Unsetenv("LXD_REMOTE")
defer os.Setenv("LXD_REMOTE", envName)

tmpDirName := petname.Generate(1, "")
tmpDir, err := ioutil.TempDir(os.TempDir(), tmpDirName)
if err != nil {
log.Fatal(err)
}
defer os.RemoveAll(tmpDir) // clean up

conf := &lxd.Config{}
conf.Remotes = map[string]lxd.Remote{
remoteName: {
Addr: fmt.Sprintf("%s://%s:%s", os.Getenv("LXD_SCHEME"), remoteAddr, os.Getenv("LXD_PORT")),
},
}
conf.DefaultRemote = remoteName
conf.SaveConfig(filepath.Join(tmpDir, "config.yml"))

resource.Test(t, resource.TestCase{
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccLxdProvider_lxcConfig1(tmpDir, remoteName, remoteAddr, remotePort, remotePassword),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("lxd_noop.noop1", "remote", remoteName),
resource.TestCheckResourceAttr("lxd_noop.noop1", "client_name", remoteName),
),
},
{
Config: testAccLxdProvider_lxcConfig2(tmpDir, remoteName),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("lxd_noop.noop1", "remote", remoteName),
resource.TestCheckResourceAttr("lxd_noop.noop1", "client_name", remoteName),
),
},
{
Config: testAccLxdProvider_lxcConfig3(tmpDir),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("lxd_noop.noop2", "remote", ""),
resource.TestCheckResourceAttr("lxd_noop.noop2", "client_name", remoteName),
),
},
},
})

}

func TestAccLxdProvider_noConfigFile(t *testing.T) {
envName := strings.ToLower(petname.Generate(2, "-"))
envPort := os.Getenv("LXD_PORT")
envAddr := os.Getenv("LXD_ADDR")
envPassword := os.Getenv("LXD_PASSWORD")

tmpDirName := petname.Generate(1, "")
tmpDir, err := ioutil.TempDir(os.TempDir(), tmpDirName)
if err != nil {
log.Fatal(err)
}
defer os.RemoveAll(tmpDir)

resource.Test(t, resource.TestCase{
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccLxdProvider_configDir(envName, envAddr, envPort, envPassword, tmpDir),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("lxd_noop.noop1", "remote", envName),
),
},
},
})
}

func testAccPreCheck(t *testing.T) {
// NoOp
}

func testAccLxdProvider_basic(remote string) string {
return fmt.Sprintf(`
provider "lxd" {
}
resource "lxd_noop" "noop1" {
name = "noop1"
remote = "%s"
}
`, remote)
}

func testAccLxdProvider_remote(remote, addr, port, password string) string {
return fmt.Sprintf(`
provider "lxd" {
accept_remote_certificate = true
generate_client_certificates = true
lxd_remote {
name = "%s"
address = "%s"
port = "%s"
password = "%s"
}
}
resource "lxd_noop" "noop1" {
name = "noop1"
remote = "%s"
}
`, remote, addr, port, password, remote)
}

func testAccLxdProvider_socketRemote(remote, socketAddr string) string {
return fmt.Sprintf(`
provider "lxd" {
accept_remote_certificate = true
generate_client_certificates = true
lxd_remote {
name = "%s"
address = "%s"
scheme = "unix"
}
}
resource "lxd_noop" "noop1" {
name = "noop1"
remote = "%s"
}
`, remote, socketAddr, remote)
}

func testAccLxdProvider_lxcConfig1(confDir, remote, addr, port, password string) string {
return fmt.Sprintf(`
provider "lxd" {
config_dir = "%s"
accept_remote_certificate = true
generate_client_certificates = true
lxd_remote {
name = "%s"
address = "%s"
port = "%s"
password = "%s"
}
}
resource "lxd_noop" "noop1" {
name = "noop1"
remote = "%s"
}
`, confDir, remote, addr, port, password, remote)
}

func testAccLxdProvider_lxcConfig2(confDir, remote string) string {

return fmt.Sprintf(`
provider "lxd" {
config_dir = "%s"
accept_remote_certificate = true
generate_client_certificates = true
}
resource "lxd_noop" "noop1" {
name = "noop1"
remote = "%s"
}
`, confDir, remote)
}

// Config that does not set remote name, forcing use of default
func testAccLxdProvider_lxcConfig3(confDir string) string {
return fmt.Sprintf(`
provider "lxd" {
config_dir = "%s"
accept_remote_certificate = true
generate_client_certificates = true
}
resource "lxd_noop" "noop2" {
name = "noop2"
}
`, confDir)
}

func testAccLxdProvider_configDir(remote, addr, port, password, confDir string) string {
return fmt.Sprintf(`
provider "lxd" {
accept_remote_certificate = true
generate_client_certificates = true
config_dir = "%s"
lxd_remote {
name = "%s"
address = "%s"
port = "%s"
password = "%s"
}
}
resource "lxd_noop" "noop1" {
name = "noop1"
remote = "%s"
}
`, confDir, remote, addr, port, password, remote)
}

// this NoOp resource allows us to invoke the Terraform testing framework to test the Provider
// without actually calling out to any LXD server's to create or destroy resources.
func resourceLxdNoOp() *schema.Resource {
Expand Down

0 comments on commit ef67b01

Please sign in to comment.