github.com/google/go-github/v33@v33.0.0/github/users_followers_test.go (about) 1 // Copyright 2013 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 "fmt" 11 "net/http" 12 "reflect" 13 "testing" 14 ) 15 16 func TestUsersService_ListFollowers_authenticatedUser(t *testing.T) { 17 client, mux, _, teardown := setup() 18 defer teardown() 19 20 mux.HandleFunc("/user/followers", func(w http.ResponseWriter, r *http.Request) { 21 testMethod(t, r, "GET") 22 testFormValues(t, r, values{"page": "2"}) 23 fmt.Fprint(w, `[{"id":1}]`) 24 }) 25 26 opt := &ListOptions{Page: 2} 27 users, _, err := client.Users.ListFollowers(context.Background(), "", opt) 28 if err != nil { 29 t.Errorf("Users.ListFollowers returned error: %v", err) 30 } 31 32 want := []*User{{ID: Int64(1)}} 33 if !reflect.DeepEqual(users, want) { 34 t.Errorf("Users.ListFollowers returned %+v, want %+v", users, want) 35 } 36 } 37 38 func TestUsersService_ListFollowers_specifiedUser(t *testing.T) { 39 client, mux, _, teardown := setup() 40 defer teardown() 41 42 mux.HandleFunc("/users/u/followers", func(w http.ResponseWriter, r *http.Request) { 43 testMethod(t, r, "GET") 44 fmt.Fprint(w, `[{"id":1}]`) 45 }) 46 47 users, _, err := client.Users.ListFollowers(context.Background(), "u", nil) 48 if err != nil { 49 t.Errorf("Users.ListFollowers returned error: %v", err) 50 } 51 52 want := []*User{{ID: Int64(1)}} 53 if !reflect.DeepEqual(users, want) { 54 t.Errorf("Users.ListFollowers returned %+v, want %+v", users, want) 55 } 56 } 57 58 func TestUsersService_ListFollowers_invalidUser(t *testing.T) { 59 client, _, _, teardown := setup() 60 defer teardown() 61 62 _, _, err := client.Users.ListFollowers(context.Background(), "%", nil) 63 testURLParseError(t, err) 64 } 65 66 func TestUsersService_ListFollowing_authenticatedUser(t *testing.T) { 67 client, mux, _, teardown := setup() 68 defer teardown() 69 70 mux.HandleFunc("/user/following", func(w http.ResponseWriter, r *http.Request) { 71 testMethod(t, r, "GET") 72 testFormValues(t, r, values{"page": "2"}) 73 fmt.Fprint(w, `[{"id":1}]`) 74 }) 75 76 opts := &ListOptions{Page: 2} 77 users, _, err := client.Users.ListFollowing(context.Background(), "", opts) 78 if err != nil { 79 t.Errorf("Users.ListFollowing returned error: %v", err) 80 } 81 82 want := []*User{{ID: Int64(1)}} 83 if !reflect.DeepEqual(users, want) { 84 t.Errorf("Users.ListFollowing returned %+v, want %+v", users, want) 85 } 86 } 87 88 func TestUsersService_ListFollowing_specifiedUser(t *testing.T) { 89 client, mux, _, teardown := setup() 90 defer teardown() 91 92 mux.HandleFunc("/users/u/following", func(w http.ResponseWriter, r *http.Request) { 93 testMethod(t, r, "GET") 94 fmt.Fprint(w, `[{"id":1}]`) 95 }) 96 97 users, _, err := client.Users.ListFollowing(context.Background(), "u", nil) 98 if err != nil { 99 t.Errorf("Users.ListFollowing returned error: %v", err) 100 } 101 102 want := []*User{{ID: Int64(1)}} 103 if !reflect.DeepEqual(users, want) { 104 t.Errorf("Users.ListFollowing returned %+v, want %+v", users, want) 105 } 106 } 107 108 func TestUsersService_ListFollowing_invalidUser(t *testing.T) { 109 client, _, _, teardown := setup() 110 defer teardown() 111 112 _, _, err := client.Users.ListFollowing(context.Background(), "%", nil) 113 testURLParseError(t, err) 114 } 115 116 func TestUsersService_IsFollowing_authenticatedUser(t *testing.T) { 117 client, mux, _, teardown := setup() 118 defer teardown() 119 120 mux.HandleFunc("/user/following/t", func(w http.ResponseWriter, r *http.Request) { 121 testMethod(t, r, "GET") 122 w.WriteHeader(http.StatusNoContent) 123 }) 124 125 following, _, err := client.Users.IsFollowing(context.Background(), "", "t") 126 if err != nil { 127 t.Errorf("Users.IsFollowing returned error: %v", err) 128 } 129 if want := true; following != want { 130 t.Errorf("Users.IsFollowing returned %+v, want %+v", following, want) 131 } 132 } 133 134 func TestUsersService_IsFollowing_specifiedUser(t *testing.T) { 135 client, mux, _, teardown := setup() 136 defer teardown() 137 138 mux.HandleFunc("/users/u/following/t", func(w http.ResponseWriter, r *http.Request) { 139 testMethod(t, r, "GET") 140 w.WriteHeader(http.StatusNoContent) 141 }) 142 143 following, _, err := client.Users.IsFollowing(context.Background(), "u", "t") 144 if err != nil { 145 t.Errorf("Users.IsFollowing returned error: %v", err) 146 } 147 if want := true; following != want { 148 t.Errorf("Users.IsFollowing returned %+v, want %+v", following, want) 149 } 150 } 151 152 func TestUsersService_IsFollowing_false(t *testing.T) { 153 client, mux, _, teardown := setup() 154 defer teardown() 155 156 mux.HandleFunc("/users/u/following/t", func(w http.ResponseWriter, r *http.Request) { 157 testMethod(t, r, "GET") 158 w.WriteHeader(http.StatusNotFound) 159 }) 160 161 following, _, err := client.Users.IsFollowing(context.Background(), "u", "t") 162 if err != nil { 163 t.Errorf("Users.IsFollowing returned error: %v", err) 164 } 165 if want := false; following != want { 166 t.Errorf("Users.IsFollowing returned %+v, want %+v", following, want) 167 } 168 } 169 170 func TestUsersService_IsFollowing_error(t *testing.T) { 171 client, mux, _, teardown := setup() 172 defer teardown() 173 174 mux.HandleFunc("/users/u/following/t", func(w http.ResponseWriter, r *http.Request) { 175 testMethod(t, r, "GET") 176 http.Error(w, "BadRequest", http.StatusBadRequest) 177 }) 178 179 following, _, err := client.Users.IsFollowing(context.Background(), "u", "t") 180 if err == nil { 181 t.Errorf("Expected HTTP 400 response") 182 } 183 if want := false; following != want { 184 t.Errorf("Users.IsFollowing returned %+v, want %+v", following, want) 185 } 186 } 187 188 func TestUsersService_IsFollowing_invalidUser(t *testing.T) { 189 client, _, _, teardown := setup() 190 defer teardown() 191 192 _, _, err := client.Users.IsFollowing(context.Background(), "%", "%") 193 testURLParseError(t, err) 194 } 195 196 func TestUsersService_Follow(t *testing.T) { 197 client, mux, _, teardown := setup() 198 defer teardown() 199 200 mux.HandleFunc("/user/following/u", func(w http.ResponseWriter, r *http.Request) { 201 testMethod(t, r, "PUT") 202 }) 203 204 _, err := client.Users.Follow(context.Background(), "u") 205 if err != nil { 206 t.Errorf("Users.Follow returned error: %v", err) 207 } 208 } 209 210 func TestUsersService_Follow_invalidUser(t *testing.T) { 211 client, _, _, teardown := setup() 212 defer teardown() 213 214 _, err := client.Users.Follow(context.Background(), "%") 215 testURLParseError(t, err) 216 } 217 218 func TestUsersService_Unfollow(t *testing.T) { 219 client, mux, _, teardown := setup() 220 defer teardown() 221 222 mux.HandleFunc("/user/following/u", func(w http.ResponseWriter, r *http.Request) { 223 testMethod(t, r, "DELETE") 224 }) 225 226 _, err := client.Users.Unfollow(context.Background(), "u") 227 if err != nil { 228 t.Errorf("Users.Follow returned error: %v", err) 229 } 230 } 231 232 func TestUsersService_Unfollow_invalidUser(t *testing.T) { 233 client, _, _, teardown := setup() 234 defer teardown() 235 236 _, err := client.Users.Unfollow(context.Background(), "%") 237 testURLParseError(t, err) 238 }