github.com/google/go-github/v68@v68.0.0/github/packages_test.go (about)

     1  // Copyright 2021 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 "testing"
     9  
    10  func TestPackageRegistry_Marshal(t *testing.T) {
    11  	t.Parallel()
    12  	testJSONMarshal(t, &PackageRegistry{}, "{}")
    13  
    14  	o := &PackageRegistry{
    15  		AboutURL: Ptr("aurl"),
    16  		Name:     Ptr("name"),
    17  		Type:     Ptr("type"),
    18  		URL:      Ptr("url"),
    19  		Vendor:   Ptr("vendor"),
    20  	}
    21  	want := `{
    22  		"about_url": "aurl",
    23  		"name": "name",
    24  		"type": "type",
    25  		"url": "url",
    26  		"vendor": "vendor"
    27  	}`
    28  
    29  	testJSONMarshal(t, o, want)
    30  }
    31  
    32  func TestPackageFile_Marshal(t *testing.T) {
    33  	t.Parallel()
    34  	testJSONMarshal(t, &PackageFile{}, "{}")
    35  
    36  	o := &PackageFile{
    37  		DownloadURL: Ptr("durl"),
    38  		ID:          Ptr(int64(1)),
    39  		Name:        Ptr("name"),
    40  		SHA256:      Ptr("sha256"),
    41  		SHA1:        Ptr("sha1"),
    42  		MD5:         Ptr("md5"),
    43  		ContentType: Ptr("ct"),
    44  		State:       Ptr("state"),
    45  		Author: &User{
    46  			Login:           Ptr("l"),
    47  			ID:              Ptr(int64(1)),
    48  			URL:             Ptr("u"),
    49  			AvatarURL:       Ptr("a"),
    50  			GravatarID:      Ptr("g"),
    51  			Name:            Ptr("n"),
    52  			Company:         Ptr("c"),
    53  			Blog:            Ptr("b"),
    54  			Location:        Ptr("l"),
    55  			Email:           Ptr("e"),
    56  			Hireable:        Ptr(true),
    57  			Bio:             Ptr("b"),
    58  			TwitterUsername: Ptr("t"),
    59  			PublicRepos:     Ptr(1),
    60  			Followers:       Ptr(1),
    61  			Following:       Ptr(1),
    62  			CreatedAt:       &Timestamp{referenceTime},
    63  			SuspendedAt:     &Timestamp{referenceTime},
    64  		},
    65  		Size:      Ptr(int64(1)),
    66  		CreatedAt: &Timestamp{referenceTime},
    67  		UpdatedAt: &Timestamp{referenceTime},
    68  	}
    69  
    70  	want := `{
    71  		"download_url": "durl",
    72  		"id": 1,
    73  		"name": "name",
    74  		"sha256": "sha256",
    75  		"sha1": "sha1",
    76  		"md5": "md5",
    77  		"content_type": "ct",
    78  		"state": "state",
    79  		"author": {
    80  			"login": "l",
    81  			"id": 1,
    82  			"avatar_url": "a",
    83  			"gravatar_id": "g",
    84  			"name": "n",
    85  			"company": "c",
    86  			"blog": "b",
    87  			"location": "l",
    88  			"email": "e",
    89  			"hireable": true,
    90  			"bio": "b",
    91  			"twitter_username": "t",
    92  			"public_repos": 1,
    93  			"followers": 1,
    94  			"following": 1,
    95  			"created_at": ` + referenceTimeStr + `,
    96  			"suspended_at": ` + referenceTimeStr + `,
    97  			"url": "u"
    98  		},
    99  		"size": 1,
   100  		"created_at": ` + referenceTimeStr + `,
   101  		"updated_at": ` + referenceTimeStr + `
   102  	}`
   103  
   104  	testJSONMarshal(t, o, want)
   105  }
   106  
   107  func TestPackageRelease_Marshal(t *testing.T) {
   108  	t.Parallel()
   109  	testJSONMarshal(t, &PackageRelease{}, "{}")
   110  
   111  	o := &PackageRelease{
   112  		URL:             Ptr("url"),
   113  		HTMLURL:         Ptr("hurl"),
   114  		ID:              Ptr(int64(1)),
   115  		TagName:         Ptr("tn"),
   116  		TargetCommitish: Ptr("tcs"),
   117  		Name:            Ptr("name"),
   118  		Draft:           Ptr(true),
   119  		Author: &User{
   120  			Login:           Ptr("l"),
   121  			ID:              Ptr(int64(1)),
   122  			URL:             Ptr("u"),
   123  			AvatarURL:       Ptr("a"),
   124  			GravatarID:      Ptr("g"),
   125  			Name:            Ptr("n"),
   126  			Company:         Ptr("c"),
   127  			Blog:            Ptr("b"),
   128  			Location:        Ptr("l"),
   129  			Email:           Ptr("e"),
   130  			Hireable:        Ptr(true),
   131  			Bio:             Ptr("b"),
   132  			TwitterUsername: Ptr("t"),
   133  			PublicRepos:     Ptr(1),
   134  			Followers:       Ptr(1),
   135  			Following:       Ptr(1),
   136  			CreatedAt:       &Timestamp{referenceTime},
   137  			SuspendedAt:     &Timestamp{referenceTime},
   138  		},
   139  		Prerelease:  Ptr(true),
   140  		CreatedAt:   &Timestamp{referenceTime},
   141  		PublishedAt: &Timestamp{referenceTime},
   142  	}
   143  
   144  	want := `{
   145  		"url": "url",
   146  		"html_url": "hurl",
   147  		"id": 1,
   148  		"tag_name": "tn",
   149  		"target_commitish": "tcs",
   150  		"name": "name",
   151  		"draft": true,
   152  		"author": {
   153  			"login": "l",
   154  			"id": 1,
   155  			"avatar_url": "a",
   156  			"gravatar_id": "g",
   157  			"name": "n",
   158  			"company": "c",
   159  			"blog": "b",
   160  			"location": "l",
   161  			"email": "e",
   162  			"hireable": true,
   163  			"bio": "b",
   164  			"twitter_username": "t",
   165  			"public_repos": 1,
   166  			"followers": 1,
   167  			"following": 1,
   168  			"created_at": ` + referenceTimeStr + `,
   169  			"suspended_at": ` + referenceTimeStr + `,
   170  			"url": "u"
   171  		},
   172  		"prerelease": true,
   173  		"created_at": ` + referenceTimeStr + `,
   174  		"published_at": ` + referenceTimeStr + `
   175  	}`
   176  
   177  	testJSONMarshal(t, o, want)
   178  }
   179  
   180  func TestPackageVersion_Marshal(t *testing.T) {
   181  	t.Parallel()
   182  	testJSONMarshal(t, &PackageVersion{}, "{}")
   183  
   184  	o := &PackageVersion{
   185  		ID:       Ptr(int64(1)),
   186  		Version:  Ptr("ver"),
   187  		Summary:  Ptr("sum"),
   188  		Body:     Ptr("body"),
   189  		BodyHTML: Ptr("btnhtml"),
   190  		Release: &PackageRelease{
   191  			URL:             Ptr("url"),
   192  			HTMLURL:         Ptr("hurl"),
   193  			ID:              Ptr(int64(1)),
   194  			TagName:         Ptr("tn"),
   195  			TargetCommitish: Ptr("tcs"),
   196  			Name:            Ptr("name"),
   197  			Draft:           Ptr(true),
   198  			Author: &User{
   199  				Login:           Ptr("l"),
   200  				ID:              Ptr(int64(1)),
   201  				URL:             Ptr("u"),
   202  				AvatarURL:       Ptr("a"),
   203  				GravatarID:      Ptr("g"),
   204  				Name:            Ptr("n"),
   205  				Company:         Ptr("c"),
   206  				Blog:            Ptr("b"),
   207  				Location:        Ptr("l"),
   208  				Email:           Ptr("e"),
   209  				Hireable:        Ptr(true),
   210  				Bio:             Ptr("b"),
   211  				TwitterUsername: Ptr("t"),
   212  				PublicRepos:     Ptr(1),
   213  				Followers:       Ptr(1),
   214  				Following:       Ptr(1),
   215  				CreatedAt:       &Timestamp{referenceTime},
   216  				SuspendedAt:     &Timestamp{referenceTime},
   217  			},
   218  			Prerelease:  Ptr(true),
   219  			CreatedAt:   &Timestamp{referenceTime},
   220  			PublishedAt: &Timestamp{referenceTime},
   221  		},
   222  		Manifest:        Ptr("mani"),
   223  		HTMLURL:         Ptr("hurl"),
   224  		TagName:         Ptr("tn"),
   225  		TargetCommitish: Ptr("tcs"),
   226  		TargetOID:       Ptr("tid"),
   227  		Draft:           Ptr(true),
   228  		Prerelease:      Ptr(true),
   229  		CreatedAt:       &Timestamp{referenceTime},
   230  		UpdatedAt:       &Timestamp{referenceTime},
   231  		PackageFiles: []*PackageFile{
   232  			{
   233  				DownloadURL: Ptr("durl"),
   234  				ID:          Ptr(int64(1)),
   235  				Name:        Ptr("name"),
   236  				SHA256:      Ptr("sha256"),
   237  				SHA1:        Ptr("sha1"),
   238  				MD5:         Ptr("md5"),
   239  				ContentType: Ptr("ct"),
   240  				State:       Ptr("state"),
   241  				Author: &User{
   242  					Login:           Ptr("l"),
   243  					ID:              Ptr(int64(1)),
   244  					URL:             Ptr("u"),
   245  					AvatarURL:       Ptr("a"),
   246  					GravatarID:      Ptr("g"),
   247  					Name:            Ptr("n"),
   248  					Company:         Ptr("c"),
   249  					Blog:            Ptr("b"),
   250  					Location:        Ptr("l"),
   251  					Email:           Ptr("e"),
   252  					Hireable:        Ptr(true),
   253  					Bio:             Ptr("b"),
   254  					TwitterUsername: Ptr("t"),
   255  					PublicRepos:     Ptr(1),
   256  					Followers:       Ptr(1),
   257  					Following:       Ptr(1),
   258  					CreatedAt:       &Timestamp{referenceTime},
   259  					SuspendedAt:     &Timestamp{referenceTime},
   260  				},
   261  				Size:      Ptr(int64(1)),
   262  				CreatedAt: &Timestamp{referenceTime},
   263  				UpdatedAt: &Timestamp{referenceTime},
   264  			},
   265  		},
   266  		Author: &User{
   267  			Login:           Ptr("l"),
   268  			ID:              Ptr(int64(1)),
   269  			URL:             Ptr("u"),
   270  			AvatarURL:       Ptr("a"),
   271  			GravatarID:      Ptr("g"),
   272  			Name:            Ptr("n"),
   273  			Company:         Ptr("c"),
   274  			Blog:            Ptr("b"),
   275  			Location:        Ptr("l"),
   276  			Email:           Ptr("e"),
   277  			Hireable:        Ptr(true),
   278  			Bio:             Ptr("b"),
   279  			TwitterUsername: Ptr("t"),
   280  			PublicRepos:     Ptr(1),
   281  			Followers:       Ptr(1),
   282  			Following:       Ptr(1),
   283  			CreatedAt:       &Timestamp{referenceTime},
   284  			SuspendedAt:     &Timestamp{referenceTime},
   285  		},
   286  		InstallationCommand: Ptr("ic"),
   287  	}
   288  
   289  	want := `{
   290  		"id": 1,
   291  		"version": "ver",
   292  		"summary": "sum",
   293  		"body": "body",
   294  		"body_html": "btnhtml",
   295  		"release": {
   296  			"url": "url",
   297  			"html_url": "hurl",
   298  			"id": 1,
   299  			"tag_name": "tn",
   300  			"target_commitish": "tcs",
   301  			"name": "name",
   302  			"draft": true,
   303  			"author": {
   304  				"login": "l",
   305  				"id": 1,
   306  				"avatar_url": "a",
   307  				"gravatar_id": "g",
   308  				"name": "n",
   309  				"company": "c",
   310  				"blog": "b",
   311  				"location": "l",
   312  				"email": "e",
   313  				"hireable": true,
   314  				"bio": "b",
   315  				"twitter_username": "t",
   316  				"public_repos": 1,
   317  				"followers": 1,
   318  				"following": 1,
   319  				"created_at": ` + referenceTimeStr + `,
   320  				"suspended_at": ` + referenceTimeStr + `,
   321  				"url": "u"
   322  			},
   323  			"prerelease": true,
   324  			"created_at": ` + referenceTimeStr + `,
   325  			"published_at": ` + referenceTimeStr + `
   326  		},
   327  		"manifest": "mani",
   328  		"html_url": "hurl",
   329  		"tag_name": "tn",
   330  		"target_commitish": "tcs",
   331  		"target_oid": "tid",
   332  		"draft": true,
   333  		"prerelease": true,
   334  		"created_at": ` + referenceTimeStr + `,
   335  		"updated_at": ` + referenceTimeStr + `,
   336  		"package_files": [
   337  			{
   338  				"download_url": "durl",
   339  				"id": 1,
   340  				"name": "name",
   341  				"sha256": "sha256",
   342  				"sha1": "sha1",
   343  				"md5": "md5",
   344  				"content_type": "ct",
   345  				"state": "state",
   346  				"author": {
   347  					"login": "l",
   348  					"id": 1,
   349  					"avatar_url": "a",
   350  					"gravatar_id": "g",
   351  					"name": "n",
   352  					"company": "c",
   353  					"blog": "b",
   354  					"location": "l",
   355  					"email": "e",
   356  					"hireable": true,
   357  					"bio": "b",
   358  					"twitter_username": "t",
   359  					"public_repos": 1,
   360  					"followers": 1,
   361  					"following": 1,
   362  					"created_at": ` + referenceTimeStr + `,
   363  					"suspended_at": ` + referenceTimeStr + `,
   364  					"url": "u"
   365  				},
   366  				"size": 1,
   367  				"created_at": ` + referenceTimeStr + `,
   368  				"updated_at": ` + referenceTimeStr + `
   369  			}
   370  		],
   371  		"author": {
   372  			"login": "l",
   373  			"id": 1,
   374  			"avatar_url": "a",
   375  			"gravatar_id": "g",
   376  			"name": "n",
   377  			"company": "c",
   378  			"blog": "b",
   379  			"location": "l",
   380  			"email": "e",
   381  			"hireable": true,
   382  			"bio": "b",
   383  			"twitter_username": "t",
   384  			"public_repos": 1,
   385  			"followers": 1,
   386  			"following": 1,
   387  			"created_at": ` + referenceTimeStr + `,
   388  			"suspended_at": ` + referenceTimeStr + `,
   389  			"url": "u"
   390  		},
   391  		"installation_command": "ic"
   392  	}`
   393  
   394  	testJSONMarshal(t, o, want)
   395  }
   396  
   397  func TestPackage_Marshal(t *testing.T) {
   398  	t.Parallel()
   399  	testJSONMarshal(t, &Package{}, "{}")
   400  
   401  	o := &Package{
   402  		ID:          Ptr(int64(1)),
   403  		Name:        Ptr("name"),
   404  		PackageType: Ptr("pt"),
   405  		HTMLURL:     Ptr("hurl"),
   406  		CreatedAt:   &Timestamp{referenceTime},
   407  		UpdatedAt:   &Timestamp{referenceTime},
   408  		Visibility:  Ptr("private"),
   409  		Owner: &User{
   410  			Login:           Ptr("l"),
   411  			ID:              Ptr(int64(1)),
   412  			URL:             Ptr("u"),
   413  			AvatarURL:       Ptr("a"),
   414  			GravatarID:      Ptr("g"),
   415  			Name:            Ptr("n"),
   416  			Company:         Ptr("c"),
   417  			Blog:            Ptr("b"),
   418  			Location:        Ptr("l"),
   419  			Email:           Ptr("e"),
   420  			Hireable:        Ptr(true),
   421  			Bio:             Ptr("b"),
   422  			TwitterUsername: Ptr("t"),
   423  			PublicRepos:     Ptr(1),
   424  			Followers:       Ptr(1),
   425  			Following:       Ptr(1),
   426  			CreatedAt:       &Timestamp{referenceTime},
   427  			SuspendedAt:     &Timestamp{referenceTime},
   428  		},
   429  		PackageVersion: &PackageVersion{
   430  			ID:       Ptr(int64(1)),
   431  			Version:  Ptr("ver"),
   432  			Summary:  Ptr("sum"),
   433  			Body:     Ptr("body"),
   434  			BodyHTML: Ptr("btnhtml"),
   435  			Release: &PackageRelease{
   436  				URL:             Ptr("url"),
   437  				HTMLURL:         Ptr("hurl"),
   438  				ID:              Ptr(int64(1)),
   439  				TagName:         Ptr("tn"),
   440  				TargetCommitish: Ptr("tcs"),
   441  				Name:            Ptr("name"),
   442  				Draft:           Ptr(true),
   443  				Author: &User{
   444  					Login:           Ptr("l"),
   445  					ID:              Ptr(int64(1)),
   446  					URL:             Ptr("u"),
   447  					AvatarURL:       Ptr("a"),
   448  					GravatarID:      Ptr("g"),
   449  					Name:            Ptr("n"),
   450  					Company:         Ptr("c"),
   451  					Blog:            Ptr("b"),
   452  					Location:        Ptr("l"),
   453  					Email:           Ptr("e"),
   454  					Hireable:        Ptr(true),
   455  					Bio:             Ptr("b"),
   456  					TwitterUsername: Ptr("t"),
   457  					PublicRepos:     Ptr(1),
   458  					Followers:       Ptr(1),
   459  					Following:       Ptr(1),
   460  					CreatedAt:       &Timestamp{referenceTime},
   461  					SuspendedAt:     &Timestamp{referenceTime},
   462  				},
   463  				Prerelease:  Ptr(true),
   464  				CreatedAt:   &Timestamp{referenceTime},
   465  				PublishedAt: &Timestamp{referenceTime},
   466  			},
   467  			Manifest:        Ptr("mani"),
   468  			HTMLURL:         Ptr("hurl"),
   469  			TagName:         Ptr("tn"),
   470  			TargetCommitish: Ptr("tcs"),
   471  			TargetOID:       Ptr("tid"),
   472  			Draft:           Ptr(true),
   473  			Prerelease:      Ptr(true),
   474  			CreatedAt:       &Timestamp{referenceTime},
   475  			UpdatedAt:       &Timestamp{referenceTime},
   476  			PackageFiles: []*PackageFile{
   477  				{
   478  					DownloadURL: Ptr("durl"),
   479  					ID:          Ptr(int64(1)),
   480  					Name:        Ptr("name"),
   481  					SHA256:      Ptr("sha256"),
   482  					SHA1:        Ptr("sha1"),
   483  					MD5:         Ptr("md5"),
   484  					ContentType: Ptr("ct"),
   485  					State:       Ptr("state"),
   486  					Author: &User{
   487  						Login:           Ptr("l"),
   488  						ID:              Ptr(int64(1)),
   489  						URL:             Ptr("u"),
   490  						AvatarURL:       Ptr("a"),
   491  						GravatarID:      Ptr("g"),
   492  						Name:            Ptr("n"),
   493  						Company:         Ptr("c"),
   494  						Blog:            Ptr("b"),
   495  						Location:        Ptr("l"),
   496  						Email:           Ptr("e"),
   497  						Hireable:        Ptr(true),
   498  						Bio:             Ptr("b"),
   499  						TwitterUsername: Ptr("t"),
   500  						PublicRepos:     Ptr(1),
   501  						Followers:       Ptr(1),
   502  						Following:       Ptr(1),
   503  						CreatedAt:       &Timestamp{referenceTime},
   504  						SuspendedAt:     &Timestamp{referenceTime},
   505  					},
   506  					Size:      Ptr(int64(1)),
   507  					CreatedAt: &Timestamp{referenceTime},
   508  					UpdatedAt: &Timestamp{referenceTime},
   509  				},
   510  			},
   511  			Author: &User{
   512  				Login:           Ptr("l"),
   513  				ID:              Ptr(int64(1)),
   514  				URL:             Ptr("u"),
   515  				AvatarURL:       Ptr("a"),
   516  				GravatarID:      Ptr("g"),
   517  				Name:            Ptr("n"),
   518  				Company:         Ptr("c"),
   519  				Blog:            Ptr("b"),
   520  				Location:        Ptr("l"),
   521  				Email:           Ptr("e"),
   522  				Hireable:        Ptr(true),
   523  				Bio:             Ptr("b"),
   524  				TwitterUsername: Ptr("t"),
   525  				PublicRepos:     Ptr(1),
   526  				Followers:       Ptr(1),
   527  				Following:       Ptr(1),
   528  				CreatedAt:       &Timestamp{referenceTime},
   529  				SuspendedAt:     &Timestamp{referenceTime},
   530  			},
   531  			InstallationCommand: Ptr("ic"),
   532  		},
   533  		Registry: &PackageRegistry{
   534  			AboutURL: Ptr("aurl"),
   535  			Name:     Ptr("name"),
   536  			Type:     Ptr("type"),
   537  			URL:      Ptr("url"),
   538  			Vendor:   Ptr("vendor"),
   539  		},
   540  	}
   541  
   542  	want := `{
   543  		"id": 1,
   544  		"name": "name",
   545  		"package_type": "pt",
   546  		"html_url": "hurl",
   547  		"created_at": ` + referenceTimeStr + `,
   548  		"updated_at": ` + referenceTimeStr + `,
   549  		"visibility": "private",
   550  		"owner": {
   551  			"login": "l",
   552  			"id": 1,
   553  			"avatar_url": "a",
   554  			"gravatar_id": "g",
   555  			"name": "n",
   556  			"company": "c",
   557  			"blog": "b",
   558  			"location": "l",
   559  			"email": "e",
   560  			"hireable": true,
   561  			"bio": "b",
   562  			"twitter_username": "t",
   563  			"public_repos": 1,
   564  			"followers": 1,
   565  			"following": 1,
   566  			"created_at": ` + referenceTimeStr + `,
   567  			"suspended_at": ` + referenceTimeStr + `,
   568  			"url": "u"
   569  		},
   570  		"package_version": {
   571  			"id": 1,
   572  			"version": "ver",
   573  			"summary": "sum",
   574  			"body": "body",
   575  			"body_html": "btnhtml",
   576  			"release": {
   577  				"url": "url",
   578  				"html_url": "hurl",
   579  				"id": 1,
   580  				"tag_name": "tn",
   581  				"target_commitish": "tcs",
   582  				"name": "name",
   583  				"draft": true,
   584  				"author": {
   585  					"login": "l",
   586  					"id": 1,
   587  					"avatar_url": "a",
   588  					"gravatar_id": "g",
   589  					"name": "n",
   590  					"company": "c",
   591  					"blog": "b",
   592  					"location": "l",
   593  					"email": "e",
   594  					"hireable": true,
   595  					"bio": "b",
   596  					"twitter_username": "t",
   597  					"public_repos": 1,
   598  					"followers": 1,
   599  					"following": 1,
   600  					"created_at": ` + referenceTimeStr + `,
   601  					"suspended_at": ` + referenceTimeStr + `,
   602  					"url": "u"
   603  				},
   604  				"prerelease": true,
   605  				"created_at": ` + referenceTimeStr + `,
   606  				"published_at": ` + referenceTimeStr + `
   607  			},
   608  			"manifest": "mani",
   609  			"html_url": "hurl",
   610  			"tag_name": "tn",
   611  			"target_commitish": "tcs",
   612  			"target_oid": "tid",
   613  			"draft": true,
   614  			"prerelease": true,
   615  			"created_at": ` + referenceTimeStr + `,
   616  			"updated_at": ` + referenceTimeStr + `,
   617  			"package_files": [
   618  				{
   619  					"download_url": "durl",
   620  					"id": 1,
   621  					"name": "name",
   622  					"sha256": "sha256",
   623  					"sha1": "sha1",
   624  					"md5": "md5",
   625  					"content_type": "ct",
   626  					"state": "state",
   627  					"author": {
   628  						"login": "l",
   629  						"id": 1,
   630  						"avatar_url": "a",
   631  						"gravatar_id": "g",
   632  						"name": "n",
   633  						"company": "c",
   634  						"blog": "b",
   635  						"location": "l",
   636  						"email": "e",
   637  						"hireable": true,
   638  						"bio": "b",
   639  						"twitter_username": "t",
   640  						"public_repos": 1,
   641  						"followers": 1,
   642  						"following": 1,
   643  						"created_at": ` + referenceTimeStr + `,
   644  						"suspended_at": ` + referenceTimeStr + `,
   645  						"url": "u"
   646  					},
   647  					"size": 1,
   648  					"created_at": ` + referenceTimeStr + `,
   649  					"updated_at": ` + referenceTimeStr + `
   650  				}
   651  			],
   652  			"author": {
   653  				"login": "l",
   654  				"id": 1,
   655  				"avatar_url": "a",
   656  				"gravatar_id": "g",
   657  				"name": "n",
   658  				"company": "c",
   659  				"blog": "b",
   660  				"location": "l",
   661  				"email": "e",
   662  				"hireable": true,
   663  				"bio": "b",
   664  				"twitter_username": "t",
   665  				"public_repos": 1,
   666  				"followers": 1,
   667  				"following": 1,
   668  				"created_at": ` + referenceTimeStr + `,
   669  				"suspended_at": ` + referenceTimeStr + `,
   670  				"url": "u"
   671  			},
   672  			"installation_command": "ic"
   673  		},
   674  		"registry": {
   675  			"about_url": "aurl",
   676  			"name": "name",
   677  			"type": "type",
   678  			"url": "url",
   679  			"vendor": "vendor"
   680  		}
   681  	}`
   682  
   683  	testJSONMarshal(t, o, want)
   684  }