github.com/google/go-github/v33@v33.0.0/github/orgs_hooks_test.go (about) 1 // Copyright 2015 The go-github AUTHORS. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 package github 7 8 import ( 9 "context" 10 "encoding/json" 11 "fmt" 12 "net/http" 13 "reflect" 14 "testing" 15 ) 16 17 func TestOrganizationsService_ListHooks(t *testing.T) { 18 client, mux, _, teardown := setup() 19 defer teardown() 20 21 mux.HandleFunc("/orgs/o/hooks", func(w http.ResponseWriter, r *http.Request) { 22 testMethod(t, r, "GET") 23 testFormValues(t, r, values{"page": "2"}) 24 fmt.Fprint(w, `[{"id":1}, {"id":2}]`) 25 }) 26 27 opt := &ListOptions{Page: 2} 28 29 hooks, _, err := client.Organizations.ListHooks(context.Background(), "o", opt) 30 if err != nil { 31 t.Errorf("Organizations.ListHooks returned error: %v", err) 32 } 33 34 want := []*Hook{{ID: Int64(1)}, {ID: Int64(2)}} 35 if !reflect.DeepEqual(hooks, want) { 36 t.Errorf("Organizations.ListHooks returned %+v, want %+v", hooks, want) 37 } 38 } 39 40 func TestOrganizationsService_ListHooks_invalidOrg(t *testing.T) { 41 client, _, _, teardown := setup() 42 defer teardown() 43 44 _, _, err := client.Organizations.ListHooks(context.Background(), "%", nil) 45 testURLParseError(t, err) 46 } 47 48 func TestOrganizationsService_CreateHook(t *testing.T) { 49 client, mux, _, teardown := setup() 50 defer teardown() 51 52 input := &Hook{CreatedAt: &referenceTime} 53 54 mux.HandleFunc("/orgs/o/hooks", func(w http.ResponseWriter, r *http.Request) { 55 v := new(createHookRequest) 56 json.NewDecoder(r.Body).Decode(v) 57 58 testMethod(t, r, "POST") 59 want := &createHookRequest{Name: "web"} 60 if !reflect.DeepEqual(v, want) { 61 t.Errorf("Request body = %+v, want %+v", v, want) 62 } 63 64 fmt.Fprint(w, `{"id":1}`) 65 }) 66 67 hook, _, err := client.Organizations.CreateHook(context.Background(), "o", input) 68 if err != nil { 69 t.Errorf("Organizations.CreateHook returned error: %v", err) 70 } 71 72 want := &Hook{ID: Int64(1)} 73 if !reflect.DeepEqual(hook, want) { 74 t.Errorf("Organizations.CreateHook returned %+v, want %+v", hook, want) 75 } 76 } 77 78 func TestOrganizationsService_GetHook(t *testing.T) { 79 client, mux, _, teardown := setup() 80 defer teardown() 81 82 mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) { 83 testMethod(t, r, "GET") 84 fmt.Fprint(w, `{"id":1}`) 85 }) 86 87 hook, _, err := client.Organizations.GetHook(context.Background(), "o", 1) 88 if err != nil { 89 t.Errorf("Organizations.GetHook returned error: %v", err) 90 } 91 92 want := &Hook{ID: Int64(1)} 93 if !reflect.DeepEqual(hook, want) { 94 t.Errorf("Organizations.GetHook returned %+v, want %+v", hook, want) 95 } 96 } 97 98 func TestOrganizationsService_GetHook_invalidOrg(t *testing.T) { 99 client, _, _, teardown := setup() 100 defer teardown() 101 102 _, _, err := client.Organizations.GetHook(context.Background(), "%", 1) 103 testURLParseError(t, err) 104 } 105 106 func TestOrganizationsService_EditHook(t *testing.T) { 107 client, mux, _, teardown := setup() 108 defer teardown() 109 110 input := &Hook{} 111 112 mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) { 113 v := new(Hook) 114 json.NewDecoder(r.Body).Decode(v) 115 116 testMethod(t, r, "PATCH") 117 if !reflect.DeepEqual(v, input) { 118 t.Errorf("Request body = %+v, want %+v", v, input) 119 } 120 121 fmt.Fprint(w, `{"id":1}`) 122 }) 123 124 hook, _, err := client.Organizations.EditHook(context.Background(), "o", 1, input) 125 if err != nil { 126 t.Errorf("Organizations.EditHook returned error: %v", err) 127 } 128 129 want := &Hook{ID: Int64(1)} 130 if !reflect.DeepEqual(hook, want) { 131 t.Errorf("Organizations.EditHook returned %+v, want %+v", hook, want) 132 } 133 } 134 135 func TestOrganizationsService_EditHook_invalidOrg(t *testing.T) { 136 client, _, _, teardown := setup() 137 defer teardown() 138 139 _, _, err := client.Organizations.EditHook(context.Background(), "%", 1, nil) 140 testURLParseError(t, err) 141 } 142 143 func TestOrganizationsService_PingHook(t *testing.T) { 144 client, mux, _, teardown := setup() 145 defer teardown() 146 147 mux.HandleFunc("/orgs/o/hooks/1/pings", func(w http.ResponseWriter, r *http.Request) { 148 testMethod(t, r, "POST") 149 }) 150 151 _, err := client.Organizations.PingHook(context.Background(), "o", 1) 152 if err != nil { 153 t.Errorf("Organizations.PingHook returned error: %v", err) 154 } 155 } 156 157 func TestOrganizationsService_DeleteHook(t *testing.T) { 158 client, mux, _, teardown := setup() 159 defer teardown() 160 161 mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) { 162 testMethod(t, r, "DELETE") 163 }) 164 165 _, err := client.Organizations.DeleteHook(context.Background(), "o", 1) 166 if err != nil { 167 t.Errorf("Organizations.DeleteHook returned error: %v", err) 168 } 169 } 170 171 func TestOrganizationsService_DeleteHook_invalidOrg(t *testing.T) { 172 client, _, _, teardown := setup() 173 defer teardown() 174 175 _, err := client.Organizations.DeleteHook(context.Background(), "%", 1) 176 testURLParseError(t, err) 177 }