github.com/google/go-github/v70@v70.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" 14 "net/http" 15 "testing" 16 17 "github.com/google/go-cmp/cmp" 18 ) 19 20 func TestRepositoriesService_EnablePagesLegacy(t *testing.T) { 21 t.Parallel() 22 client, mux, _ := setup(t) 23 24 input := &Pages{ 25 BuildType: Ptr("legacy"), 26 Source: &PagesSource{ 27 Branch: Ptr("master"), 28 Path: Ptr("/"), 29 }, 30 CNAME: Ptr("www.my-domain.com"), // not passed along. 31 } 32 33 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 34 v := new(createPagesRequest) 35 assertNilError(t, json.NewDecoder(r.Body).Decode(v)) 36 37 testMethod(t, r, "POST") 38 testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview) 39 want := &createPagesRequest{BuildType: Ptr("legacy"), Source: &PagesSource{Branch: Ptr("master"), Path: Ptr("/")}} 40 if !cmp.Equal(v, want) { 41 t.Errorf("Request body = %+v, want %+v", v, want) 42 } 43 44 fmt.Fprint(w, `{"url":"u","status":"s","cname":"c","custom_404":false,"html_url":"h","build_type": "legacy","source": {"branch":"master", "path":"/"}}`) 45 }) 46 47 ctx := context.Background() 48 page, _, err := client.Repositories.EnablePages(ctx, "o", "r", input) 49 if err != nil { 50 t.Errorf("Repositories.EnablePages returned error: %v", err) 51 } 52 53 want := &Pages{URL: Ptr("u"), Status: Ptr("s"), CNAME: Ptr("c"), Custom404: Ptr(false), HTMLURL: Ptr("h"), BuildType: Ptr("legacy"), Source: &PagesSource{Branch: Ptr("master"), Path: Ptr("/")}} 54 55 if !cmp.Equal(page, want) { 56 t.Errorf("Repositories.EnablePages returned %v, want %v", page, want) 57 } 58 59 const methodName = "EnablePages" 60 testBadOptions(t, methodName, func() (err error) { 61 _, _, err = client.Repositories.EnablePages(ctx, "\n", "\n", input) 62 return err 63 }) 64 65 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 66 got, resp, err := client.Repositories.EnablePages(ctx, "o", "r", input) 67 if got != nil { 68 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 69 } 70 return resp, err 71 }) 72 } 73 74 func TestRepositoriesService_EnablePagesWorkflow(t *testing.T) { 75 t.Parallel() 76 client, mux, _ := setup(t) 77 78 input := &Pages{ 79 BuildType: Ptr("workflow"), 80 CNAME: Ptr("www.my-domain.com"), // not passed along. 81 } 82 83 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 84 v := new(createPagesRequest) 85 assertNilError(t, json.NewDecoder(r.Body).Decode(v)) 86 87 testMethod(t, r, "POST") 88 testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview) 89 want := &createPagesRequest{BuildType: Ptr("workflow")} 90 if !cmp.Equal(v, want) { 91 t.Errorf("Request body = %+v, want %+v", v, want) 92 } 93 94 fmt.Fprint(w, `{"url":"u","status":"s","cname":"c","custom_404":false,"html_url":"h","build_type": "workflow"}`) 95 }) 96 97 ctx := context.Background() 98 page, _, err := client.Repositories.EnablePages(ctx, "o", "r", input) 99 if err != nil { 100 t.Errorf("Repositories.EnablePages returned error: %v", err) 101 } 102 103 want := &Pages{URL: Ptr("u"), Status: Ptr("s"), CNAME: Ptr("c"), Custom404: Ptr(false), HTMLURL: Ptr("h"), BuildType: Ptr("workflow")} 104 105 if !cmp.Equal(page, want) { 106 t.Errorf("Repositories.EnablePages returned %v, want %v", page, want) 107 } 108 109 const methodName = "EnablePages" 110 testBadOptions(t, methodName, func() (err error) { 111 _, _, err = client.Repositories.EnablePages(ctx, "\n", "\n", input) 112 return err 113 }) 114 115 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 116 got, resp, err := client.Repositories.EnablePages(ctx, "o", "r", input) 117 if got != nil { 118 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 119 } 120 return resp, err 121 }) 122 } 123 124 func TestRepositoriesService_UpdatePagesLegacy(t *testing.T) { 125 t.Parallel() 126 client, mux, _ := setup(t) 127 128 input := &PagesUpdate{ 129 CNAME: Ptr("www.my-domain.com"), 130 BuildType: Ptr("legacy"), 131 Source: &PagesSource{Branch: Ptr("gh-pages")}, 132 } 133 134 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 135 v := new(PagesUpdate) 136 assertNilError(t, json.NewDecoder(r.Body).Decode(v)) 137 138 testMethod(t, r, "PUT") 139 want := &PagesUpdate{CNAME: Ptr("www.my-domain.com"), BuildType: Ptr("legacy"), Source: &PagesSource{Branch: Ptr("gh-pages")}} 140 if !cmp.Equal(v, want) { 141 t.Errorf("Request body = %+v, want %+v", v, want) 142 } 143 144 fmt.Fprint(w, `{"cname":"www.my-domain.com","build_type":"legacy","source":{"branch":"gh-pages"}}`) 145 }) 146 147 ctx := context.Background() 148 _, err := client.Repositories.UpdatePages(ctx, "o", "r", input) 149 if err != nil { 150 t.Errorf("Repositories.UpdatePages returned error: %v", err) 151 } 152 153 const methodName = "UpdatePages" 154 testBadOptions(t, methodName, func() (err error) { 155 _, err = client.Repositories.UpdatePages(ctx, "\n", "\n", input) 156 return err 157 }) 158 159 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 160 return client.Repositories.UpdatePages(ctx, "o", "r", input) 161 }) 162 } 163 164 func TestRepositoriesService_UpdatePagesWorkflow(t *testing.T) { 165 t.Parallel() 166 client, mux, _ := setup(t) 167 168 input := &PagesUpdate{ 169 CNAME: Ptr("www.my-domain.com"), 170 BuildType: Ptr("workflow"), 171 } 172 173 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 174 v := new(PagesUpdate) 175 assertNilError(t, json.NewDecoder(r.Body).Decode(v)) 176 177 testMethod(t, r, "PUT") 178 want := &PagesUpdate{CNAME: Ptr("www.my-domain.com"), BuildType: Ptr("workflow")} 179 if !cmp.Equal(v, want) { 180 t.Errorf("Request body = %+v, want %+v", v, want) 181 } 182 183 fmt.Fprint(w, `{"cname":"www.my-domain.com","build_type":"workflow"}`) 184 }) 185 186 ctx := context.Background() 187 _, err := client.Repositories.UpdatePages(ctx, "o", "r", input) 188 if err != nil { 189 t.Errorf("Repositories.UpdatePages returned error: %v", err) 190 } 191 192 const methodName = "UpdatePages" 193 testBadOptions(t, methodName, func() (err error) { 194 _, err = client.Repositories.UpdatePages(ctx, "\n", "\n", input) 195 return err 196 }) 197 198 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 199 return client.Repositories.UpdatePages(ctx, "o", "r", input) 200 }) 201 } 202 203 func TestRepositoriesService_UpdatePagesGHES(t *testing.T) { 204 t.Parallel() 205 client, mux, _ := setup(t) 206 207 input := &PagesUpdateWithoutCNAME{ 208 BuildType: Ptr("workflow"), 209 } 210 211 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 212 v := new(PagesUpdate) 213 assertNilError(t, json.NewDecoder(r.Body).Decode(v)) 214 215 testMethod(t, r, "PUT") 216 want := &PagesUpdate{BuildType: Ptr("workflow")} 217 if !cmp.Equal(v, want) { 218 t.Errorf("Request body = %+v, want %+v", v, want) 219 } 220 221 fmt.Fprint(w, `{"build_type":"workflow"}`) 222 }) 223 224 ctx := context.Background() 225 _, err := client.Repositories.UpdatePagesGHES(ctx, "o", "r", input) 226 if err != nil { 227 t.Errorf("Repositories.UpdatePagesGHES returned error: %v", err) 228 } 229 230 const methodName = "UpdatePagesGHES" 231 testBadOptions(t, methodName, func() (err error) { 232 _, err = client.Repositories.UpdatePagesGHES(ctx, "\n", "\n", input) 233 return err 234 }) 235 236 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 237 return client.Repositories.UpdatePagesGHES(ctx, "o", "r", input) 238 }) 239 } 240 241 func TestRepositoriesService_UpdatePages_NullCNAME(t *testing.T) { 242 t.Parallel() 243 client, mux, _ := setup(t) 244 245 input := &PagesUpdate{ 246 Source: &PagesSource{Branch: Ptr("gh-pages")}, 247 } 248 249 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 250 got, err := io.ReadAll(r.Body) 251 if err != nil { 252 t.Fatalf("unable to read body: %v", err) 253 } 254 255 want := []byte(`{"cname":null,"source":{"branch":"gh-pages"}}` + "\n") 256 if !bytes.Equal(got, want) { 257 t.Errorf("Request body = %+v, want %+v", got, want) 258 } 259 260 fmt.Fprint(w, `{"cname":null,"source":{"branch":"gh-pages"}}`) 261 }) 262 263 ctx := context.Background() 264 _, err := client.Repositories.UpdatePages(ctx, "o", "r", input) 265 if err != nil { 266 t.Errorf("Repositories.UpdatePages returned error: %v", err) 267 } 268 } 269 270 func TestRepositoriesService_DisablePages(t *testing.T) { 271 t.Parallel() 272 client, mux, _ := setup(t) 273 274 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 275 testMethod(t, r, "DELETE") 276 testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview) 277 }) 278 279 ctx := context.Background() 280 _, err := client.Repositories.DisablePages(ctx, "o", "r") 281 if err != nil { 282 t.Errorf("Repositories.DisablePages returned error: %v", err) 283 } 284 285 const methodName = "DisablePages" 286 testBadOptions(t, methodName, func() (err error) { 287 _, err = client.Repositories.DisablePages(ctx, "\n", "\n") 288 return err 289 }) 290 291 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 292 return client.Repositories.DisablePages(ctx, "o", "r") 293 }) 294 } 295 296 func TestRepositoriesService_GetPagesInfo(t *testing.T) { 297 t.Parallel() 298 client, mux, _ := setup(t) 299 300 mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) { 301 testMethod(t, r, "GET") 302 fmt.Fprint(w, `{"url":"u","status":"s","cname":"c","custom_404":false,"html_url":"h","public":true, "https_certificate": {"state":"approved","description": "Certificate is approved","domains": ["developer.github.com"],"expires_at": "2021-05-22"},"https_enforced": true}`) 303 }) 304 305 ctx := context.Background() 306 page, _, err := client.Repositories.GetPagesInfo(ctx, "o", "r") 307 if err != nil { 308 t.Errorf("Repositories.GetPagesInfo returned error: %v", err) 309 } 310 311 want := &Pages{URL: Ptr("u"), Status: Ptr("s"), CNAME: Ptr("c"), Custom404: Ptr(false), HTMLURL: Ptr("h"), Public: Ptr(true), HTTPSCertificate: &PagesHTTPSCertificate{State: Ptr("approved"), Description: Ptr("Certificate is approved"), Domains: []string{"developer.github.com"}, ExpiresAt: Ptr("2021-05-22")}, HTTPSEnforced: Ptr(true)} 312 if !cmp.Equal(page, want) { 313 t.Errorf("Repositories.GetPagesInfo returned %+v, want %+v", page, want) 314 } 315 316 const methodName = "GetPagesInfo" 317 testBadOptions(t, methodName, func() (err error) { 318 _, _, err = client.Repositories.GetPagesInfo(ctx, "\n", "\n") 319 return err 320 }) 321 322 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 323 got, resp, err := client.Repositories.GetPagesInfo(ctx, "o", "r") 324 if got != nil { 325 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 326 } 327 return resp, err 328 }) 329 } 330 331 func TestRepositoriesService_ListPagesBuilds(t *testing.T) { 332 t.Parallel() 333 client, mux, _ := setup(t) 334 335 mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) { 336 testMethod(t, r, "GET") 337 fmt.Fprint(w, `[{"url":"u","status":"s","commit":"c"}]`) 338 }) 339 340 ctx := context.Background() 341 pages, _, err := client.Repositories.ListPagesBuilds(ctx, "o", "r", nil) 342 if err != nil { 343 t.Errorf("Repositories.ListPagesBuilds returned error: %v", err) 344 } 345 346 want := []*PagesBuild{{URL: Ptr("u"), Status: Ptr("s"), Commit: Ptr("c")}} 347 if !cmp.Equal(pages, want) { 348 t.Errorf("Repositories.ListPagesBuilds returned %+v, want %+v", pages, want) 349 } 350 351 const methodName = "ListPagesBuilds" 352 testBadOptions(t, methodName, func() (err error) { 353 _, _, err = client.Repositories.ListPagesBuilds(ctx, "\n", "\n", nil) 354 return err 355 }) 356 357 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 358 got, resp, err := client.Repositories.ListPagesBuilds(ctx, "o", "r", nil) 359 if got != nil { 360 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 361 } 362 return resp, err 363 }) 364 } 365 366 func TestRepositoriesService_ListPagesBuilds_withOptions(t *testing.T) { 367 t.Parallel() 368 client, mux, _ := setup(t) 369 370 mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) { 371 testMethod(t, r, "GET") 372 testFormValues(t, r, values{ 373 "page": "2", 374 }) 375 fmt.Fprint(w, `[]`) 376 }) 377 378 ctx := context.Background() 379 _, _, err := client.Repositories.ListPagesBuilds(ctx, "o", "r", &ListOptions{Page: 2}) 380 if err != nil { 381 t.Errorf("Repositories.ListPagesBuilds returned error: %v", err) 382 } 383 } 384 385 func TestRepositoriesService_GetLatestPagesBuild(t *testing.T) { 386 t.Parallel() 387 client, mux, _ := setup(t) 388 389 mux.HandleFunc("/repos/o/r/pages/builds/latest", func(w http.ResponseWriter, r *http.Request) { 390 testMethod(t, r, "GET") 391 fmt.Fprint(w, `{"url":"u","status":"s","commit":"c"}`) 392 }) 393 394 ctx := context.Background() 395 build, _, err := client.Repositories.GetLatestPagesBuild(ctx, "o", "r") 396 if err != nil { 397 t.Errorf("Repositories.GetLatestPagesBuild returned error: %v", err) 398 } 399 400 want := &PagesBuild{URL: Ptr("u"), Status: Ptr("s"), Commit: Ptr("c")} 401 if !cmp.Equal(build, want) { 402 t.Errorf("Repositories.GetLatestPagesBuild returned %+v, want %+v", build, want) 403 } 404 405 const methodName = "GetLatestPagesBuild" 406 testBadOptions(t, methodName, func() (err error) { 407 _, _, err = client.Repositories.GetLatestPagesBuild(ctx, "\n", "\n") 408 return err 409 }) 410 411 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 412 got, resp, err := client.Repositories.GetLatestPagesBuild(ctx, "o", "r") 413 if got != nil { 414 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 415 } 416 return resp, err 417 }) 418 } 419 420 func TestRepositoriesService_GetPageBuild(t *testing.T) { 421 t.Parallel() 422 client, mux, _ := setup(t) 423 424 mux.HandleFunc("/repos/o/r/pages/builds/1", func(w http.ResponseWriter, r *http.Request) { 425 testMethod(t, r, "GET") 426 fmt.Fprint(w, `{"url":"u","status":"s","commit":"c"}`) 427 }) 428 429 ctx := context.Background() 430 build, _, err := client.Repositories.GetPageBuild(ctx, "o", "r", 1) 431 if err != nil { 432 t.Errorf("Repositories.GetPageBuild returned error: %v", err) 433 } 434 435 want := &PagesBuild{URL: Ptr("u"), Status: Ptr("s"), Commit: Ptr("c")} 436 if !cmp.Equal(build, want) { 437 t.Errorf("Repositories.GetPageBuild returned %+v, want %+v", build, want) 438 } 439 440 const methodName = "GetPageBuild" 441 testBadOptions(t, methodName, func() (err error) { 442 _, _, err = client.Repositories.GetPageBuild(ctx, "\n", "\n", -1) 443 return err 444 }) 445 446 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 447 got, resp, err := client.Repositories.GetPageBuild(ctx, "o", "r", 1) 448 if got != nil { 449 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 450 } 451 return resp, err 452 }) 453 } 454 455 func TestRepositoriesService_RequestPageBuild(t *testing.T) { 456 t.Parallel() 457 client, mux, _ := setup(t) 458 459 mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) { 460 testMethod(t, r, "POST") 461 fmt.Fprint(w, `{"url":"u","status":"s"}`) 462 }) 463 464 ctx := context.Background() 465 build, _, err := client.Repositories.RequestPageBuild(ctx, "o", "r") 466 if err != nil { 467 t.Errorf("Repositories.RequestPageBuild returned error: %v", err) 468 } 469 470 want := &PagesBuild{URL: Ptr("u"), Status: Ptr("s")} 471 if !cmp.Equal(build, want) { 472 t.Errorf("Repositories.RequestPageBuild returned %+v, want %+v", build, want) 473 } 474 475 const methodName = "RequestPageBuild" 476 testBadOptions(t, methodName, func() (err error) { 477 _, _, err = client.Repositories.RequestPageBuild(ctx, "\n", "\n") 478 return err 479 }) 480 481 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 482 got, resp, err := client.Repositories.RequestPageBuild(ctx, "o", "r") 483 if got != nil { 484 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 485 } 486 return resp, err 487 }) 488 } 489 490 func TestRepositoriesService_GetPageHealthCheck(t *testing.T) { 491 t.Parallel() 492 client, mux, _ := setup(t) 493 494 mux.HandleFunc("/repos/o/r/pages/health", func(w http.ResponseWriter, r *http.Request) { 495 testMethod(t, r, "GET") 496 fmt.Fprint(w, `{"domain":{"host":"example.com","uri":"http://example.com/","nameservers":"default","dns_resolves":true},"alt_domain":{"host":"www.example.com","uri":"http://www.example.com/","nameservers":"default","dns_resolves":true}}`) 497 }) 498 499 ctx := context.Background() 500 healthCheckResponse, _, err := client.Repositories.GetPageHealthCheck(ctx, "o", "r") 501 if err != nil { 502 t.Errorf("Repositories.GetPageHealthCheck returned error: %v", err) 503 } 504 505 want := &PagesHealthCheckResponse{ 506 Domain: &PagesDomain{ 507 Host: Ptr("example.com"), 508 URI: Ptr("http://example.com/"), 509 Nameservers: Ptr("default"), 510 DNSResolves: Ptr(true), 511 }, 512 AltDomain: &PagesDomain{ 513 Host: Ptr("www.example.com"), 514 URI: Ptr("http://www.example.com/"), 515 Nameservers: Ptr("default"), 516 DNSResolves: Ptr(true), 517 }, 518 } 519 if !cmp.Equal(healthCheckResponse, want) { 520 t.Errorf("Repositories.GetPageHealthCheck returned %+v, want %+v", healthCheckResponse, want) 521 } 522 523 const methodName = "GetPageHealthCheck" 524 testBadOptions(t, methodName, func() (err error) { 525 _, _, err = client.Repositories.GetPageHealthCheck(ctx, "\n", "\n") 526 return err 527 }) 528 529 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 530 got, resp, err := client.Repositories.GetPageHealthCheck(ctx, "o", "r") 531 if got != nil { 532 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 533 } 534 return resp, err 535 }) 536 } 537 538 func TestPagesSource_Marshal(t *testing.T) { 539 t.Parallel() 540 testJSONMarshal(t, &PagesSource{}, "{}") 541 542 u := &PagesSource{ 543 Branch: Ptr("branch"), 544 Path: Ptr("path"), 545 } 546 547 want := `{ 548 "branch": "branch", 549 "path": "path" 550 }` 551 552 testJSONMarshal(t, u, want) 553 } 554 555 func TestPagesError_Marshal(t *testing.T) { 556 t.Parallel() 557 testJSONMarshal(t, &PagesError{}, "{}") 558 559 u := &PagesError{ 560 Message: Ptr("message"), 561 } 562 563 want := `{ 564 "message": "message" 565 }` 566 567 testJSONMarshal(t, u, want) 568 } 569 570 func TestPagesUpdate_Marshal(t *testing.T) { 571 t.Parallel() 572 testJSONMarshal(t, &PagesUpdate{}, "{}") 573 574 u := &PagesUpdate{ 575 CNAME: Ptr("cname"), 576 Source: &PagesSource{Path: Ptr("src")}, 577 } 578 579 want := `{ 580 "cname": "cname", 581 "source": { "path": "src" } 582 }` 583 584 testJSONMarshal(t, u, want) 585 } 586 587 func TestPages_Marshal(t *testing.T) { 588 t.Parallel() 589 testJSONMarshal(t, &Pages{}, "{}") 590 591 u := &Pages{ 592 URL: Ptr("url"), 593 Status: Ptr("status"), 594 CNAME: Ptr("cname"), 595 Custom404: Ptr(false), 596 HTMLURL: Ptr("hurl"), 597 Source: &PagesSource{ 598 Branch: Ptr("branch"), 599 Path: Ptr("path"), 600 }, 601 } 602 603 want := `{ 604 "url": "url", 605 "status": "status", 606 "cname": "cname", 607 "custom_404": false, 608 "html_url": "hurl", 609 "source": { 610 "branch": "branch", 611 "path": "path" 612 } 613 }` 614 615 testJSONMarshal(t, u, want) 616 } 617 618 func TestPagesBuild_Marshal(t *testing.T) { 619 t.Parallel() 620 testJSONMarshal(t, &PagesBuild{}, "{}") 621 622 u := &PagesBuild{ 623 URL: Ptr("url"), 624 Status: Ptr("status"), 625 Error: &PagesError{ 626 Message: Ptr("message"), 627 }, 628 Pusher: &User{ID: Ptr(int64(1))}, 629 Commit: Ptr("commit"), 630 Duration: Ptr(1), 631 CreatedAt: &Timestamp{referenceTime}, 632 UpdatedAt: &Timestamp{referenceTime}, 633 } 634 635 want := `{ 636 "url": "url", 637 "status": "status", 638 "error": { 639 "message": "message" 640 }, 641 "pusher": { 642 "id": 1 643 }, 644 "commit": "commit", 645 "duration": 1, 646 "created_at": ` + referenceTimeStr + `, 647 "updated_at": ` + referenceTimeStr + ` 648 }` 649 650 testJSONMarshal(t, u, want) 651 } 652 653 func TestPagesHealthCheckResponse_Marshal(t *testing.T) { 654 t.Parallel() 655 testJSONMarshal(t, &PagesHealthCheckResponse{}, "{}") 656 657 u := &PagesHealthCheckResponse{ 658 Domain: &PagesDomain{ 659 Host: Ptr("example.com"), 660 URI: Ptr("http://example.com/"), 661 Nameservers: Ptr("default"), 662 DNSResolves: Ptr(true), 663 IsProxied: Ptr(false), 664 IsCloudflareIP: Ptr(false), 665 IsFastlyIP: Ptr(false), 666 IsOldIPAddress: Ptr(false), 667 IsARecord: Ptr(true), 668 HasCNAMERecord: Ptr(false), 669 HasMXRecordsPresent: Ptr(false), 670 IsValidDomain: Ptr(true), 671 IsApexDomain: Ptr(true), 672 ShouldBeARecord: Ptr(true), 673 IsCNAMEToGithubUserDomain: Ptr(false), 674 IsCNAMEToPagesDotGithubDotCom: Ptr(false), 675 IsCNAMEToFastly: Ptr(false), 676 IsPointedToGithubPagesIP: Ptr(true), 677 IsNonGithubPagesIPPresent: Ptr(false), 678 IsPagesDomain: Ptr(false), 679 IsServedByPages: Ptr(true), 680 IsValid: Ptr(true), 681 Reason: Ptr("some reason"), 682 RespondsToHTTPS: Ptr(true), 683 EnforcesHTTPS: Ptr(true), 684 HTTPSError: Ptr("some error"), 685 IsHTTPSEligible: Ptr(true), 686 CAAError: Ptr("some error"), 687 }, 688 AltDomain: &PagesDomain{ 689 Host: Ptr("www.example.com"), 690 URI: Ptr("http://www.example.com/"), 691 Nameservers: Ptr("default"), 692 DNSResolves: Ptr(true), 693 }, 694 } 695 696 want := `{ 697 "domain": { 698 "host": "example.com", 699 "uri": "http://example.com/", 700 "nameservers": "default", 701 "dns_resolves": true, 702 "is_proxied": false, 703 "is_cloudflare_ip": false, 704 "is_fastly_ip": false, 705 "is_old_ip_address": false, 706 "is_a_record": true, 707 "has_cname_record": false, 708 "has_mx_records_present": false, 709 "is_valid_domain": true, 710 "is_apex_domain": true, 711 "should_be_a_record": true, 712 "is_cname_to_github_user_domain": false, 713 "is_cname_to_pages_dot_github_dot_com": false, 714 "is_cname_to_fastly": false, 715 "is_pointed_to_github_pages_ip": true, 716 "is_non_github_pages_ip_present": false, 717 "is_pages_domain": false, 718 "is_served_by_pages": true, 719 "is_valid": true, 720 "reason": "some reason", 721 "responds_to_https": true, 722 "enforces_https": true, 723 "https_error": "some error", 724 "is_https_eligible": true, 725 "caa_error": "some error" 726 }, 727 "alt_domain": { 728 "host": "www.example.com", 729 "uri": "http://www.example.com/", 730 "nameservers": "default", 731 "dns_resolves": true 732 } 733 }` 734 735 testJSONMarshal(t, u, want) 736 } 737 738 func TestCreatePagesRequest_Marshal(t *testing.T) { 739 t.Parallel() 740 testJSONMarshal(t, &createPagesRequest{}, "{}") 741 742 u := &createPagesRequest{ 743 Source: &PagesSource{ 744 Branch: Ptr("branch"), 745 Path: Ptr("path"), 746 }, 747 } 748 749 want := `{ 750 "source": { 751 "branch": "branch", 752 "path": "path" 753 } 754 }` 755 756 testJSONMarshal(t, u, want) 757 }