...

Source file src/github.com/google/go-github/v47/github/repos_keys_test.go

Documentation: github.com/google/go-github/v47/github

     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  	"testing"
    14  
    15  	"github.com/google/go-cmp/cmp"
    16  )
    17  
    18  func TestRepositoriesService_ListKeys(t *testing.T) {
    19  	client, mux, _, teardown := setup()
    20  	defer teardown()
    21  
    22  	mux.HandleFunc("/repos/o/r/keys", func(w http.ResponseWriter, r *http.Request) {
    23  		testMethod(t, r, "GET")
    24  		testFormValues(t, r, values{"page": "2"})
    25  		fmt.Fprint(w, `[{"id":1}]`)
    26  	})
    27  
    28  	opt := &ListOptions{Page: 2}
    29  	ctx := context.Background()
    30  	keys, _, err := client.Repositories.ListKeys(ctx, "o", "r", opt)
    31  	if err != nil {
    32  		t.Errorf("Repositories.ListKeys returned error: %v", err)
    33  	}
    34  
    35  	want := []*Key{{ID: Int64(1)}}
    36  	if !cmp.Equal(keys, want) {
    37  		t.Errorf("Repositories.ListKeys returned %+v, want %+v", keys, want)
    38  	}
    39  
    40  	const methodName = "ListKeys"
    41  	testBadOptions(t, methodName, func() (err error) {
    42  		_, _, err = client.Repositories.ListKeys(ctx, "\n", "\n", opt)
    43  		return err
    44  	})
    45  
    46  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
    47  		got, resp, err := client.Repositories.ListKeys(ctx, "o", "r", opt)
    48  		if got != nil {
    49  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
    50  		}
    51  		return resp, err
    52  	})
    53  }
    54  
    55  func TestRepositoriesService_ListKeys_invalidOwner(t *testing.T) {
    56  	client, _, _, teardown := setup()
    57  	defer teardown()
    58  
    59  	ctx := context.Background()
    60  	_, _, err := client.Repositories.ListKeys(ctx, "%", "%", nil)
    61  	testURLParseError(t, err)
    62  }
    63  
    64  func TestRepositoriesService_GetKey(t *testing.T) {
    65  	client, mux, _, teardown := setup()
    66  	defer teardown()
    67  
    68  	mux.HandleFunc("/repos/o/r/keys/1", func(w http.ResponseWriter, r *http.Request) {
    69  		testMethod(t, r, "GET")
    70  		fmt.Fprint(w, `{"id":1}`)
    71  	})
    72  
    73  	ctx := context.Background()
    74  	key, _, err := client.Repositories.GetKey(ctx, "o", "r", 1)
    75  	if err != nil {
    76  		t.Errorf("Repositories.GetKey returned error: %v", err)
    77  	}
    78  
    79  	want := &Key{ID: Int64(1)}
    80  	if !cmp.Equal(key, want) {
    81  		t.Errorf("Repositories.GetKey returned %+v, want %+v", key, want)
    82  	}
    83  
    84  	const methodName = "GetKey"
    85  	testBadOptions(t, methodName, func() (err error) {
    86  		_, _, err = client.Repositories.GetKey(ctx, "\n", "\n", -1)
    87  		return err
    88  	})
    89  
    90  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
    91  		got, resp, err := client.Repositories.GetKey(ctx, "o", "r", 1)
    92  		if got != nil {
    93  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
    94  		}
    95  		return resp, err
    96  	})
    97  }
    98  
    99  func TestRepositoriesService_GetKey_invalidOwner(t *testing.T) {
   100  	client, _, _, teardown := setup()
   101  	defer teardown()
   102  
   103  	ctx := context.Background()
   104  	_, _, err := client.Repositories.GetKey(ctx, "%", "%", 1)
   105  	testURLParseError(t, err)
   106  }
   107  
   108  func TestRepositoriesService_CreateKey(t *testing.T) {
   109  	client, mux, _, teardown := setup()
   110  	defer teardown()
   111  
   112  	input := &Key{Key: String("k"), Title: String("t")}
   113  
   114  	mux.HandleFunc("/repos/o/r/keys", func(w http.ResponseWriter, r *http.Request) {
   115  		v := new(Key)
   116  		json.NewDecoder(r.Body).Decode(v)
   117  
   118  		testMethod(t, r, "POST")
   119  		if !cmp.Equal(v, input) {
   120  			t.Errorf("Request body = %+v, want %+v", v, input)
   121  		}
   122  
   123  		fmt.Fprint(w, `{"id":1}`)
   124  	})
   125  
   126  	ctx := context.Background()
   127  	key, _, err := client.Repositories.CreateKey(ctx, "o", "r", input)
   128  	if err != nil {
   129  		t.Errorf("Repositories.GetKey returned error: %v", err)
   130  	}
   131  
   132  	want := &Key{ID: Int64(1)}
   133  	if !cmp.Equal(key, want) {
   134  		t.Errorf("Repositories.GetKey returned %+v, want %+v", key, want)
   135  	}
   136  
   137  	const methodName = "CreateKey"
   138  	testBadOptions(t, methodName, func() (err error) {
   139  		_, _, err = client.Repositories.CreateKey(ctx, "\n", "\n", input)
   140  		return err
   141  	})
   142  
   143  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   144  		got, resp, err := client.Repositories.CreateKey(ctx, "o", "r", input)
   145  		if got != nil {
   146  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
   147  		}
   148  		return resp, err
   149  	})
   150  }
   151  
   152  func TestRepositoriesService_CreateKey_invalidOwner(t *testing.T) {
   153  	client, _, _, teardown := setup()
   154  	defer teardown()
   155  
   156  	ctx := context.Background()
   157  	_, _, err := client.Repositories.CreateKey(ctx, "%", "%", nil)
   158  	testURLParseError(t, err)
   159  }
   160  
   161  func TestRepositoriesService_DeleteKey(t *testing.T) {
   162  	client, mux, _, teardown := setup()
   163  	defer teardown()
   164  
   165  	mux.HandleFunc("/repos/o/r/keys/1", func(w http.ResponseWriter, r *http.Request) {
   166  		testMethod(t, r, "DELETE")
   167  	})
   168  
   169  	ctx := context.Background()
   170  	_, err := client.Repositories.DeleteKey(ctx, "o", "r", 1)
   171  	if err != nil {
   172  		t.Errorf("Repositories.DeleteKey returned error: %v", err)
   173  	}
   174  
   175  	const methodName = "DeleteKey"
   176  	testBadOptions(t, methodName, func() (err error) {
   177  		_, err = client.Repositories.DeleteKey(ctx, "\n", "\n", -1)
   178  		return err
   179  	})
   180  
   181  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   182  		return client.Repositories.DeleteKey(ctx, "o", "r", 1)
   183  	})
   184  }
   185  
   186  func TestRepositoriesService_DeleteKey_invalidOwner(t *testing.T) {
   187  	client, _, _, teardown := setup()
   188  	defer teardown()
   189  
   190  	ctx := context.Background()
   191  	_, err := client.Repositories.DeleteKey(ctx, "%", "%", 1)
   192  	testURLParseError(t, err)
   193  }
   194  

View as plain text