github.com/google/go-github/v42@v42.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 "testing" 14 15 "github.com/google/go-cmp/cmp" 16 ) 17 18 func TestOrganizationsService_ListHooks(t *testing.T) { 19 client, mux, _, teardown := setup() 20 defer teardown() 21 22 mux.HandleFunc("/orgs/o/hooks", func(w http.ResponseWriter, r *http.Request) { 23 testMethod(t, r, "GET") 24 testFormValues(t, r, values{"page": "2"}) 25 fmt.Fprint(w, `[{"id":1}, {"id":2}]`) 26 }) 27 28 opt := &ListOptions{Page: 2} 29 30 ctx := context.Background() 31 hooks, _, err := client.Organizations.ListHooks(ctx, "o", opt) 32 if err != nil { 33 t.Errorf("Organizations.ListHooks returned error: %v", err) 34 } 35 36 want := []*Hook{{ID: Int64(1)}, {ID: Int64(2)}} 37 if !cmp.Equal(hooks, want) { 38 t.Errorf("Organizations.ListHooks returned %+v, want %+v", hooks, want) 39 } 40 41 const methodName = "ListHooks" 42 testBadOptions(t, methodName, func() (err error) { 43 _, _, err = client.Organizations.ListHooks(ctx, "\n", opt) 44 return err 45 }) 46 47 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 48 got, resp, err := client.Organizations.ListHooks(ctx, "o", opt) 49 if got != nil { 50 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 51 } 52 return resp, err 53 }) 54 } 55 56 func TestOrganizationsService_ListHooks_invalidOrg(t *testing.T) { 57 client, _, _, teardown := setup() 58 defer teardown() 59 60 ctx := context.Background() 61 _, _, err := client.Organizations.ListHooks(ctx, "%", nil) 62 testURLParseError(t, err) 63 } 64 65 func TestOrganizationsService_CreateHook(t *testing.T) { 66 client, mux, _, teardown := setup() 67 defer teardown() 68 69 input := &Hook{CreatedAt: &referenceTime} 70 71 mux.HandleFunc("/orgs/o/hooks", func(w http.ResponseWriter, r *http.Request) { 72 v := new(createHookRequest) 73 json.NewDecoder(r.Body).Decode(v) 74 75 testMethod(t, r, "POST") 76 want := &createHookRequest{Name: "web"} 77 if !cmp.Equal(v, want) { 78 t.Errorf("Request body = %+v, want %+v", v, want) 79 } 80 81 fmt.Fprint(w, `{"id":1}`) 82 }) 83 84 ctx := context.Background() 85 hook, _, err := client.Organizations.CreateHook(ctx, "o", input) 86 if err != nil { 87 t.Errorf("Organizations.CreateHook returned error: %v", err) 88 } 89 90 want := &Hook{ID: Int64(1)} 91 if !cmp.Equal(hook, want) { 92 t.Errorf("Organizations.CreateHook returned %+v, want %+v", hook, want) 93 } 94 95 const methodName = "CreateHook" 96 testBadOptions(t, methodName, func() (err error) { 97 _, _, err = client.Organizations.CreateHook(ctx, "\n", input) 98 return err 99 }) 100 101 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 102 got, resp, err := client.Organizations.CreateHook(ctx, "o", input) 103 if got != nil { 104 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 105 } 106 return resp, err 107 }) 108 } 109 110 func TestOrganizationsService_GetHook(t *testing.T) { 111 client, mux, _, teardown := setup() 112 defer teardown() 113 114 mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) { 115 testMethod(t, r, "GET") 116 fmt.Fprint(w, `{"id":1}`) 117 }) 118 119 ctx := context.Background() 120 hook, _, err := client.Organizations.GetHook(ctx, "o", 1) 121 if err != nil { 122 t.Errorf("Organizations.GetHook returned error: %v", err) 123 } 124 125 want := &Hook{ID: Int64(1)} 126 if !cmp.Equal(hook, want) { 127 t.Errorf("Organizations.GetHook returned %+v, want %+v", hook, want) 128 } 129 130 const methodName = "GetHook" 131 testBadOptions(t, methodName, func() (err error) { 132 _, _, err = client.Organizations.GetHook(ctx, "\n", -1) 133 return err 134 }) 135 } 136 137 func TestOrganizationsService_GetHook_invalidOrg(t *testing.T) { 138 client, _, _, teardown := setup() 139 defer teardown() 140 141 ctx := context.Background() 142 _, _, err := client.Organizations.GetHook(ctx, "%", 1) 143 testURLParseError(t, err) 144 } 145 146 func TestOrganizationsService_EditHook(t *testing.T) { 147 client, mux, _, teardown := setup() 148 defer teardown() 149 150 input := &Hook{} 151 152 mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) { 153 v := new(Hook) 154 json.NewDecoder(r.Body).Decode(v) 155 156 testMethod(t, r, "PATCH") 157 if !cmp.Equal(v, input) { 158 t.Errorf("Request body = %+v, want %+v", v, input) 159 } 160 161 fmt.Fprint(w, `{"id":1}`) 162 }) 163 164 ctx := context.Background() 165 hook, _, err := client.Organizations.EditHook(ctx, "o", 1, input) 166 if err != nil { 167 t.Errorf("Organizations.EditHook returned error: %v", err) 168 } 169 170 want := &Hook{ID: Int64(1)} 171 if !cmp.Equal(hook, want) { 172 t.Errorf("Organizations.EditHook returned %+v, want %+v", hook, want) 173 } 174 175 const methodName = "EditHook" 176 testBadOptions(t, methodName, func() (err error) { 177 _, _, err = client.Organizations.EditHook(ctx, "\n", -1, input) 178 return err 179 }) 180 } 181 182 func TestOrganizationsService_EditHook_invalidOrg(t *testing.T) { 183 client, _, _, teardown := setup() 184 defer teardown() 185 186 ctx := context.Background() 187 _, _, err := client.Organizations.EditHook(ctx, "%", 1, nil) 188 testURLParseError(t, err) 189 } 190 191 func TestOrganizationsService_PingHook(t *testing.T) { 192 client, mux, _, teardown := setup() 193 defer teardown() 194 195 mux.HandleFunc("/orgs/o/hooks/1/pings", func(w http.ResponseWriter, r *http.Request) { 196 testMethod(t, r, "POST") 197 }) 198 199 ctx := context.Background() 200 _, err := client.Organizations.PingHook(ctx, "o", 1) 201 if err != nil { 202 t.Errorf("Organizations.PingHook returned error: %v", err) 203 } 204 205 const methodName = "PingHook" 206 testBadOptions(t, methodName, func() (err error) { 207 _, err = client.Organizations.PingHook(ctx, "\n", -1) 208 return err 209 }) 210 211 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 212 return client.Organizations.PingHook(ctx, "o", 1) 213 }) 214 } 215 216 func TestOrganizationsService_DeleteHook(t *testing.T) { 217 client, mux, _, teardown := setup() 218 defer teardown() 219 220 mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) { 221 testMethod(t, r, "DELETE") 222 }) 223 224 ctx := context.Background() 225 _, err := client.Organizations.DeleteHook(ctx, "o", 1) 226 if err != nil { 227 t.Errorf("Organizations.DeleteHook returned error: %v", err) 228 } 229 230 const methodName = "DeleteHook" 231 testBadOptions(t, methodName, func() (err error) { 232 _, err = client.Organizations.DeleteHook(ctx, "\n", -1) 233 return err 234 }) 235 236 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 237 return client.Organizations.DeleteHook(ctx, "o", 1) 238 }) 239 } 240 241 func TestOrganizationsService_DeleteHook_invalidOrg(t *testing.T) { 242 client, _, _, teardown := setup() 243 defer teardown() 244 245 ctx := context.Background() 246 _, err := client.Organizations.DeleteHook(ctx, "%", 1) 247 testURLParseError(t, err) 248 }