...

Source file src/github.com/google/go-github/v55/github/repos_pages_test.go

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

     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  	client, mux, _, teardown := setup()
    22  	defer teardown()
    23  
    24  	input := &Pages{
    25  		BuildType: String("legacy"),
    26  		Source: &PagesSource{
    27  			Branch: String("master"),
    28  			Path:   String("/"),
    29  		},
    30  		CNAME: String("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  		json.NewDecoder(r.Body).Decode(v)
    36  
    37  		testMethod(t, r, "POST")
    38  		testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview)
    39  		want := &createPagesRequest{BuildType: String("legacy"), Source: &PagesSource{Branch: String("master"), Path: String("/")}}
    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: String("u"), Status: String("s"), CNAME: String("c"), Custom404: Bool(false), HTMLURL: String("h"), BuildType: String("legacy"), Source: &PagesSource{Branch: String("master"), Path: String("/")}}
    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  	client, mux, _, teardown := setup()
    76  	defer teardown()
    77  
    78  	input := &Pages{
    79  		BuildType: String("workflow"),
    80  		CNAME:     String("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  		json.NewDecoder(r.Body).Decode(v)
    86  
    87  		testMethod(t, r, "POST")
    88  		testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview)
    89  		want := &createPagesRequest{BuildType: String("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: String("u"), Status: String("s"), CNAME: String("c"), Custom404: Bool(false), HTMLURL: String("h"), BuildType: String("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  	client, mux, _, teardown := setup()
   126  	defer teardown()
   127  
   128  	input := &PagesUpdate{
   129  		CNAME:     String("www.my-domain.com"),
   130  		BuildType: String("legacy"),
   131  		Source:    &PagesSource{Branch: String("gh-pages")},
   132  	}
   133  
   134  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
   135  		v := new(PagesUpdate)
   136  		json.NewDecoder(r.Body).Decode(v)
   137  
   138  		testMethod(t, r, "PUT")
   139  		want := &PagesUpdate{CNAME: String("www.my-domain.com"), BuildType: String("legacy"), Source: &PagesSource{Branch: String("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  	client, mux, _, teardown := setup()
   166  	defer teardown()
   167  
   168  	input := &PagesUpdate{
   169  		CNAME:     String("www.my-domain.com"),
   170  		BuildType: String("workflow"),
   171  	}
   172  
   173  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
   174  		v := new(PagesUpdate)
   175  		json.NewDecoder(r.Body).Decode(v)
   176  
   177  		testMethod(t, r, "PUT")
   178  		want := &PagesUpdate{CNAME: String("www.my-domain.com"), BuildType: String("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_UpdatePages_NullCNAME(t *testing.T) {
   204  	client, mux, _, teardown := setup()
   205  	defer teardown()
   206  
   207  	input := &PagesUpdate{
   208  		Source: &PagesSource{Branch: String("gh-pages")},
   209  	}
   210  
   211  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
   212  		got, err := io.ReadAll(r.Body)
   213  		if err != nil {
   214  			t.Fatalf("unable to read body: %v", err)
   215  		}
   216  
   217  		want := []byte(`{"cname":null,"source":{"branch":"gh-pages"}}` + "\n")
   218  		if !bytes.Equal(got, want) {
   219  			t.Errorf("Request body = %+v, want %+v", got, want)
   220  		}
   221  
   222  		fmt.Fprint(w, `{"cname":null,"source":{"branch":"gh-pages"}}`)
   223  	})
   224  
   225  	ctx := context.Background()
   226  	_, err := client.Repositories.UpdatePages(ctx, "o", "r", input)
   227  	if err != nil {
   228  		t.Errorf("Repositories.UpdatePages returned error: %v", err)
   229  	}
   230  }
   231  
   232  func TestRepositoriesService_DisablePages(t *testing.T) {
   233  	client, mux, _, teardown := setup()
   234  	defer teardown()
   235  
   236  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
   237  		testMethod(t, r, "DELETE")
   238  		testHeader(t, r, "Accept", mediaTypeEnablePagesAPIPreview)
   239  	})
   240  
   241  	ctx := context.Background()
   242  	_, err := client.Repositories.DisablePages(ctx, "o", "r")
   243  	if err != nil {
   244  		t.Errorf("Repositories.DisablePages returned error: %v", err)
   245  	}
   246  
   247  	const methodName = "DisablePages"
   248  	testBadOptions(t, methodName, func() (err error) {
   249  		_, err = client.Repositories.DisablePages(ctx, "\n", "\n")
   250  		return err
   251  	})
   252  
   253  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   254  		return client.Repositories.DisablePages(ctx, "o", "r")
   255  	})
   256  }
   257  
   258  func TestRepositoriesService_GetPagesInfo(t *testing.T) {
   259  	client, mux, _, teardown := setup()
   260  	defer teardown()
   261  
   262  	mux.HandleFunc("/repos/o/r/pages", func(w http.ResponseWriter, r *http.Request) {
   263  		testMethod(t, r, "GET")
   264  		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}`)
   265  	})
   266  
   267  	ctx := context.Background()
   268  	page, _, err := client.Repositories.GetPagesInfo(ctx, "o", "r")
   269  	if err != nil {
   270  		t.Errorf("Repositories.GetPagesInfo returned error: %v", err)
   271  	}
   272  
   273  	want := &Pages{URL: String("u"), Status: String("s"), CNAME: String("c"), Custom404: Bool(false), HTMLURL: String("h"), Public: Bool(true), HTTPSCertificate: &PagesHTTPSCertificate{State: String("approved"), Description: String("Certificate is approved"), Domains: []string{"developer.github.com"}, ExpiresAt: String("2021-05-22")}, HTTPSEnforced: Bool(true)}
   274  	if !cmp.Equal(page, want) {
   275  		t.Errorf("Repositories.GetPagesInfo returned %+v, want %+v", page, want)
   276  	}
   277  
   278  	const methodName = "GetPagesInfo"
   279  	testBadOptions(t, methodName, func() (err error) {
   280  		_, _, err = client.Repositories.GetPagesInfo(ctx, "\n", "\n")
   281  		return err
   282  	})
   283  
   284  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   285  		got, resp, err := client.Repositories.GetPagesInfo(ctx, "o", "r")
   286  		if got != nil {
   287  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
   288  		}
   289  		return resp, err
   290  	})
   291  }
   292  
   293  func TestRepositoriesService_ListPagesBuilds(t *testing.T) {
   294  	client, mux, _, teardown := setup()
   295  	defer teardown()
   296  
   297  	mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) {
   298  		testMethod(t, r, "GET")
   299  		fmt.Fprint(w, `[{"url":"u","status":"s","commit":"c"}]`)
   300  	})
   301  
   302  	ctx := context.Background()
   303  	pages, _, err := client.Repositories.ListPagesBuilds(ctx, "o", "r", nil)
   304  	if err != nil {
   305  		t.Errorf("Repositories.ListPagesBuilds returned error: %v", err)
   306  	}
   307  
   308  	want := []*PagesBuild{{URL: String("u"), Status: String("s"), Commit: String("c")}}
   309  	if !cmp.Equal(pages, want) {
   310  		t.Errorf("Repositories.ListPagesBuilds returned %+v, want %+v", pages, want)
   311  	}
   312  
   313  	const methodName = "ListPagesBuilds"
   314  	testBadOptions(t, methodName, func() (err error) {
   315  		_, _, err = client.Repositories.ListPagesBuilds(ctx, "\n", "\n", nil)
   316  		return err
   317  	})
   318  
   319  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   320  		got, resp, err := client.Repositories.ListPagesBuilds(ctx, "o", "r", nil)
   321  		if got != nil {
   322  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
   323  		}
   324  		return resp, err
   325  	})
   326  }
   327  
   328  func TestRepositoriesService_ListPagesBuilds_withOptions(t *testing.T) {
   329  	client, mux, _, teardown := setup()
   330  	defer teardown()
   331  
   332  	mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) {
   333  		testMethod(t, r, "GET")
   334  		testFormValues(t, r, values{
   335  			"page": "2",
   336  		})
   337  		fmt.Fprint(w, `[]`)
   338  	})
   339  
   340  	ctx := context.Background()
   341  	_, _, err := client.Repositories.ListPagesBuilds(ctx, "o", "r", &ListOptions{Page: 2})
   342  	if err != nil {
   343  		t.Errorf("Repositories.ListPagesBuilds returned error: %v", err)
   344  	}
   345  }
   346  
   347  func TestRepositoriesService_GetLatestPagesBuild(t *testing.T) {
   348  	client, mux, _, teardown := setup()
   349  	defer teardown()
   350  
   351  	mux.HandleFunc("/repos/o/r/pages/builds/latest", func(w http.ResponseWriter, r *http.Request) {
   352  		testMethod(t, r, "GET")
   353  		fmt.Fprint(w, `{"url":"u","status":"s","commit":"c"}`)
   354  	})
   355  
   356  	ctx := context.Background()
   357  	build, _, err := client.Repositories.GetLatestPagesBuild(ctx, "o", "r")
   358  	if err != nil {
   359  		t.Errorf("Repositories.GetLatestPagesBuild returned error: %v", err)
   360  	}
   361  
   362  	want := &PagesBuild{URL: String("u"), Status: String("s"), Commit: String("c")}
   363  	if !cmp.Equal(build, want) {
   364  		t.Errorf("Repositories.GetLatestPagesBuild returned %+v, want %+v", build, want)
   365  	}
   366  
   367  	const methodName = "GetLatestPagesBuild"
   368  	testBadOptions(t, methodName, func() (err error) {
   369  		_, _, err = client.Repositories.GetLatestPagesBuild(ctx, "\n", "\n")
   370  		return err
   371  	})
   372  
   373  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   374  		got, resp, err := client.Repositories.GetLatestPagesBuild(ctx, "o", "r")
   375  		if got != nil {
   376  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
   377  		}
   378  		return resp, err
   379  	})
   380  }
   381  
   382  func TestRepositoriesService_GetPageBuild(t *testing.T) {
   383  	client, mux, _, teardown := setup()
   384  	defer teardown()
   385  
   386  	mux.HandleFunc("/repos/o/r/pages/builds/1", func(w http.ResponseWriter, r *http.Request) {
   387  		testMethod(t, r, "GET")
   388  		fmt.Fprint(w, `{"url":"u","status":"s","commit":"c"}`)
   389  	})
   390  
   391  	ctx := context.Background()
   392  	build, _, err := client.Repositories.GetPageBuild(ctx, "o", "r", 1)
   393  	if err != nil {
   394  		t.Errorf("Repositories.GetPageBuild returned error: %v", err)
   395  	}
   396  
   397  	want := &PagesBuild{URL: String("u"), Status: String("s"), Commit: String("c")}
   398  	if !cmp.Equal(build, want) {
   399  		t.Errorf("Repositories.GetPageBuild returned %+v, want %+v", build, want)
   400  	}
   401  
   402  	const methodName = "GetPageBuild"
   403  	testBadOptions(t, methodName, func() (err error) {
   404  		_, _, err = client.Repositories.GetPageBuild(ctx, "\n", "\n", -1)
   405  		return err
   406  	})
   407  
   408  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   409  		got, resp, err := client.Repositories.GetPageBuild(ctx, "o", "r", 1)
   410  		if got != nil {
   411  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
   412  		}
   413  		return resp, err
   414  	})
   415  }
   416  
   417  func TestRepositoriesService_RequestPageBuild(t *testing.T) {
   418  	client, mux, _, teardown := setup()
   419  	defer teardown()
   420  
   421  	mux.HandleFunc("/repos/o/r/pages/builds", func(w http.ResponseWriter, r *http.Request) {
   422  		testMethod(t, r, "POST")
   423  		fmt.Fprint(w, `{"url":"u","status":"s"}`)
   424  	})
   425  
   426  	ctx := context.Background()
   427  	build, _, err := client.Repositories.RequestPageBuild(ctx, "o", "r")
   428  	if err != nil {
   429  		t.Errorf("Repositories.RequestPageBuild returned error: %v", err)
   430  	}
   431  
   432  	want := &PagesBuild{URL: String("u"), Status: String("s")}
   433  	if !cmp.Equal(build, want) {
   434  		t.Errorf("Repositories.RequestPageBuild returned %+v, want %+v", build, want)
   435  	}
   436  
   437  	const methodName = "RequestPageBuild"
   438  	testBadOptions(t, methodName, func() (err error) {
   439  		_, _, err = client.Repositories.RequestPageBuild(ctx, "\n", "\n")
   440  		return err
   441  	})
   442  
   443  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   444  		got, resp, err := client.Repositories.RequestPageBuild(ctx, "o", "r")
   445  		if got != nil {
   446  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
   447  		}
   448  		return resp, err
   449  	})
   450  }
   451  
   452  func TestRepositoriesService_GetPageHealthCheck(t *testing.T) {
   453  	client, mux, _, teardown := setup()
   454  	defer teardown()
   455  
   456  	mux.HandleFunc("/repos/o/r/pages/health", func(w http.ResponseWriter, r *http.Request) {
   457  		testMethod(t, r, "GET")
   458  		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}}`)
   459  	})
   460  
   461  	ctx := context.Background()
   462  	healthCheckResponse, _, err := client.Repositories.GetPageHealthCheck(ctx, "o", "r")
   463  	if err != nil {
   464  		t.Errorf("Repositories.GetPageHealthCheck returned error: %v", err)
   465  	}
   466  
   467  	want := &PagesHealthCheckResponse{
   468  		Domain: &PagesDomain{
   469  			Host:        String("example.com"),
   470  			URI:         String("http://example.com/"),
   471  			Nameservers: String("default"),
   472  			DNSResolves: Bool(true),
   473  		},
   474  		AltDomain: &PagesDomain{
   475  			Host:        String("www.example.com"),
   476  			URI:         String("http://www.example.com/"),
   477  			Nameservers: String("default"),
   478  			DNSResolves: Bool(true),
   479  		},
   480  	}
   481  	if !cmp.Equal(healthCheckResponse, want) {
   482  		t.Errorf("Repositories.GetPageHealthCheck returned %+v, want %+v", healthCheckResponse, want)
   483  	}
   484  
   485  	const methodName = "GetPageHealthCheck"
   486  	testBadOptions(t, methodName, func() (err error) {
   487  		_, _, err = client.Repositories.GetPageHealthCheck(ctx, "\n", "\n")
   488  		return err
   489  	})
   490  
   491  	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
   492  		got, resp, err := client.Repositories.GetPageHealthCheck(ctx, "o", "r")
   493  		if got != nil {
   494  			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
   495  		}
   496  		return resp, err
   497  	})
   498  }
   499  
   500  func TestPagesSource_Marshal(t *testing.T) {
   501  	testJSONMarshal(t, &PagesSource{}, "{}")
   502  
   503  	u := &PagesSource{
   504  		Branch: String("branch"),
   505  		Path:   String("path"),
   506  	}
   507  
   508  	want := `{
   509  		"branch": "branch",
   510  		"path": "path"
   511  	}`
   512  
   513  	testJSONMarshal(t, u, want)
   514  }
   515  
   516  func TestPagesError_Marshal(t *testing.T) {
   517  	testJSONMarshal(t, &PagesError{}, "{}")
   518  
   519  	u := &PagesError{
   520  		Message: String("message"),
   521  	}
   522  
   523  	want := `{
   524  		"message": "message"
   525  	}`
   526  
   527  	testJSONMarshal(t, u, want)
   528  }
   529  
   530  func TestPagesUpdate_Marshal(t *testing.T) {
   531  	testJSONMarshal(t, &PagesUpdate{}, "{}")
   532  
   533  	u := &PagesUpdate{
   534  		CNAME:  String("cname"),
   535  		Source: &PagesSource{Path: String("src")},
   536  	}
   537  
   538  	want := `{
   539  		"cname": "cname",
   540  		"source": { "path": "src" }
   541  	}`
   542  
   543  	testJSONMarshal(t, u, want)
   544  }
   545  
   546  func TestPages_Marshal(t *testing.T) {
   547  	testJSONMarshal(t, &Pages{}, "{}")
   548  
   549  	u := &Pages{
   550  		URL:       String("url"),
   551  		Status:    String("status"),
   552  		CNAME:     String("cname"),
   553  		Custom404: Bool(false),
   554  		HTMLURL:   String("hurl"),
   555  		Source: &PagesSource{
   556  			Branch: String("branch"),
   557  			Path:   String("path"),
   558  		},
   559  	}
   560  
   561  	want := `{
   562  		"url": "url",
   563  		"status": "status",
   564  		"cname": "cname",
   565  		"custom_404": false,
   566  		"html_url": "hurl",
   567  		"source": {
   568  			"branch": "branch",
   569  			"path": "path"
   570  		}
   571  	}`
   572  
   573  	testJSONMarshal(t, u, want)
   574  }
   575  
   576  func TestPagesBuild_Marshal(t *testing.T) {
   577  	testJSONMarshal(t, &PagesBuild{}, "{}")
   578  
   579  	u := &PagesBuild{
   580  		URL:    String("url"),
   581  		Status: String("status"),
   582  		Error: &PagesError{
   583  			Message: String("message"),
   584  		},
   585  		Pusher:    &User{ID: Int64(1)},
   586  		Commit:    String("commit"),
   587  		Duration:  Int(1),
   588  		CreatedAt: &Timestamp{referenceTime},
   589  		UpdatedAt: &Timestamp{referenceTime},
   590  	}
   591  
   592  	want := `{
   593  		"url": "url",
   594  		"status": "status",
   595  		"error": {
   596  			"message": "message"
   597  		},
   598  		"pusher": {
   599  			"id": 1
   600  		},
   601  		"commit": "commit",
   602  		"duration": 1,
   603  		"created_at": ` + referenceTimeStr + `,
   604  		"updated_at": ` + referenceTimeStr + `
   605  	}`
   606  
   607  	testJSONMarshal(t, u, want)
   608  }
   609  
   610  func TestPagesHealthCheckResponse_Marshal(t *testing.T) {
   611  	testJSONMarshal(t, &PagesHealthCheckResponse{}, "{}")
   612  
   613  	u := &PagesHealthCheckResponse{
   614  		Domain: &PagesDomain{
   615  			Host:                          String("example.com"),
   616  			URI:                           String("http://example.com/"),
   617  			Nameservers:                   String("default"),
   618  			DNSResolves:                   Bool(true),
   619  			IsProxied:                     Bool(false),
   620  			IsCloudflareIP:                Bool(false),
   621  			IsFastlyIP:                    Bool(false),
   622  			IsOldIPAddress:                Bool(false),
   623  			IsARecord:                     Bool(true),
   624  			HasCNAMERecord:                Bool(false),
   625  			HasMXRecordsPresent:           Bool(false),
   626  			IsValidDomain:                 Bool(true),
   627  			IsApexDomain:                  Bool(true),
   628  			ShouldBeARecord:               Bool(true),
   629  			IsCNAMEToGithubUserDomain:     Bool(false),
   630  			IsCNAMEToPagesDotGithubDotCom: Bool(false),
   631  			IsCNAMEToFastly:               Bool(false),
   632  			IsPointedToGithubPagesIP:      Bool(true),
   633  			IsNonGithubPagesIPPresent:     Bool(false),
   634  			IsPagesDomain:                 Bool(false),
   635  			IsServedByPages:               Bool(true),
   636  			IsValid:                       Bool(true),
   637  			Reason:                        String("some reason"),
   638  			RespondsToHTTPS:               Bool(true),
   639  			EnforcesHTTPS:                 Bool(true),
   640  			HTTPSError:                    String("some error"),
   641  			IsHTTPSEligible:               Bool(true),
   642  			CAAError:                      String("some error"),
   643  		},
   644  		AltDomain: &PagesDomain{
   645  			Host:        String("www.example.com"),
   646  			URI:         String("http://www.example.com/"),
   647  			Nameservers: String("default"),
   648  			DNSResolves: Bool(true),
   649  		},
   650  	}
   651  
   652  	want := `{
   653  		"domain": {
   654  		  "host": "example.com",
   655  		  "uri": "http://example.com/",
   656  		  "nameservers": "default",
   657  		  "dns_resolves": true,
   658  		  "is_proxied": false,
   659  		  "is_cloudflare_ip": false,
   660  		  "is_fastly_ip": false,
   661  		  "is_old_ip_address": false,
   662  		  "is_a_record": true,
   663  		  "has_cname_record": false,
   664  		  "has_mx_records_present": false,
   665  		  "is_valid_domain": true,
   666  		  "is_apex_domain": true,
   667  		  "should_be_a_record": true,
   668  		  "is_cname_to_github_user_domain": false,
   669  		  "is_cname_to_pages_dot_github_dot_com": false,
   670  		  "is_cname_to_fastly": false,
   671  		  "is_pointed_to_github_pages_ip": true,
   672  		  "is_non_github_pages_ip_present": false,
   673  		  "is_pages_domain": false,
   674  		  "is_served_by_pages": true,
   675  		  "is_valid": true,
   676  		  "reason": "some reason",
   677  		  "responds_to_https": true,
   678  		  "enforces_https": true,
   679  		  "https_error": "some error",
   680  		  "is_https_eligible": true,
   681  		  "caa_error": "some error"
   682  		},
   683  		"alt_domain": {
   684  		  "host": "www.example.com",
   685  		  "uri": "http://www.example.com/",
   686  		  "nameservers": "default",
   687  		  "dns_resolves": true
   688  		}
   689  	  }`
   690  
   691  	testJSONMarshal(t, u, want)
   692  }
   693  
   694  func TestCreatePagesRequest_Marshal(t *testing.T) {
   695  	testJSONMarshal(t, &createPagesRequest{}, "{}")
   696  
   697  	u := &createPagesRequest{
   698  		Source: &PagesSource{
   699  			Branch: String("branch"),
   700  			Path:   String("path"),
   701  		},
   702  	}
   703  
   704  	want := `{
   705  		"source": {
   706  			"branch": "branch",
   707  			"path": "path"
   708  		}
   709  	}`
   710  
   711  	testJSONMarshal(t, u, want)
   712  }
   713  

View as plain text