github.com/google/go-github/v33@v33.0.0/github/repos_keys_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 "encoding/json" 11 "fmt" 12 "net/http" 13 "reflect" 14 "testing" 15 ) 16 17 func TestRepositoriesService_ListKeys(t *testing.T) { 18 client, mux, _, teardown := setup() 19 defer teardown() 20 21 mux.HandleFunc("/repos/o/r/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.Repositories.ListKeys(context.Background(), "o", "r", opt) 29 if err != nil { 30 t.Errorf("Repositories.ListKeys returned error: %v", err) 31 } 32 33 want := []*Key{{ID: Int64(1)}} 34 if !reflect.DeepEqual(keys, want) { 35 t.Errorf("Repositories.ListKeys returned %+v, want %+v", keys, want) 36 } 37 } 38 39 func TestRepositoriesService_ListKeys_invalidOwner(t *testing.T) { 40 client, _, _, teardown := setup() 41 defer teardown() 42 43 _, _, err := client.Repositories.ListKeys(context.Background(), "%", "%", nil) 44 testURLParseError(t, err) 45 } 46 47 func TestRepositoriesService_GetKey(t *testing.T) { 48 client, mux, _, teardown := setup() 49 defer teardown() 50 51 mux.HandleFunc("/repos/o/r/keys/1", func(w http.ResponseWriter, r *http.Request) { 52 testMethod(t, r, "GET") 53 fmt.Fprint(w, `{"id":1}`) 54 }) 55 56 key, _, err := client.Repositories.GetKey(context.Background(), "o", "r", 1) 57 if err != nil { 58 t.Errorf("Repositories.GetKey returned error: %v", err) 59 } 60 61 want := &Key{ID: Int64(1)} 62 if !reflect.DeepEqual(key, want) { 63 t.Errorf("Repositories.GetKey returned %+v, want %+v", key, want) 64 } 65 } 66 67 func TestRepositoriesService_GetKey_invalidOwner(t *testing.T) { 68 client, _, _, teardown := setup() 69 defer teardown() 70 71 _, _, err := client.Repositories.GetKey(context.Background(), "%", "%", 1) 72 testURLParseError(t, err) 73 } 74 75 func TestRepositoriesService_CreateKey(t *testing.T) { 76 client, mux, _, teardown := setup() 77 defer teardown() 78 79 input := &Key{Key: String("k"), Title: String("t")} 80 81 mux.HandleFunc("/repos/o/r/keys", func(w http.ResponseWriter, r *http.Request) { 82 v := new(Key) 83 json.NewDecoder(r.Body).Decode(v) 84 85 testMethod(t, r, "POST") 86 if !reflect.DeepEqual(v, input) { 87 t.Errorf("Request body = %+v, want %+v", v, input) 88 } 89 90 fmt.Fprint(w, `{"id":1}`) 91 }) 92 93 key, _, err := client.Repositories.CreateKey(context.Background(), "o", "r", input) 94 if err != nil { 95 t.Errorf("Repositories.GetKey returned error: %v", err) 96 } 97 98 want := &Key{ID: Int64(1)} 99 if !reflect.DeepEqual(key, want) { 100 t.Errorf("Repositories.GetKey returned %+v, want %+v", key, want) 101 } 102 } 103 104 func TestRepositoriesService_CreateKey_invalidOwner(t *testing.T) { 105 client, _, _, teardown := setup() 106 defer teardown() 107 108 _, _, err := client.Repositories.CreateKey(context.Background(), "%", "%", nil) 109 testURLParseError(t, err) 110 } 111 112 func TestRepositoriesService_DeleteKey(t *testing.T) { 113 client, mux, _, teardown := setup() 114 defer teardown() 115 116 mux.HandleFunc("/repos/o/r/keys/1", func(w http.ResponseWriter, r *http.Request) { 117 testMethod(t, r, "DELETE") 118 }) 119 120 _, err := client.Repositories.DeleteKey(context.Background(), "o", "r", 1) 121 if err != nil { 122 t.Errorf("Repositories.DeleteKey returned error: %v", err) 123 } 124 } 125 126 func TestRepositoriesService_DeleteKey_invalidOwner(t *testing.T) { 127 client, _, _, teardown := setup() 128 defer teardown() 129 130 _, err := client.Repositories.DeleteKey(context.Background(), "%", "%", 1) 131 testURLParseError(t, err) 132 }