github.com/homburg/packer@v0.6.1-0.20140528012651-1dcaf1716848/packer/config_template_test.go (about) 1 package packer 2 3 import ( 4 "math" 5 "os" 6 "strconv" 7 "testing" 8 "time" 9 ) 10 11 func TestConfigTemplateProcess_env(t *testing.T) { 12 tpl, err := NewConfigTemplate() 13 if err != nil { 14 t.Fatalf("err: %s", err) 15 } 16 17 _, err = tpl.Process(`{{env "foo"}}`, nil) 18 if err == nil { 19 t.Fatal("should error") 20 } 21 } 22 23 func TestConfigTemplateProcess_isotime(t *testing.T) { 24 tpl, err := NewConfigTemplate() 25 if err != nil { 26 t.Fatalf("err: %s", err) 27 } 28 29 result, err := tpl.Process(`{{isotime}}`, nil) 30 if err != nil { 31 t.Fatalf("err: %s", err) 32 } 33 34 val, err := time.Parse(time.RFC3339, result) 35 if err != nil { 36 t.Fatalf("err: %s", err) 37 } 38 39 currentTime := time.Now().UTC() 40 if currentTime.Sub(val) > 2*time.Second { 41 t.Fatalf("val: %d (current: %d)", val, currentTime) 42 } 43 } 44 45 func TestConfigTemplateProcess_pwd(t *testing.T) { 46 tpl, err := NewConfigTemplate() 47 if err != nil { 48 t.Fatalf("err: %s", err) 49 } 50 51 pwd, err := os.Getwd() 52 if err != nil { 53 t.Fatalf("err: %s", err) 54 } 55 56 result, err := tpl.Process(`{{pwd}}`, nil) 57 if err != nil { 58 t.Fatalf("err: %s", err) 59 } 60 61 if result != pwd { 62 t.Fatalf("err: %s", result) 63 } 64 } 65 66 func TestConfigTemplateProcess_timestamp(t *testing.T) { 67 tpl, err := NewConfigTemplate() 68 if err != nil { 69 t.Fatalf("err: %s", err) 70 } 71 72 result, err := tpl.Process(`{{timestamp}}`, nil) 73 if err != nil { 74 t.Fatalf("err: %s", err) 75 } 76 77 val, err := strconv.ParseInt(result, 10, 64) 78 if err != nil { 79 t.Fatalf("err: %s", err) 80 } 81 82 currentTime := time.Now().UTC().Unix() 83 if math.Abs(float64(currentTime-val)) > 10 { 84 t.Fatalf("val: %d (current: %d)", val, currentTime) 85 } 86 87 time.Sleep(2 * time.Second) 88 89 result2, err := tpl.Process(`{{timestamp}}`, nil) 90 if err != nil { 91 t.Fatalf("err: %s", err) 92 } 93 94 if result != result2 { 95 t.Fatalf("bad: %#v %#v", result, result2) 96 } 97 } 98 99 func TestConfigTemplateProcess_user(t *testing.T) { 100 tpl, err := NewConfigTemplate() 101 if err != nil { 102 t.Fatalf("err: %s", err) 103 } 104 105 tpl.UserVars["foo"] = "bar" 106 107 result, err := tpl.Process(`{{user "foo"}}`, nil) 108 if err != nil { 109 t.Fatalf("err: %s", err) 110 } 111 112 if result != "bar" { 113 t.Fatalf("bad: %s", result) 114 } 115 } 116 117 func TestConfigTemplateProcess_uuid(t *testing.T) { 118 tpl, err := NewConfigTemplate() 119 if err != nil { 120 t.Fatalf("err: %s", err) 121 } 122 123 result, err := tpl.Process(`{{uuid}}`, nil) 124 if err != nil { 125 t.Fatalf("err: %s", err) 126 } 127 128 if len(result) != 36 { 129 t.Fatalf("err: %s", result) 130 } 131 } 132 133 func TestConfigTemplateValidate(t *testing.T) { 134 tpl, err := NewConfigTemplate() 135 if err != nil { 136 t.Fatalf("err: %s", err) 137 } 138 139 // Valid 140 err = tpl.Validate(`{{user "foo"}}`) 141 if err != nil { 142 t.Fatalf("err: %s", err) 143 } 144 145 // Invalid 146 err = tpl.Validate(`{{idontexist}}`) 147 if err == nil { 148 t.Fatal("should have error") 149 } 150 }