github.com/google/go-github/v33@v33.0.0/github/users_gpg_keys_test.go (about) 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 6 package github 7 8 import ( 9 "context" 10 "encoding/json" 11 "fmt" 12 "net/http" 13 "reflect" 14 "testing" 15 ) 16 17 func TestUsersService_ListGPGKeys_authenticatedUser(t *testing.T) { 18 client, mux, _, teardown := setup() 19 defer teardown() 20 21 mux.HandleFunc("/user/gpg_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,"primary_key_id":2}]`) 25 }) 26 27 opt := &ListOptions{Page: 2} 28 keys, _, err := client.Users.ListGPGKeys(context.Background(), "", opt) 29 if err != nil { 30 t.Errorf("Users.ListGPGKeys returned error: %v", err) 31 } 32 33 want := []*GPGKey{{ID: Int64(1), PrimaryKeyID: Int64(2)}} 34 if !reflect.DeepEqual(keys, want) { 35 t.Errorf("Users.ListGPGKeys = %+v, want %+v", keys, want) 36 } 37 } 38 39 func TestUsersService_ListGPGKeys_specifiedUser(t *testing.T) { 40 client, mux, _, teardown := setup() 41 defer teardown() 42 43 mux.HandleFunc("/users/u/gpg_keys", func(w http.ResponseWriter, r *http.Request) { 44 testMethod(t, r, "GET") 45 fmt.Fprint(w, `[{"id":1,"primary_key_id":2}]`) 46 }) 47 48 keys, _, err := client.Users.ListGPGKeys(context.Background(), "u", nil) 49 if err != nil { 50 t.Errorf("Users.ListGPGKeys returned error: %v", err) 51 } 52 53 want := []*GPGKey{{ID: Int64(1), PrimaryKeyID: Int64(2)}} 54 if !reflect.DeepEqual(keys, want) { 55 t.Errorf("Users.ListGPGKeys = %+v, want %+v", keys, want) 56 } 57 } 58 59 func TestUsersService_ListGPGKeys_invalidUser(t *testing.T) { 60 client, _, _, teardown := setup() 61 defer teardown() 62 63 _, _, err := client.Users.ListGPGKeys(context.Background(), "%", nil) 64 testURLParseError(t, err) 65 } 66 67 func TestUsersService_GetGPGKey(t *testing.T) { 68 client, mux, _, teardown := setup() 69 defer teardown() 70 71 mux.HandleFunc("/user/gpg_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.GetGPGKey(context.Background(), 1) 77 if err != nil { 78 t.Errorf("Users.GetGPGKey returned error: %v", err) 79 } 80 81 want := &GPGKey{ID: Int64(1)} 82 if !reflect.DeepEqual(key, want) { 83 t.Errorf("Users.GetGPGKey = %+v, want %+v", key, want) 84 } 85 } 86 87 func TestUsersService_CreateGPGKey(t *testing.T) { 88 client, mux, _, teardown := setup() 89 defer teardown() 90 91 input := ` 92 -----BEGIN PGP PUBLIC KEY BLOCK----- 93 Comment: GPGTools - https://gpgtools.org 94 95 mQINBFcEd9kBEACo54TDbGhKlXKWMvJgecEUKPPcv7XdnpKdGb3LRw5MvFwT0V0f 96 ... 97 =tqfb 98 -----END PGP PUBLIC KEY BLOCK-----` 99 100 mux.HandleFunc("/user/gpg_keys", func(w http.ResponseWriter, r *http.Request) { 101 var gpgKey struct { 102 ArmoredPublicKey *string `json:"armored_public_key,omitempty"` 103 } 104 json.NewDecoder(r.Body).Decode(&gpgKey) 105 106 testMethod(t, r, "POST") 107 if gpgKey.ArmoredPublicKey == nil || *gpgKey.ArmoredPublicKey != input { 108 t.Errorf("gpgKey = %+v, want %q", gpgKey, input) 109 } 110 111 fmt.Fprint(w, `{"id":1}`) 112 }) 113 114 gpgKey, _, err := client.Users.CreateGPGKey(context.Background(), input) 115 if err != nil { 116 t.Errorf("Users.GetGPGKey returned error: %v", err) 117 } 118 119 want := &GPGKey{ID: Int64(1)} 120 if !reflect.DeepEqual(gpgKey, want) { 121 t.Errorf("Users.GetGPGKey = %+v, want %+v", gpgKey, want) 122 } 123 } 124 125 func TestUsersService_DeleteGPGKey(t *testing.T) { 126 client, mux, _, teardown := setup() 127 defer teardown() 128 129 mux.HandleFunc("/user/gpg_keys/1", func(w http.ResponseWriter, r *http.Request) { 130 testMethod(t, r, "DELETE") 131 }) 132 133 _, err := client.Users.DeleteGPGKey(context.Background(), 1) 134 if err != nil { 135 t.Errorf("Users.DeleteGPGKey returned error: %v", err) 136 } 137 }