1// Copyright 2018 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 6package github 7 8import ( 9 "context" 10 "encoding/json" 11 "fmt" 12 "net/http" 13 "reflect" 14 "testing" 15) 16 17func TestRepositoriesService_ListPreReceiveHooks(t *testing.T) { 18 client, mux, _, teardown := setup() 19 defer teardown() 20 21 mux.HandleFunc("/repos/o/r/pre-receive-hooks", func(w http.ResponseWriter, r *http.Request) { 22 testMethod(t, r, "GET") 23 testHeader(t, r, "Accept", mediaTypePreReceiveHooksPreview) 24 testFormValues(t, r, values{"page": "2"}) 25 fmt.Fprint(w, `[{"id":1}, {"id":2}]`) 26 }) 27 28 opt := &ListOptions{Page: 2} 29 30 hooks, _, err := client.Repositories.ListPreReceiveHooks(context.Background(), "o", "r", opt) 31 if err != nil { 32 t.Errorf("Repositories.ListHooks returned error: %v", err) 33 } 34 35 want := []*PreReceiveHook{{ID: Int64(1)}, {ID: Int64(2)}} 36 if !reflect.DeepEqual(hooks, want) { 37 t.Errorf("Repositories.ListPreReceiveHooks returned %+v, want %+v", hooks, want) 38 } 39} 40 41func TestRepositoriesService_ListPreReceiveHooks_invalidOwner(t *testing.T) { 42 client, _, _, teardown := setup() 43 defer teardown() 44 45 _, _, err := client.Repositories.ListPreReceiveHooks(context.Background(), "%", "%", nil) 46 testURLParseError(t, err) 47} 48 49func TestRepositoriesService_GetPreReceiveHook(t *testing.T) { 50 client, mux, _, teardown := setup() 51 defer teardown() 52 53 mux.HandleFunc("/repos/o/r/pre-receive-hooks/1", func(w http.ResponseWriter, r *http.Request) { 54 testMethod(t, r, "GET") 55 testHeader(t, r, "Accept", mediaTypePreReceiveHooksPreview) 56 fmt.Fprint(w, `{"id":1}`) 57 }) 58 59 hook, _, err := client.Repositories.GetPreReceiveHook(context.Background(), "o", "r", 1) 60 if err != nil { 61 t.Errorf("Repositories.GetPreReceiveHook returned error: %v", err) 62 } 63 64 want := &PreReceiveHook{ID: Int64(1)} 65 if !reflect.DeepEqual(hook, want) { 66 t.Errorf("Repositories.GetPreReceiveHook returned %+v, want %+v", hook, want) 67 } 68} 69 70func TestRepositoriesService_GetPreReceiveHook_invalidOwner(t *testing.T) { 71 client, _, _, teardown := setup() 72 defer teardown() 73 74 _, _, err := client.Repositories.GetPreReceiveHook(context.Background(), "%", "%", 1) 75 testURLParseError(t, err) 76} 77 78func TestRepositoriesService_UpdatePreReceiveHook(t *testing.T) { 79 client, mux, _, teardown := setup() 80 defer teardown() 81 82 input := &PreReceiveHook{Name: String("t")} 83 84 mux.HandleFunc("/repos/o/r/pre-receive-hooks/1", func(w http.ResponseWriter, r *http.Request) { 85 v := new(PreReceiveHook) 86 json.NewDecoder(r.Body).Decode(v) 87 88 testMethod(t, r, "PATCH") 89 if !reflect.DeepEqual(v, input) { 90 t.Errorf("Request body = %+v, want %+v", v, input) 91 } 92 93 fmt.Fprint(w, `{"id":1}`) 94 }) 95 96 hook, _, err := client.Repositories.UpdatePreReceiveHook(context.Background(), "o", "r", 1, input) 97 if err != nil { 98 t.Errorf("Repositories.UpdatePreReceiveHook returned error: %v", err) 99 } 100 101 want := &PreReceiveHook{ID: Int64(1)} 102 if !reflect.DeepEqual(hook, want) { 103 t.Errorf("Repositories.UpdatePreReceiveHook returned %+v, want %+v", hook, want) 104 } 105} 106 107func TestRepositoriesService_PreReceiveHook_invalidOwner(t *testing.T) { 108 client, _, _, teardown := setup() 109 defer teardown() 110 111 _, _, err := client.Repositories.UpdatePreReceiveHook(context.Background(), "%", "%", 1, nil) 112 testURLParseError(t, err) 113} 114 115func TestRepositoriesService_DeletePreReceiveHook(t *testing.T) { 116 client, mux, _, teardown := setup() 117 defer teardown() 118 119 mux.HandleFunc("/repos/o/r/pre-receive-hooks/1", func(w http.ResponseWriter, r *http.Request) { 120 testMethod(t, r, "DELETE") 121 }) 122 123 _, err := client.Repositories.DeletePreReceiveHook(context.Background(), "o", "r", 1) 124 if err != nil { 125 t.Errorf("Repositories.DeletePreReceiveHook returned error: %v", err) 126 } 127} 128 129func TestRepositoriesService_DeletePreReceiveHook_invalidOwner(t *testing.T) { 130 client, _, _, teardown := setup() 131 defer teardown() 132 133 _, err := client.Repositories.DeletePreReceiveHook(context.Background(), "%", "%", 1) 134 testURLParseError(t, err) 135} 136