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 6package github 7 8import ( 9 "context" 10 "fmt" 11 "net/http" 12 "reflect" 13 "strings" 14 "testing" 15) 16 17func TestRepositoriesService_EnablePages(t *testing.T) { 18 client, mux, _, teardown := setup() 19 defer teardown() 20 21 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 22 testMethod(t, r, "POST") 23 wantAcceptHeaders := []string{mediaTypeEnablePagesAPIPreview, mediaTypePagesPreview} 24 testHeader(t, r, "Accept", strings.Join(wantAcceptHeaders, ", ")) 25 fmt.Fprint(w, `{"url":"u","status":"s","cname":"c","custom_404":false,"html_url":"h", "source": {"branch":"master", "path":"/"}}`) 26 }) 27 28 page, _, err := client.Repositories.EnablePages(context.Background(), "o", "r") 29 if err != nil { 30 t.Errorf("Repositories.EnablePages returned error: %v", err) 31 } 32 33 want := &Pages{URL: String("u"), Status: String("s"), CNAME: String("c"), Custom404: Bool(false), HTMLURL: String("h"), Source: &PagesSource{Branch: String("master"), Path: String("/")}} 34 35 if !reflect.DeepEqual(page, want) { 36 t.Errorf("Repositories.EnablePages returned %v, want %v", page, want) 37 } 38} 39 40func TestRepositoriesService_DisablePages(t *testing.T) { 41 client, mux, _, teardown := setup() 42 defer teardown() 43 44 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 45 testMethod(t, r, "DELETE") 46 testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview) 47 }) 48 49 _, err := client.Repositories.DisablePages(context.Background(), "o", "r") 50 if err != nil { 51 t.Errorf("Repositories.DisablePages returned error: %v", err) 52 } 53} 54 55func TestRepositoriesService_GetPagesInfo(t *testing.T) { 56 client, mux, _, teardown := setup() 57 defer teardown() 58 59 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 60 testMethod(t, r, "GET") 61 testHeader(t, r, "Accept", mediaTypePagesPreview) 62 fmt.Fprint(w, `{"url":"u","status":"s","cname":"c","custom_404":false,"html_url":"h"}`) 63 }) 64 65 page, _, err := client.Repositories.GetPagesInfo(context.Background(), "o", "r") 66 if err != nil { 67 t.Errorf("Repositories.GetPagesInfo returned error: %v", err) 68 } 69 70 want := &Pages{URL: String("u"), Status: String("s"), CNAME: String("c"), Custom404: Bool(false), HTMLURL: String("h")} 71 if !reflect.DeepEqual(page, want) { 72 t.Errorf("Repositories.GetPagesInfo returned %+v, want %+v", page, want) 73 } 74} 75 76func TestRepositoriesService_ListPagesBuilds(t *testing.T) { 77 client, mux, _, teardown := setup() 78 defer teardown() 79 80 mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) { 81 testMethod(t, r, "GET") 82 fmt.Fprint(w, `[{"url":"u","status":"s","commit":"c"}]`) 83 }) 84 85 pages, _, err := client.Repositories.ListPagesBuilds(context.Background(), "o", "r", nil) 86 if err != nil { 87 t.Errorf("Repositories.ListPagesBuilds returned error: %v", err) 88 } 89 90 want := []*PagesBuild{{URL: String("u"), Status: String("s"), Commit: String("c")}} 91 if !reflect.DeepEqual(pages, want) { 92 t.Errorf("Repositories.ListPagesBuilds returned %+v, want %+v", pages, want) 93 } 94} 95 96func TestRepositoriesService_ListPagesBuilds_withOptions(t *testing.T) { 97 client, mux, _, teardown := setup() 98 defer teardown() 99 100 mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) { 101 testMethod(t, r, "GET") 102 testFormValues(t, r, values{ 103 "page": "2", 104 }) 105 fmt.Fprint(w, `[]`) 106 }) 107 108 _, _, err := client.Repositories.ListPagesBuilds(context.Background(), "o", "r", &ListOptions{Page: 2}) 109 if err != nil { 110 t.Errorf("Repositories.ListPagesBuilds returned error: %v", err) 111 } 112} 113 114func TestRepositoriesService_GetLatestPagesBuild(t *testing.T) { 115 client, mux, _, teardown := setup() 116 defer teardown() 117 118 mux.HandleFunc("/repos/o/r/pages/builds/latest", func(w http.ResponseWriter, r *http.Request) { 119 testMethod(t, r, "GET") 120 fmt.Fprint(w, `{"url":"u","status":"s","commit":"c"}`) 121 }) 122 123 build, _, err := client.Repositories.GetLatestPagesBuild(context.Background(), "o", "r") 124 if err != nil { 125 t.Errorf("Repositories.GetLatestPagesBuild returned error: %v", err) 126 } 127 128 want := &PagesBuild{URL: String("u"), Status: String("s"), Commit: String("c")} 129 if !reflect.DeepEqual(build, want) { 130 t.Errorf("Repositories.GetLatestPagesBuild returned %+v, want %+v", build, want) 131 } 132} 133 134func TestRepositoriesService_GetPageBuild(t *testing.T) { 135 client, mux, _, teardown := setup() 136 defer teardown() 137 138 mux.HandleFunc("/repos/o/r/pages/builds/1", func(w http.ResponseWriter, r *http.Request) { 139 testMethod(t, r, "GET") 140 fmt.Fprint(w, `{"url":"u","status":"s","commit":"c"}`) 141 }) 142 143 build, _, err := client.Repositories.GetPageBuild(context.Background(), "o", "r", 1) 144 if err != nil { 145 t.Errorf("Repositories.GetPageBuild returned error: %v", err) 146 } 147 148 want := &PagesBuild{URL: String("u"), Status: String("s"), Commit: String("c")} 149 if !reflect.DeepEqual(build, want) { 150 t.Errorf("Repositories.GetPageBuild returned %+v, want %+v", build, want) 151 } 152} 153 154func TestRepositoriesService_RequestPageBuild(t *testing.T) { 155 client, mux, _, teardown := setup() 156 defer teardown() 157 158 mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) { 159 testMethod(t, r, "POST") 160 testHeader(t, r, "Accept", mediaTypePagesPreview) 161 fmt.Fprint(w, `{"url":"u","status":"s"}`) 162 }) 163 164 build, _, err := client.Repositories.RequestPageBuild(context.Background(), "o", "r") 165 if err != nil { 166 t.Errorf("Repositories.RequestPageBuild returned error: %v", err) 167 } 168 169 want := &PagesBuild{URL: String("u"), Status: String("s")} 170 if !reflect.DeepEqual(build, want) { 171 t.Errorf("Repositories.RequestPageBuild returned %+v, want %+v", build, want) 172 } 173} 174