|
@@ -0,0 +1,134 @@
|
|
|
+package etchosts
|
|
|
+
|
|
|
+import (
|
|
|
+ "bytes"
|
|
|
+ "io/ioutil"
|
|
|
+ "os"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+func TestBuildDefault(t *testing.T) {
|
|
|
+ file, err := ioutil.TempFile("", "")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ defer os.Remove(file.Name())
|
|
|
+
|
|
|
+ // check that /etc/hosts has consistent ordering
|
|
|
+ for i := 0; i <= 5; i++ {
|
|
|
+ err = Build(file.Name(), "", "", "", nil)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ content, err := ioutil.ReadFile(file.Name())
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ expected := "127.0.0.1\tlocalhost\n::1\tlocalhost ip6-localhost ip6-loopback\nfe00::0\tip6-localnet\nff00::0\tip6-mcastprefix\nff02::1\tip6-allnodes\nff02::2\tip6-allrouters\n"
|
|
|
+
|
|
|
+ if expected != string(content) {
|
|
|
+ t.Fatalf("Expected to find '%s' got '%s'", expected, content)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestBuildHostnameDomainname(t *testing.T) {
|
|
|
+ file, err := ioutil.TempFile("", "")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ defer os.Remove(file.Name())
|
|
|
+
|
|
|
+ err = Build(file.Name(), "10.11.12.13", "testhostname", "testdomainname", nil)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ content, err := ioutil.ReadFile(file.Name())
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expected := "10.11.12.13\ttesthostname.testdomainname testhostname\n"; !bytes.Contains(content, []byte(expected)) {
|
|
|
+ t.Fatalf("Expected to find '%s' got '%s'", expected, content)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestBuildHostname(t *testing.T) {
|
|
|
+ file, err := ioutil.TempFile("", "")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ defer os.Remove(file.Name())
|
|
|
+
|
|
|
+ err = Build(file.Name(), "10.11.12.13", "testhostname", "", nil)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ content, err := ioutil.ReadFile(file.Name())
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expected := "10.11.12.13\ttesthostname\n"; !bytes.Contains(content, []byte(expected)) {
|
|
|
+ t.Fatalf("Expected to find '%s' got '%s'", expected, content)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestBuildNoIP(t *testing.T) {
|
|
|
+ file, err := ioutil.TempFile("", "")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ defer os.Remove(file.Name())
|
|
|
+
|
|
|
+ err = Build(file.Name(), "", "testhostname", "", nil)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ content, err := ioutil.ReadFile(file.Name())
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expected := ""; !bytes.Contains(content, []byte(expected)) {
|
|
|
+ t.Fatalf("Expected to find '%s' got '%s'", expected, content)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestUpdate(t *testing.T) {
|
|
|
+ file, err := ioutil.TempFile("", "")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ defer os.Remove(file.Name())
|
|
|
+
|
|
|
+ if err := Build(file.Name(), "10.11.12.13", "testhostname", "testdomainname", nil); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ content, err := ioutil.ReadFile(file.Name())
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expected := "10.11.12.13\ttesthostname.testdomainname testhostname\n"; !bytes.Contains(content, []byte(expected)) {
|
|
|
+ t.Fatalf("Expected to find '%s' got '%s'", expected, content)
|
|
|
+ }
|
|
|
+
|
|
|
+ if err := Update(file.Name(), "1.1.1.1", "testhostname"); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ content, err = ioutil.ReadFile(file.Name())
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expected := "1.1.1.1\ttesthostname.testdomainname testhostname\n"; !bytes.Contains(content, []byte(expected)) {
|
|
|
+ t.Fatalf("Expected to find '%s' got '%s'", expected, content)
|
|
|
+ }
|
|
|
+}
|