github.com/google/go-github/v33@v33.0.0/github/orgs_hooks_test.go (about)

     1  // Copyright 2015 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 TestOrganizationsService_ListHooks(t *testing.T) {
    18  	client, mux, _, teardown := setup()
    19  	defer teardown()
    20  
    21  	mux.HandleFunc("/orgs/o/hooks", 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}, {"id":2}]`)
    25  	})
    26  
    27  	opt := &ListOptions{Page: 2}
    28  
    29  	hooks, _, err := client.Organizations.ListHooks(context.Background(), "o", opt)
    30  	if err != nil {
    31  		t.Errorf("Organizations.ListHooks returned error: %v", err)
    32  	}
    33  
    34  	want := []*Hook{{ID: Int64(1)}, {ID: Int64(2)}}
    35  	if !reflect.DeepEqual(hooks, want) {
    36  		t.Errorf("Organizations.ListHooks returned %+v, want %+v", hooks, want)
    37  	}
    38  }
    39  
    40  func TestOrganizationsService_ListHooks_invalidOrg(t *testing.T) {
    41  	client, _, _, teardown := setup()
    42  	defer teardown()
    43  
    44  	_, _, err := client.Organizations.ListHooks(context.Background(), "%", nil)
    45  	testURLParseError(t, err)
    46  }
    47  
    48  func TestOrganizationsService_CreateHook(t *testing.T) {
    49  	client, mux, _, teardown := setup()
    50  	defer teardown()
    51  
    52  	input := &Hook{CreatedAt: &referenceTime}
    53  
    54  	mux.HandleFunc("/orgs/o/hooks", func(w http.ResponseWriter, r *http.Request) {
    55  		v := new(createHookRequest)
    56  		json.NewDecoder(r.Body).Decode(v)
    57  
    58  		testMethod(t, r, "POST")
    59  		want := &createHookRequest{Name: "web"}
    60  		if !reflect.DeepEqual(v, want) {
    61  			t.Errorf("Request body = %+v, want %+v", v, want)
    62  		}
    63  
    64  		fmt.Fprint(w, `{"id":1}`)
    65  	})
    66  
    67  	hook, _, err := client.Organizations.CreateHook(context.Background(), "o", input)
    68  	if err != nil {
    69  		t.Errorf("Organizations.CreateHook returned error: %v", err)
    70  	}
    71  
    72  	want := &Hook{ID: Int64(1)}
    73  	if !reflect.DeepEqual(hook, want) {
    74  		t.Errorf("Organizations.CreateHook returned %+v, want %+v", hook, want)
    75  	}
    76  }
    77  
    78  func TestOrganizationsService_GetHook(t *testing.T) {
    79  	client, mux, _, teardown := setup()
    80  	defer teardown()
    81  
    82  	mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) {
    83  		testMethod(t, r, "GET")
    84  		fmt.Fprint(w, `{"id":1}`)
    85  	})
    86  
    87  	hook, _, err := client.Organizations.GetHook(context.Background(), "o", 1)
    88  	if err != nil {
    89  		t.Errorf("Organizations.GetHook returned error: %v", err)
    90  	}
    91  
    92  	want := &Hook{ID: Int64(1)}
    93  	if !reflect.DeepEqual(hook, want) {
    94  		t.Errorf("Organizations.GetHook returned %+v, want %+v", hook, want)
    95  	}
    96  }
    97  
    98  func TestOrganizationsService_GetHook_invalidOrg(t *testing.T) {
    99  	client, _, _, teardown := setup()
   100  	defer teardown()
   101  
   102  	_, _, err := client.Organizations.GetHook(context.Background(), "%", 1)
   103  	testURLParseError(t, err)
   104  }
   105  
   106  func TestOrganizationsService_EditHook(t *testing.T) {
   107  	client, mux, _, teardown := setup()
   108  	defer teardown()
   109  
   110  	input := &Hook{}
   111  
   112  	mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) {
   113  		v := new(Hook)
   114  		json.NewDecoder(r.Body).Decode(v)
   115  
   116  		testMethod(t, r, "PATCH")
   117  		if !reflect.DeepEqual(v, input) {
   118  			t.Errorf("Request body = %+v, want %+v", v, input)
   119  		}
   120  
   121  		fmt.Fprint(w, `{"id":1}`)
   122  	})
   123  
   124  	hook, _, err := client.Organizations.EditHook(context.Background(), "o", 1, input)
   125  	if err != nil {
   126  		t.Errorf("Organizations.EditHook returned error: %v", err)
   127  	}
   128  
   129  	want := &Hook{ID: Int64(1)}
   130  	if !reflect.DeepEqual(hook, want) {
   131  		t.Errorf("Organizations.EditHook returned %+v, want %+v", hook, want)
   132  	}
   133  }
   134  
   135  func TestOrganizationsService_EditHook_invalidOrg(t *testing.T) {
   136  	client, _, _, teardown := setup()
   137  	defer teardown()
   138  
   139  	_, _, err := client.Organizations.EditHook(context.Background(), "%", 1, nil)
   140  	testURLParseError(t, err)
   141  }
   142  
   143  func TestOrganizationsService_PingHook(t *testing.T) {
   144  	client, mux, _, teardown := setup()
   145  	defer teardown()
   146  
   147  	mux.HandleFunc("/orgs/o/hooks/1/pings", func(w http.ResponseWriter, r *http.Request) {
   148  		testMethod(t, r, "POST")
   149  	})
   150  
   151  	_, err := client.Organizations.PingHook(context.Background(), "o", 1)
   152  	if err != nil {
   153  		t.Errorf("Organizations.PingHook returned error: %v", err)
   154  	}
   155  }
   156  
   157  func TestOrganizationsService_DeleteHook(t *testing.T) {
   158  	client, mux, _, teardown := setup()
   159  	defer teardown()
   160  
   161  	mux.HandleFunc("/orgs/o/hooks/1", func(w http.ResponseWriter, r *http.Request) {
   162  		testMethod(t, r, "DELETE")
   163  	})
   164  
   165  	_, err := client.Organizations.DeleteHook(context.Background(), "o", 1)
   166  	if err != nil {
   167  		t.Errorf("Organizations.DeleteHook returned error: %v", err)
   168  	}
   169  }
   170  
   171  func TestOrganizationsService_DeleteHook_invalidOrg(t *testing.T) {
   172  	client, _, _, teardown := setup()
   173  	defer teardown()
   174  
   175  	_, err := client.Organizations.DeleteHook(context.Background(), "%", 1)
   176  	testURLParseError(t, err)
   177  }