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 6package github 7 8import ( 9 "context" 10 "encoding/json" 11 "fmt" 12 "net/http" 13 "reflect" 14 "testing" 15) 16 17func TestUsersService_ListKeys_authenticatedUser(t *testing.T) { 18 client, mux, _, teardown := setup() 19 defer teardown() 20 21 mux.HandleFunc("/user/keys", func(w http.ResponseWriter, r *http.Request) { 22 testMethod(t, r, "GET") 23 testFormValues(t, r, values{"page": "2"}) 24 fmt.Fprint(w, `[{"id":1}]`) 25 }) 26 27 opt := &ListOptions{Page: 2} 28 keys, _, err := client.Users.ListKeys(context.Background(), "", opt) 29 if err != nil { 30 t.Errorf("Users.ListKeys returned error: %v", err) 31 } 32 33 want := []*Key{{ID: Int64(1)}} 34 if !reflect.DeepEqual(keys, want) { 35 t.Errorf("Users.ListKeys returned %+v, want %+v", keys, want) 36 } 37} 38 39func TestUsersService_ListKeys_specifiedUser(t *testing.T) { 40 client, mux, _, teardown := setup() 41 defer teardown() 42 43 mux.HandleFunc("/users/u/keys", func(w http.ResponseWriter, r *http.Request) { 44 testMethod(t, r, "GET") 45 fmt.Fprint(w, `[{"id":1}]`) 46 }) 47 48 keys, _, err := client.Users.ListKeys(context.Background(), "u", nil) 49 if err != nil { 50 t.Errorf("Users.ListKeys returned error: %v", err) 51 } 52 53 want := []*Key{{ID: Int64(1)}} 54 if !reflect.DeepEqual(keys, want) { 55 t.Errorf("Users.ListKeys returned %+v, want %+v", keys, want) 56 } 57} 58 59func TestUsersService_ListKeys_invalidUser(t *testing.T) { 60 client, _, _, teardown := setup() 61 defer teardown() 62 63 _, _, err := client.Users.ListKeys(context.Background(), "%", nil) 64 testURLParseError(t, err) 65} 66 67func TestUsersService_GetKey(t *testing.T) { 68 client, mux, _, teardown := setup() 69 defer teardown() 70 71 mux.HandleFunc("/user/keys/1", func(w http.ResponseWriter, r *http.Request) { 72 testMethod(t, r, "GET") 73 fmt.Fprint(w, `{"id":1}`) 74 }) 75 76 key, _, err := client.Users.GetKey(context.Background(), 1) 77 if err != nil { 78 t.Errorf("Users.GetKey returned error: %v", err) 79 } 80 81 want := &Key{ID: Int64(1)} 82 if !reflect.DeepEqual(key, want) { 83 t.Errorf("Users.GetKey returned %+v, want %+v", key, want) 84 } 85} 86 87func TestUsersService_CreateKey(t *testing.T) { 88 client, mux, _, teardown := setup() 89 defer teardown() 90 91 input := &Key{Key: String("k"), Title: String("t")} 92 93 mux.HandleFunc("/user/keys", func(w http.ResponseWriter, r *http.Request) { 94 v := new(Key) 95 json.NewDecoder(r.Body).Decode(v) 96 97 testMethod(t, r, "POST") 98 if !reflect.DeepEqual(v, input) { 99 t.Errorf("Request body = %+v, want %+v", v, input) 100 } 101 102 fmt.Fprint(w, `{"id":1}`) 103 }) 104 105 key, _, err := client.Users.CreateKey(context.Background(), input) 106 if err != nil { 107 t.Errorf("Users.GetKey returned error: %v", err) 108 } 109 110 want := &Key{ID: Int64(1)} 111 if !reflect.DeepEqual(key, want) { 112 t.Errorf("Users.GetKey returned %+v, want %+v", key, want) 113 } 114} 115 116func TestUsersService_DeleteKey(t *testing.T) { 117 client, mux, _, teardown := setup() 118 defer teardown() 119 120 mux.HandleFunc("/user/keys/1", func(w http.ResponseWriter, r *http.Request) { 121 testMethod(t, r, "DELETE") 122 }) 123 124 _, err := client.Users.DeleteKey(context.Background(), 1) 125 if err != nil { 126 t.Errorf("Users.DeleteKey returned error: %v", err) 127 } 128} 129