github.com/mmcquillan/packer@v1.1.1-0.20171009221028-c85cf0483a5d/builder/oracle/oci/client/image_test.go (about) 1 package oci 2 3 import ( 4 "fmt" 5 "net/http" 6 "reflect" 7 "testing" 8 ) 9 10 func TestGetImage(t *testing.T) { 11 setup() 12 defer teardown() 13 14 id := "ocid1.image.oc1.phx.a" 15 path := fmt.Sprintf("/images/%s", id) 16 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 17 fmt.Fprintf(w, `{"id":"%s"}`, id) 18 }) 19 20 image, err := client.Compute.Images.Get(&GetImageParams{ID: id}) 21 if err != nil { 22 t.Errorf("Client.Compute.Images.Get() returned error: %v", err) 23 } 24 25 want := Image{ID: id} 26 27 if !reflect.DeepEqual(image, want) { 28 t.Errorf("Client.Compute.Images.Get() returned %+v, want %+v", image, want) 29 } 30 } 31 32 func TestCreateImage(t *testing.T) { 33 setup() 34 defer teardown() 35 36 mux.HandleFunc("/images/", func(w http.ResponseWriter, r *http.Request) { 37 fmt.Fprint(w, `{"displayName": "go-oci test"}`) 38 }) 39 40 params := &CreateImageParams{ 41 CompartmentID: "ocid1.compartment.oc1..a", 42 DisplayName: "go-oci test image", 43 InstanceID: "ocid1.image.oc1.phx.a", 44 } 45 46 image, err := client.Compute.Images.Create(params) 47 if err != nil { 48 t.Errorf("Client.Compute.Images.Create() returned error: %v", err) 49 } 50 51 want := Image{DisplayName: "go-oci test"} 52 53 if !reflect.DeepEqual(image, want) { 54 t.Errorf("Client.Compute.Images.Create() returned %+v, want %+v", image, want) 55 } 56 } 57 58 func TestImageGetResourceState(t *testing.T) { 59 setup() 60 defer teardown() 61 62 id := "ocid1.image.oc1.phx.a" 63 path := fmt.Sprintf("/images/%s", id) 64 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 65 fmt.Fprint(w, `{"LifecycleState": "AVAILABLE"}`) 66 }) 67 68 state, err := client.Compute.Images.GetResourceState(id) 69 if err != nil { 70 t.Errorf("Client.Compute.Images.GetResourceState() returned error: %v", err) 71 } 72 73 want := "AVAILABLE" 74 if state != want { 75 t.Errorf("Client.Compute.Images.GetResourceState() returned %+v, want %+v", state, want) 76 } 77 } 78 79 func TestImageGetResourceStateInvalidID(t *testing.T) { 80 setup() 81 defer teardown() 82 83 id := "ocid1.image.oc1.phx.a" 84 path := fmt.Sprintf("/images/%s", id) 85 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 86 w.WriteHeader(http.StatusNotFound) 87 fmt.Fprint(w, `{"code": "NotAuthorizedOrNotFound"}`) 88 }) 89 90 state, err := client.Compute.Images.GetResourceState(id) 91 if err == nil { 92 t.Errorf("Client.Compute.Images.GetResourceState() expected error, got %v", state) 93 } 94 95 want := &APIError{Code: "NotAuthorizedOrNotFound"} 96 if !reflect.DeepEqual(err, want) { 97 t.Errorf("Client.Compute.Images.GetResourceState() errored with %+v, want %+v", err, want) 98 } 99 } 100 101 func TestDeleteInstance(t *testing.T) { 102 setup() 103 defer teardown() 104 105 id := "ocid1.image.oc1.phx.a" 106 path := fmt.Sprintf("/images/%s", id) 107 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 108 w.WriteHeader(http.StatusNoContent) 109 }) 110 111 err := client.Compute.Images.Delete(&DeleteImageParams{ID: id}) 112 if err != nil { 113 t.Errorf("Client.Compute.Images.Delete() returned error: %v", err) 114 } 115 }