1// Copyright 2017 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 TestUsersService_ListBlockedUsers(t *testing.T) { 17 client, mux, _, teardown := setup() 18 defer teardown() 19 20 mux.HandleFunc("/user/blocks", func(w http.ResponseWriter, r *http.Request) { 21 testMethod(t, r, "GET") 22 testHeader(t, r, "Accept", mediaTypeBlockUsersPreview) 23 testFormValues(t, r, values{"page": "2"}) 24 fmt.Fprint(w, `[{ 25 "login": "octocat" 26 }]`) 27 }) 28 29 opt := &ListOptions{Page: 2} 30 ctx := context.Background() 31 blockedUsers, _, err := client.Users.ListBlockedUsers(ctx, opt) 32 if err != nil { 33 t.Errorf("Users.ListBlockedUsers returned error: %v", err) 34 } 35 36 want := []*User{{Login: String("octocat")}} 37 if !reflect.DeepEqual(blockedUsers, want) { 38 t.Errorf("Users.ListBlockedUsers returned %+v, want %+v", blockedUsers, want) 39 } 40 41 const methodName = "ListBlockedUsers" 42 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 43 got, resp, err := client.Users.ListBlockedUsers(ctx, opt) 44 if got != nil { 45 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 46 } 47 return resp, err 48 }) 49} 50 51func TestUsersService_IsBlocked(t *testing.T) { 52 client, mux, _, teardown := setup() 53 defer teardown() 54 55 mux.HandleFunc("/user/blocks/u", func(w http.ResponseWriter, r *http.Request) { 56 testMethod(t, r, "GET") 57 testHeader(t, r, "Accept", mediaTypeBlockUsersPreview) 58 w.WriteHeader(http.StatusNoContent) 59 }) 60 61 ctx := context.Background() 62 isBlocked, _, err := client.Users.IsBlocked(ctx, "u") 63 if err != nil { 64 t.Errorf("Users.IsBlocked returned error: %v", err) 65 } 66 if want := true; isBlocked != want { 67 t.Errorf("Users.IsBlocked returned %+v, want %+v", isBlocked, want) 68 } 69 70 const methodName = "IsBlocked" 71 testBadOptions(t, methodName, func() (err error) { 72 _, _, err = client.Users.IsBlocked(ctx, "\n") 73 return err 74 }) 75 76 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 77 got, resp, err := client.Users.IsBlocked(ctx, "u") 78 if got { 79 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 80 } 81 return resp, err 82 }) 83} 84 85func TestUsersService_BlockUser(t *testing.T) { 86 client, mux, _, teardown := setup() 87 defer teardown() 88 89 mux.HandleFunc("/user/blocks/u", func(w http.ResponseWriter, r *http.Request) { 90 testMethod(t, r, "PUT") 91 testHeader(t, r, "Accept", mediaTypeBlockUsersPreview) 92 w.WriteHeader(http.StatusNoContent) 93 }) 94 95 ctx := context.Background() 96 _, err := client.Users.BlockUser(ctx, "u") 97 if err != nil { 98 t.Errorf("Users.BlockUser returned error: %v", err) 99 } 100 101 const methodName = "BlockUser" 102 testBadOptions(t, methodName, func() (err error) { 103 _, err = client.Users.BlockUser(ctx, "\n") 104 return err 105 }) 106 107 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 108 return client.Users.BlockUser(ctx, "u") 109 }) 110} 111 112func TestUsersService_UnblockUser(t *testing.T) { 113 client, mux, _, teardown := setup() 114 defer teardown() 115 116 mux.HandleFunc("/user/blocks/u", func(w http.ResponseWriter, r *http.Request) { 117 testMethod(t, r, "DELETE") 118 testHeader(t, r, "Accept", mediaTypeBlockUsersPreview) 119 w.WriteHeader(http.StatusNoContent) 120 }) 121 122 ctx := context.Background() 123 _, err := client.Users.UnblockUser(ctx, "u") 124 if err != nil { 125 t.Errorf("Users.UnblockUser returned error: %v", err) 126 } 127 128 const methodName = "UnblockUser" 129 testBadOptions(t, methodName, func() (err error) { 130 _, err = client.Users.UnblockUser(ctx, "\n") 131 return err 132 }) 133 134 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 135 return client.Users.UnblockUser(ctx, "u") 136 }) 137} 138