github.com/vijayrajah/packer@v1.3.2/post-processor/vagrant-cloud/post-processor_test.go (about) 1 package vagrantcloud 2 3 import ( 4 "bytes" 5 "fmt" 6 "net/http" 7 "net/http/httptest" 8 "os" 9 "testing" 10 11 "github.com/hashicorp/packer/packer" 12 ) 13 14 func testGoodConfig() map[string]interface{} { 15 return map[string]interface{}{ 16 "access_token": "foo", 17 "version_description": "bar", 18 "box_tag": "hashicorp/precise64", 19 "version": "0.5", 20 } 21 } 22 23 func testBadConfig() map[string]interface{} { 24 return map[string]interface{}{ 25 "access_token": "foo", 26 "box_tag": "baz", 27 "version_description": "bar", 28 } 29 } 30 31 func newSecureServer(token string, handler http.HandlerFunc) *httptest.Server { 32 token = fmt.Sprintf("Bearer %s", token) 33 return httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { 34 if req.Header.Get("authorization") != token { 35 http.Error(rw, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized) 36 return 37 } 38 if handler != nil { 39 handler(rw, req) 40 } 41 })) 42 } 43 44 func TestPostProcessor_Configure_fromVagrantEnv(t *testing.T) { 45 var p PostProcessor 46 config := testGoodConfig() 47 server := newSecureServer("bar", nil) 48 defer server.Close() 49 config["vagrant_cloud_url"] = server.URL 50 config["access_token"] = "" 51 os.Setenv("VAGRANT_CLOUD_TOKEN", "bar") 52 defer func() { 53 os.Setenv("VAGRANT_CLOUD_TOKEN", "") 54 }() 55 56 if err := p.Configure(config); err != nil { 57 t.Fatalf("err: %s", err) 58 } 59 60 if p.config.AccessToken != "bar" { 61 t.Fatalf("Expected to get token from VAGRANT_CLOUD_TOKEN env var. Got '%s' instead", 62 p.config.AccessToken) 63 } 64 } 65 66 func TestPostProcessor_Configure_fromAtlasEnv(t *testing.T) { 67 var p PostProcessor 68 config := testGoodConfig() 69 config["access_token"] = "" 70 server := newSecureServer("foo", nil) 71 defer server.Close() 72 config["vagrant_cloud_url"] = server.URL 73 os.Setenv("ATLAS_TOKEN", "foo") 74 defer func() { 75 os.Setenv("ATLAS_TOKEN", "") 76 }() 77 78 if err := p.Configure(config); err != nil { 79 t.Fatalf("err: %s", err) 80 } 81 82 if p.config.AccessToken != "foo" { 83 t.Fatalf("Expected to get token from ATLAS_TOKEN env var. Got '%s' instead", 84 p.config.AccessToken) 85 } 86 87 if !p.warnAtlasToken { 88 t.Fatal("Expected warn flag to be set when getting token from atlas env var.") 89 } 90 } 91 92 func TestPostProcessor_Configure_Good(t *testing.T) { 93 config := testGoodConfig() 94 server := newSecureServer("foo", nil) 95 defer server.Close() 96 config["vagrant_cloud_url"] = server.URL 97 var p PostProcessor 98 if err := p.Configure(config); err != nil { 99 t.Fatalf("err: %s", err) 100 } 101 } 102 103 func TestPostProcessor_Configure_Bad(t *testing.T) { 104 config := testBadConfig() 105 server := newSecureServer("foo", nil) 106 defer server.Close() 107 config["vagrant_cloud_url"] = server.URL 108 var p PostProcessor 109 if err := p.Configure(config); err == nil { 110 t.Fatalf("should have err") 111 } 112 } 113 114 func testUi() *packer.BasicUi { 115 return &packer.BasicUi{ 116 Reader: new(bytes.Buffer), 117 Writer: new(bytes.Buffer), 118 } 119 } 120 121 func TestPostProcessor_ImplementsPostProcessor(t *testing.T) { 122 var _ packer.PostProcessor = new(PostProcessor) 123 } 124 125 func TestProviderFromBuilderName(t *testing.T) { 126 if providerFromBuilderName("foobar") != "foobar" { 127 t.Fatal("should copy unknown provider") 128 } 129 130 if providerFromBuilderName("vmware") != "vmware_desktop" { 131 t.Fatal("should convert provider") 132 } 133 }