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

     1  // Copyright 2014 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  	"bytes"
    10  	"context"
    11  	"encoding/json"
    12  	"fmt"
    13  	"io/ioutil"
    14  	"net/http"
    15  	"reflect"
    16  	"testing"
    17  )
    18  
    19  func TestRepositoriesService_EnablePages(t *testing.T) {
    20  	client, mux, _, teardown := setup()
    21  	defer teardown()
    22  
    23  	input := &Pages{
    24  		Source: &PagesSource{
    25  			Branch: String("master"),
    26  			Path:   String("/"),
    27  		},
    28  		CNAME: String("www.my-domain.com"), // not passed along.
    29  	}
    30  
    31  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
    32  		v := new(createPagesRequest)
    33  		json.NewDecoder(r.Body).Decode(v)
    34  
    35  		testMethod(t, r, "POST")
    36  		testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview)
    37  		want := &createPagesRequest{Source: &PagesSource{Branch: String("master"), Path: String("/")}}
    38  		if !reflect.DeepEqual(v, want) {
    39  			t.Errorf("Request body = %+v, want %+v", v, want)
    40  		}
    41  
    42  		fmt.Fprint(w, `{"url":"u","status":"s","cname":"c","custom_404":false,"html_url":"h", "source": {"branch":"master", "path":"/"}}`)
    43  	})
    44  
    45  	page, _, err := client.Repositories.EnablePages(context.Background(), "o", "r", input)
    46  	if err != nil {
    47  		t.Errorf("Repositories.EnablePages returned error: %v", err)
    48  	}
    49  
    50  	want := &Pages{URL: String("u"), Status: String("s"), CNAME: String("c"), Custom404: Bool(false), HTMLURL: String("h"), Source: &PagesSource{Branch: String("master"), Path: String("/")}}
    51  
    52  	if !reflect.DeepEqual(page, want) {
    53  		t.Errorf("Repositories.EnablePages returned %v, want %v", page, want)
    54  	}
    55  }
    56  
    57  func TestRepositoriesService_UpdatePages(t *testing.T) {
    58  	client, mux, _, teardown := setup()
    59  	defer teardown()
    60  
    61  	input := &PagesUpdate{
    62  		CNAME:  String("www.my-domain.com"),
    63  		Source: String("gh-pages"),
    64  	}
    65  
    66  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
    67  		v := new(PagesUpdate)
    68  		json.NewDecoder(r.Body).Decode(v)
    69  
    70  		testMethod(t, r, "PUT")
    71  		want := &PagesUpdate{CNAME: String("www.my-domain.com"), Source: String("gh-pages")}
    72  		if !reflect.DeepEqual(v, want) {
    73  			t.Errorf("Request body = %+v, want %+v", v, want)
    74  		}
    75  
    76  		fmt.Fprint(w, `{"cname":"www.my-domain.com","source":"gh-pages"}`)
    77  	})
    78  
    79  	_, err := client.Repositories.UpdatePages(context.Background(), "o", "r", input)
    80  	if err != nil {
    81  		t.Errorf("Repositories.UpdatePages returned error: %v", err)
    82  	}
    83  }
    84  
    85  func TestRepositoriesService_UpdatePages_NullCNAME(t *testing.T) {
    86  	client, mux, _, teardown := setup()
    87  	defer teardown()
    88  
    89  	input := &PagesUpdate{
    90  		Source: String("gh-pages"),
    91  	}
    92  
    93  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
    94  		got, err := ioutil.ReadAll(r.Body)
    95  		if err != nil {
    96  			t.Fatalf("unable to read body: %v", err)
    97  		}
    98  
    99  		want := []byte(`{"cname":null,"source":"gh-pages"}` + "\n")
   100  		if !bytes.Equal(got, want) {
   101  			t.Errorf("Request body = %+v, want %+v", got, want)
   102  		}
   103  
   104  		fmt.Fprint(w, `{"cname":null,"source":"gh-pages"}`)
   105  	})
   106  
   107  	_, err := client.Repositories.UpdatePages(context.Background(), "o", "r", input)
   108  	if err != nil {
   109  		t.Errorf("Repositories.UpdatePages returned error: %v", err)
   110  	}
   111  }
   112  
   113  func TestRepositoriesService_DisablePages(t *testing.T) {
   114  	client, mux, _, teardown := setup()
   115  	defer teardown()
   116  
   117  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
   118  		testMethod(t, r, "DELETE")
   119  		testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview)
   120  	})
   121  
   122  	_, err := client.Repositories.DisablePages(context.Background(), "o", "r")
   123  	if err != nil {
   124  		t.Errorf("Repositories.DisablePages returned error: %v", err)
   125  	}
   126  }
   127  
   128  func TestRepositoriesService_GetPagesInfo(t *testing.T) {
   129  	client, mux, _, teardown := setup()
   130  	defer teardown()
   131  
   132  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
   133  		testMethod(t, r, "GET")
   134  		fmt.Fprint(w, `{"url":"u","status":"s","cname":"c","custom_404":false,"html_url":"h"}`)
   135  	})
   136  
   137  	page, _, err := client.Repositories.GetPagesInfo(context.Background(), "o", "r")
   138  	if err != nil {
   139  		t.Errorf("Repositories.GetPagesInfo returned error: %v", err)
   140  	}
   141  
   142  	want := &Pages{URL: String("u"), Status: String("s"), CNAME: String("c"), Custom404: Bool(false), HTMLURL: String("h")}
   143  	if !reflect.DeepEqual(page, want) {
   144  		t.Errorf("Repositories.GetPagesInfo returned %+v, want %+v", page, want)
   145  	}
   146  }
   147  
   148  func TestRepositoriesService_ListPagesBuilds(t *testing.T) {
   149  	client, mux, _, teardown := setup()
   150  	defer teardown()
   151  
   152  	mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) {
   153  		testMethod(t, r, "GET")
   154  		fmt.Fprint(w, `[{"url":"u","status":"s","commit":"c"}]`)
   155  	})
   156  
   157  	pages, _, err := client.Repositories.ListPagesBuilds(context.Background(), "o", "r", nil)
   158  	if err != nil {
   159  		t.Errorf("Repositories.ListPagesBuilds returned error: %v", err)
   160  	}
   161  
   162  	want := []*PagesBuild{{URL: String("u"), Status: String("s"), Commit: String("c")}}
   163  	if !reflect.DeepEqual(pages, want) {
   164  		t.Errorf("Repositories.ListPagesBuilds returned %+v, want %+v", pages, want)
   165  	}
   166  }
   167  
   168  func TestRepositoriesService_ListPagesBuilds_withOptions(t *testing.T) {
   169  	client, mux, _, teardown := setup()
   170  	defer teardown()
   171  
   172  	mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) {
   173  		testMethod(t, r, "GET")
   174  		testFormValues(t, r, values{
   175  			"page": "2",
   176  		})
   177  		fmt.Fprint(w, `[]`)
   178  	})
   179  
   180  	_, _, err := client.Repositories.ListPagesBuilds(context.Background(), "o", "r", &ListOptions{Page: 2})
   181  	if err != nil {
   182  		t.Errorf("Repositories.ListPagesBuilds returned error: %v", err)
   183  	}
   184  }
   185  
   186  func TestRepositoriesService_GetLatestPagesBuild(t *testing.T) {
   187  	client, mux, _, teardown := setup()
   188  	defer teardown()
   189  
   190  	mux.HandleFunc("/repos/o/r/pages/builds/latest", func(w http.ResponseWriter, r *http.Request) {
   191  		testMethod(t, r, "GET")
   192  		fmt.Fprint(w, `{"url":"u","status":"s","commit":"c"}`)
   193  	})
   194  
   195  	build, _, err := client.Repositories.GetLatestPagesBuild(context.Background(), "o", "r")
   196  	if err != nil {
   197  		t.Errorf("Repositories.GetLatestPagesBuild returned error: %v", err)
   198  	}
   199  
   200  	want := &PagesBuild{URL: String("u"), Status: String("s"), Commit: String("c")}
   201  	if !reflect.DeepEqual(build, want) {
   202  		t.Errorf("Repositories.GetLatestPagesBuild returned %+v, want %+v", build, want)
   203  	}
   204  }
   205  
   206  func TestRepositoriesService_GetPageBuild(t *testing.T) {
   207  	client, mux, _, teardown := setup()
   208  	defer teardown()
   209  
   210  	mux.HandleFunc("/repos/o/r/pages/builds/1", func(w http.ResponseWriter, r *http.Request) {
   211  		testMethod(t, r, "GET")
   212  		fmt.Fprint(w, `{"url":"u","status":"s","commit":"c"}`)
   213  	})
   214  
   215  	build, _, err := client.Repositories.GetPageBuild(context.Background(), "o", "r", 1)
   216  	if err != nil {
   217  		t.Errorf("Repositories.GetPageBuild returned error: %v", err)
   218  	}
   219  
   220  	want := &PagesBuild{URL: String("u"), Status: String("s"), Commit: String("c")}
   221  	if !reflect.DeepEqual(build, want) {
   222  		t.Errorf("Repositories.GetPageBuild returned %+v, want %+v", build, want)
   223  	}
   224  }
   225  
   226  func TestRepositoriesService_RequestPageBuild(t *testing.T) {
   227  	client, mux, _, teardown := setup()
   228  	defer teardown()
   229  
   230  	mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) {
   231  		testMethod(t, r, "POST")
   232  		fmt.Fprint(w, `{"url":"u","status":"s"}`)
   233  	})
   234  
   235  	build, _, err := client.Repositories.RequestPageBuild(context.Background(), "o", "r")
   236  	if err != nil {
   237  		t.Errorf("Repositories.RequestPageBuild returned error: %v", err)
   238  	}
   239  
   240  	want := &PagesBuild{URL: String("u"), Status: String("s")}
   241  	if !reflect.DeepEqual(build, want) {
   242  		t.Errorf("Repositories.RequestPageBuild returned %+v, want %+v", build, want)
   243  	}
   244  }