1// Copyright 2016 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 "fmt" 11 "net/http" 12 "reflect" 13 "testing" 14) 15 16func TestRepositoriesService_ListInvitations(t *testing.T) { 17 client, mux, _, teardown := setup() 18 defer teardown() 19 20 mux.HandleFunc("/repos/o/r/invitations", func(w http.ResponseWriter, r *http.Request) { 21 testMethod(t, r, "GET") 22 testFormValues(t, r, values{"page": "2"}) 23 fmt.Fprintf(w, `[{"id":1}, {"id":2}]`) 24 }) 25 26 opt := &ListOptions{Page: 2} 27 ctx := context.Background() 28 got, _, err := client.Repositories.ListInvitations(ctx, "o", "r", opt) 29 if err != nil { 30 t.Errorf("Repositories.ListInvitations returned error: %v", err) 31 } 32 33 want := []*RepositoryInvitation{{ID: Int64(1)}, {ID: Int64(2)}} 34 if !reflect.DeepEqual(got, want) { 35 t.Errorf("Repositories.ListInvitations = %+v, want %+v", got, want) 36 } 37 38 const methodName = "ListInvitations" 39 testBadOptions(t, methodName, func() (err error) { 40 _, _, err = client.Repositories.ListInvitations(ctx, "\n", "\n", opt) 41 return err 42 }) 43 44 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 45 got, resp, err := client.Repositories.ListInvitations(ctx, "o", "r", opt) 46 if got != nil { 47 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 48 } 49 return resp, err 50 }) 51} 52 53func TestRepositoriesService_DeleteInvitation(t *testing.T) { 54 client, mux, _, teardown := setup() 55 defer teardown() 56 57 mux.HandleFunc("/repos/o/r/invitations/2", func(w http.ResponseWriter, r *http.Request) { 58 testMethod(t, r, "DELETE") 59 w.WriteHeader(http.StatusNoContent) 60 }) 61 62 ctx := context.Background() 63 _, err := client.Repositories.DeleteInvitation(ctx, "o", "r", 2) 64 if err != nil { 65 t.Errorf("Repositories.DeleteInvitation returned error: %v", err) 66 } 67 68 const methodName = "DeleteInvitation" 69 testBadOptions(t, methodName, func() (err error) { 70 _, err = client.Repositories.DeleteInvitation(ctx, "\n", "\n", 2) 71 return err 72 }) 73 74 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 75 return client.Repositories.DeleteInvitation(ctx, "o", "r", 2) 76 }) 77} 78 79func TestRepositoriesService_UpdateInvitation(t *testing.T) { 80 client, mux, _, teardown := setup() 81 defer teardown() 82 83 mux.HandleFunc("/repos/o/r/invitations/2", func(w http.ResponseWriter, r *http.Request) { 84 testMethod(t, r, "PATCH") 85 fmt.Fprintf(w, `{"id":1}`) 86 }) 87 88 ctx := context.Background() 89 got, _, err := client.Repositories.UpdateInvitation(ctx, "o", "r", 2, "write") 90 if err != nil { 91 t.Errorf("Repositories.UpdateInvitation returned error: %v", err) 92 } 93 94 want := &RepositoryInvitation{ID: Int64(1)} 95 if !reflect.DeepEqual(got, want) { 96 t.Errorf("Repositories.UpdateInvitation = %+v, want %+v", got, want) 97 } 98 99 const methodName = "UpdateInvitation" 100 testBadOptions(t, methodName, func() (err error) { 101 _, _, err = client.Repositories.UpdateInvitation(ctx, "\n", "\n", 2, "write") 102 return err 103 }) 104 105 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 106 got, resp, err := client.Repositories.UpdateInvitation(ctx, "o", "r", 2, "write") 107 if got != nil { 108 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 109 } 110 return resp, err 111 }) 112} 113