github.com/google/go-github/v60@v60.0.0/github/event_types_test.go (about) 1 // Copyright 2020 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 "encoding/json" 10 "testing" 11 ) 12 13 func TestEditChange_Marshal_TitleChange(t *testing.T) { 14 testJSONMarshal(t, &EditChange{}, "{}") 15 16 u := &EditChange{ 17 Title: &EditTitle{ 18 From: String("TitleFrom"), 19 }, 20 Body: nil, 21 Base: nil, 22 } 23 24 want := `{ 25 "title": { 26 "from": "TitleFrom" 27 } 28 }` 29 30 testJSONMarshal(t, u, want) 31 } 32 33 func TestEditChange_Marshal_BodyChange(t *testing.T) { 34 testJSONMarshal(t, &EditChange{}, "{}") 35 36 u := &EditChange{ 37 Title: nil, 38 Body: &EditBody{ 39 From: String("BodyFrom"), 40 }, 41 Base: nil, 42 } 43 44 want := `{ 45 "body": { 46 "from": "BodyFrom" 47 } 48 }` 49 50 testJSONMarshal(t, u, want) 51 } 52 53 func TestEditChange_Marshal_BaseChange(t *testing.T) { 54 testJSONMarshal(t, &EditChange{}, "{}") 55 56 Base := EditBase{ 57 Ref: &EditRef{ 58 From: String("BaseRefFrom"), 59 }, 60 SHA: &EditSHA{ 61 From: String("BaseSHAFrom"), 62 }, 63 } 64 65 u := &EditChange{ 66 Title: nil, 67 Body: nil, 68 Base: &Base, 69 } 70 71 want := `{ 72 "base": { 73 "ref": { 74 "from": "BaseRefFrom" 75 }, 76 "sha": { 77 "from": "BaseSHAFrom" 78 } 79 } 80 }` 81 82 testJSONMarshal(t, u, want) 83 } 84 85 func TestEditChange_Marshal_Repo(t *testing.T) { 86 testJSONMarshal(t, &EditChange{}, "{}") 87 88 u := &EditChange{ 89 Repo: &EditRepo{ 90 Name: &RepoName{ 91 From: String("old-repo-name"), 92 }, 93 }, 94 Topics: &EditTopics{ 95 From: []string{"topic1", "topic2"}, 96 }, 97 } 98 99 want := `{ 100 "repository": { 101 "name": { 102 "from": "old-repo-name" 103 } 104 }, 105 "topics": { 106 "from": [ 107 "topic1", 108 "topic2" 109 ] 110 } 111 }` 112 113 testJSONMarshal(t, u, want) 114 } 115 116 func TestEditChange_Marshal_TransferFromUser(t *testing.T) { 117 testJSONMarshal(t, &EditChange{}, "{}") 118 119 u := &EditChange{ 120 Owner: &EditOwner{ 121 OwnerInfo: &OwnerInfo{ 122 User: &User{ 123 Login: String("l"), 124 ID: Int64(1), 125 NodeID: String("n"), 126 URL: String("u"), 127 ReposURL: String("r"), 128 EventsURL: String("e"), 129 AvatarURL: String("a"), 130 }, 131 }, 132 }, 133 } 134 135 want := `{ 136 "owner": { 137 "from": { 138 "user": { 139 "login": "l", 140 "id": 1, 141 "node_id": "n", 142 "avatar_url": "a", 143 "url": "u", 144 "repos_url": "r", 145 "events_url": "e" 146 } 147 } 148 } 149 }` 150 151 testJSONMarshal(t, u, want) 152 } 153 154 func TestEditChange_Marshal_TransferFromOrg(t *testing.T) { 155 testJSONMarshal(t, &EditChange{}, "{}") 156 157 u := &EditChange{ 158 Owner: &EditOwner{ 159 OwnerInfo: &OwnerInfo{ 160 Org: &User{ 161 Login: String("l"), 162 ID: Int64(1), 163 NodeID: String("n"), 164 URL: String("u"), 165 ReposURL: String("r"), 166 EventsURL: String("e"), 167 AvatarURL: String("a"), 168 }, 169 }, 170 }, 171 } 172 173 want := `{ 174 "owner": { 175 "from": { 176 "organization": { 177 "login": "l", 178 "id": 1, 179 "node_id": "n", 180 "avatar_url": "a", 181 "url": "u", 182 "repos_url": "r", 183 "events_url": "e" 184 } 185 } 186 } 187 }` 188 189 testJSONMarshal(t, u, want) 190 } 191 192 func TestProjectChange_Marshal_NameChange(t *testing.T) { 193 testJSONMarshal(t, &ProjectChange{}, "{}") 194 195 u := &ProjectChange{ 196 Name: &ProjectName{From: String("NameFrom")}, 197 Body: nil, 198 } 199 200 want := `{ 201 "name": { 202 "from": "NameFrom" 203 } 204 }` 205 206 testJSONMarshal(t, u, want) 207 } 208 209 func TestProjectChange_Marshal_BodyChange(t *testing.T) { 210 testJSONMarshal(t, &ProjectChange{}, "{}") 211 212 u := &ProjectChange{ 213 Name: nil, 214 Body: &ProjectBody{From: String("BodyFrom")}, 215 } 216 217 want := `{ 218 "body": { 219 "from": "BodyFrom" 220 } 221 }` 222 223 testJSONMarshal(t, u, want) 224 } 225 226 func TestProjectCardChange_Marshal_NoteChange(t *testing.T) { 227 testJSONMarshal(t, &ProjectCardChange{}, "{}") 228 229 u := &ProjectCardChange{ 230 Note: &ProjectCardNote{From: String("NoteFrom")}, 231 } 232 233 want := `{ 234 "note": { 235 "from": "NoteFrom" 236 } 237 }` 238 239 testJSONMarshal(t, u, want) 240 } 241 242 func TestProjectColumnChange_Marshal_NameChange(t *testing.T) { 243 testJSONMarshal(t, &ProjectColumnChange{}, "{}") 244 245 u := &ProjectColumnChange{ 246 Name: &ProjectColumnName{From: String("NameFrom")}, 247 } 248 249 want := `{ 250 "name": { 251 "from": "NameFrom" 252 } 253 }` 254 255 testJSONMarshal(t, u, want) 256 } 257 258 func TestTeamAddEvent_Marshal(t *testing.T) { 259 testJSONMarshal(t, &TeamAddEvent{}, "{}") 260 261 u := &TeamAddEvent{ 262 Team: &Team{ 263 ID: Int64(1), 264 NodeID: String("n"), 265 Name: String("n"), 266 Description: String("d"), 267 URL: String("u"), 268 Slug: String("s"), 269 Permission: String("p"), 270 Privacy: String("p"), 271 MembersCount: Int(1), 272 ReposCount: Int(1), 273 MembersURL: String("m"), 274 RepositoriesURL: String("r"), 275 Organization: &Organization{ 276 Login: String("l"), 277 ID: Int64(1), 278 NodeID: String("n"), 279 AvatarURL: String("a"), 280 HTMLURL: String("h"), 281 Name: String("n"), 282 Company: String("c"), 283 Blog: String("b"), 284 Location: String("l"), 285 Email: String("e"), 286 }, 287 Parent: &Team{ 288 ID: Int64(1), 289 NodeID: String("n"), 290 Name: String("n"), 291 Description: String("d"), 292 URL: String("u"), 293 Slug: String("s"), 294 Permission: String("p"), 295 Privacy: String("p"), 296 MembersCount: Int(1), 297 ReposCount: Int(1), 298 }, 299 LDAPDN: String("l"), 300 }, 301 Repo: &Repository{ 302 ID: Int64(1), 303 URL: String("s"), 304 Name: String("n"), 305 }, 306 Org: &Organization{ 307 BillingEmail: String("be"), 308 Blog: String("b"), 309 Company: String("c"), 310 Email: String("e"), 311 TwitterUsername: String("tu"), 312 Location: String("loc"), 313 Name: String("n"), 314 Description: String("d"), 315 IsVerified: Bool(true), 316 HasOrganizationProjects: Bool(true), 317 HasRepositoryProjects: Bool(true), 318 DefaultRepoPermission: String("drp"), 319 MembersCanCreateRepos: Bool(true), 320 MembersCanCreateInternalRepos: Bool(true), 321 MembersCanCreatePrivateRepos: Bool(true), 322 MembersCanCreatePublicRepos: Bool(false), 323 MembersAllowedRepositoryCreationType: String("marct"), 324 MembersCanCreatePages: Bool(true), 325 MembersCanCreatePublicPages: Bool(false), 326 MembersCanCreatePrivatePages: Bool(true), 327 }, 328 Sender: &User{ 329 Login: String("l"), 330 ID: Int64(1), 331 NodeID: String("n"), 332 URL: String("u"), 333 ReposURL: String("r"), 334 EventsURL: String("e"), 335 AvatarURL: String("a"), 336 }, 337 Installation: &Installation{ 338 ID: Int64(1), 339 NodeID: String("nid"), 340 AppID: Int64(1), 341 AppSlug: String("as"), 342 TargetID: Int64(1), 343 Account: &User{ 344 Login: String("l"), 345 ID: Int64(1), 346 URL: String("u"), 347 AvatarURL: String("a"), 348 GravatarID: String("g"), 349 Name: String("n"), 350 Company: String("c"), 351 Blog: String("b"), 352 Location: String("l"), 353 Email: String("e"), 354 Hireable: Bool(true), 355 Bio: String("b"), 356 TwitterUsername: String("t"), 357 PublicRepos: Int(1), 358 Followers: Int(1), 359 Following: Int(1), 360 CreatedAt: &Timestamp{referenceTime}, 361 SuspendedAt: &Timestamp{referenceTime}, 362 }, 363 AccessTokensURL: String("atu"), 364 RepositoriesURL: String("ru"), 365 HTMLURL: String("hu"), 366 TargetType: String("tt"), 367 SingleFileName: String("sfn"), 368 RepositorySelection: String("rs"), 369 Events: []string{"e"}, 370 SingleFilePaths: []string{"s"}, 371 Permissions: &InstallationPermissions{ 372 Actions: String("a"), 373 Administration: String("ad"), 374 Checks: String("c"), 375 Contents: String("co"), 376 ContentReferences: String("cr"), 377 Deployments: String("d"), 378 Environments: String("e"), 379 Issues: String("i"), 380 Metadata: String("md"), 381 Members: String("m"), 382 OrganizationAdministration: String("oa"), 383 OrganizationHooks: String("oh"), 384 OrganizationPlan: String("op"), 385 OrganizationPreReceiveHooks: String("opr"), 386 OrganizationProjects: String("op"), 387 OrganizationSecrets: String("os"), 388 OrganizationSelfHostedRunners: String("osh"), 389 OrganizationUserBlocking: String("oub"), 390 Packages: String("pkg"), 391 Pages: String("pg"), 392 PullRequests: String("pr"), 393 RepositoryHooks: String("rh"), 394 RepositoryProjects: String("rp"), 395 RepositoryPreReceiveHooks: String("rprh"), 396 Secrets: String("s"), 397 SecretScanningAlerts: String("ssa"), 398 SecurityEvents: String("se"), 399 SingleFile: String("sf"), 400 Statuses: String("s"), 401 TeamDiscussions: String("td"), 402 VulnerabilityAlerts: String("va"), 403 Workflows: String("w"), 404 }, 405 CreatedAt: &Timestamp{referenceTime}, 406 UpdatedAt: &Timestamp{referenceTime}, 407 HasMultipleSingleFiles: Bool(false), 408 SuspendedBy: &User{ 409 Login: String("l"), 410 ID: Int64(1), 411 URL: String("u"), 412 AvatarURL: String("a"), 413 GravatarID: String("g"), 414 Name: String("n"), 415 Company: String("c"), 416 Blog: String("b"), 417 Location: String("l"), 418 Email: String("e"), 419 Hireable: Bool(true), 420 Bio: String("b"), 421 TwitterUsername: String("t"), 422 PublicRepos: Int(1), 423 Followers: Int(1), 424 Following: Int(1), 425 CreatedAt: &Timestamp{referenceTime}, 426 SuspendedAt: &Timestamp{referenceTime}, 427 }, 428 SuspendedAt: &Timestamp{referenceTime}, 429 }, 430 } 431 432 want := `{ 433 "team": { 434 "id": 1, 435 "node_id": "n", 436 "name": "n", 437 "description": "d", 438 "url": "u", 439 "slug": "s", 440 "permission": "p", 441 "privacy": "p", 442 "members_count": 1, 443 "repos_count": 1, 444 "organization": { 445 "login": "l", 446 "id": 1, 447 "node_id": "n", 448 "avatar_url": "a", 449 "html_url": "h", 450 "name": "n", 451 "company": "c", 452 "blog": "b", 453 "location": "l", 454 "email": "e" 455 }, 456 "members_url": "m", 457 "repositories_url": "r", 458 "parent": { 459 "id": 1, 460 "node_id": "n", 461 "name": "n", 462 "description": "d", 463 "url": "u", 464 "slug": "s", 465 "permission": "p", 466 "privacy": "p", 467 "members_count": 1, 468 "repos_count": 1 469 }, 470 "ldap_dn": "l" 471 }, 472 "repository": { 473 "id": 1, 474 "name": "n", 475 "url": "s" 476 }, 477 "organization": { 478 "name": "n", 479 "company": "c", 480 "blog": "b", 481 "location": "loc", 482 "email": "e", 483 "twitter_username": "tu", 484 "description": "d", 485 "billing_email": "be", 486 "is_verified": true, 487 "has_organization_projects": true, 488 "has_repository_projects": true, 489 "default_repository_permission": "drp", 490 "members_can_create_repositories": true, 491 "members_can_create_public_repositories": false, 492 "members_can_create_private_repositories": true, 493 "members_can_create_internal_repositories": true, 494 "members_allowed_repository_creation_type": "marct", 495 "members_can_create_pages": true, 496 "members_can_create_public_pages": false, 497 "members_can_create_private_pages": true 498 }, 499 "sender": { 500 "login": "l", 501 "id": 1, 502 "node_id": "n", 503 "avatar_url": "a", 504 "url": "u", 505 "events_url": "e", 506 "repos_url": "r" 507 }, 508 "installation": { 509 "id": 1, 510 "node_id": "nid", 511 "app_id": 1, 512 "app_slug": "as", 513 "target_id": 1, 514 "account": { 515 "login": "l", 516 "id": 1, 517 "avatar_url": "a", 518 "gravatar_id": "g", 519 "name": "n", 520 "company": "c", 521 "blog": "b", 522 "location": "l", 523 "email": "e", 524 "hireable": true, 525 "bio": "b", 526 "twitter_username": "t", 527 "public_repos": 1, 528 "followers": 1, 529 "following": 1, 530 "created_at": ` + referenceTimeStr + `, 531 "suspended_at": ` + referenceTimeStr + `, 532 "url": "u" 533 }, 534 "access_tokens_url": "atu", 535 "repositories_url": "ru", 536 "html_url": "hu", 537 "target_type": "tt", 538 "single_file_name": "sfn", 539 "repository_selection": "rs", 540 "events": [ 541 "e" 542 ], 543 "single_file_paths": [ 544 "s" 545 ], 546 "permissions": { 547 "actions": "a", 548 "administration": "ad", 549 "checks": "c", 550 "contents": "co", 551 "content_references": "cr", 552 "deployments": "d", 553 "environments": "e", 554 "issues": "i", 555 "metadata": "md", 556 "members": "m", 557 "organization_administration": "oa", 558 "organization_hooks": "oh", 559 "organization_plan": "op", 560 "organization_pre_receive_hooks": "opr", 561 "organization_projects": "op", 562 "organization_secrets": "os", 563 "organization_self_hosted_runners": "osh", 564 "organization_user_blocking": "oub", 565 "packages": "pkg", 566 "pages": "pg", 567 "pull_requests": "pr", 568 "repository_hooks": "rh", 569 "repository_projects": "rp", 570 "repository_pre_receive_hooks": "rprh", 571 "secrets": "s", 572 "secret_scanning_alerts": "ssa", 573 "security_events": "se", 574 "single_file": "sf", 575 "statuses": "s", 576 "team_discussions": "td", 577 "vulnerability_alerts": "va", 578 "workflows": "w" 579 }, 580 "created_at": ` + referenceTimeStr + `, 581 "updated_at": ` + referenceTimeStr + `, 582 "has_multiple_single_files": false, 583 "suspended_by": { 584 "login": "l", 585 "id": 1, 586 "avatar_url": "a", 587 "gravatar_id": "g", 588 "name": "n", 589 "company": "c", 590 "blog": "b", 591 "location": "l", 592 "email": "e", 593 "hireable": true, 594 "bio": "b", 595 "twitter_username": "t", 596 "public_repos": 1, 597 "followers": 1, 598 "following": 1, 599 "created_at": ` + referenceTimeStr + `, 600 "suspended_at": ` + referenceTimeStr + `, 601 "url": "u" 602 }, 603 "suspended_at": ` + referenceTimeStr + ` 604 } 605 }` 606 607 testJSONMarshal(t, u, want) 608 } 609 610 func TestStarEvent_Marshal(t *testing.T) { 611 testJSONMarshal(t, &StarEvent{}, "{}") 612 613 u := &StarEvent{ 614 Action: String("a"), 615 StarredAt: &Timestamp{referenceTime}, 616 Org: &Organization{ 617 BillingEmail: String("be"), 618 Blog: String("b"), 619 Company: String("c"), 620 Email: String("e"), 621 TwitterUsername: String("tu"), 622 Location: String("loc"), 623 Name: String("n"), 624 Description: String("d"), 625 IsVerified: Bool(true), 626 HasOrganizationProjects: Bool(true), 627 HasRepositoryProjects: Bool(true), 628 DefaultRepoPermission: String("drp"), 629 MembersCanCreateRepos: Bool(true), 630 MembersCanCreateInternalRepos: Bool(true), 631 MembersCanCreatePrivateRepos: Bool(true), 632 MembersCanCreatePublicRepos: Bool(false), 633 MembersAllowedRepositoryCreationType: String("marct"), 634 MembersCanCreatePages: Bool(true), 635 MembersCanCreatePublicPages: Bool(false), 636 MembersCanCreatePrivatePages: Bool(true), 637 }, 638 Repo: &Repository{ 639 ID: Int64(1), 640 URL: String("s"), 641 Name: String("n"), 642 }, 643 Sender: &User{ 644 Login: String("l"), 645 ID: Int64(1), 646 NodeID: String("n"), 647 URL: String("u"), 648 ReposURL: String("r"), 649 EventsURL: String("e"), 650 AvatarURL: String("a"), 651 }, 652 } 653 654 want := `{ 655 "action": "a", 656 "starred_at": ` + referenceTimeStr + `, 657 "organization": { 658 "name": "n", 659 "company": "c", 660 "blog": "b", 661 "location": "loc", 662 "email": "e", 663 "twitter_username": "tu", 664 "description": "d", 665 "billing_email": "be", 666 "is_verified": true, 667 "has_organization_projects": true, 668 "has_repository_projects": true, 669 "default_repository_permission": "drp", 670 "members_can_create_repositories": true, 671 "members_can_create_public_repositories": false, 672 "members_can_create_private_repositories": true, 673 "members_can_create_internal_repositories": true, 674 "members_allowed_repository_creation_type": "marct", 675 "members_can_create_pages": true, 676 "members_can_create_public_pages": false, 677 "members_can_create_private_pages": true 678 }, 679 "repository": { 680 "id": 1, 681 "name": "n", 682 "url": "s" 683 }, 684 "sender": { 685 "login": "l", 686 "id": 1, 687 "node_id": "n", 688 "avatar_url": "a", 689 "url": "u", 690 "events_url": "e", 691 "repos_url": "r" 692 } 693 }` 694 695 testJSONMarshal(t, u, want) 696 } 697 698 func TestTeamEvent_Marshal(t *testing.T) { 699 testJSONMarshal(t, &TeamEvent{}, "{}") 700 701 u := &TeamEvent{ 702 Action: String("a"), 703 Team: &Team{ 704 ID: Int64(1), 705 NodeID: String("n"), 706 Name: String("n"), 707 Description: String("d"), 708 URL: String("u"), 709 Slug: String("s"), 710 Permission: String("p"), 711 Privacy: String("p"), 712 MembersCount: Int(1), 713 ReposCount: Int(1), 714 MembersURL: String("m"), 715 RepositoriesURL: String("r"), 716 Organization: &Organization{ 717 Login: String("l"), 718 ID: Int64(1), 719 NodeID: String("n"), 720 AvatarURL: String("a"), 721 HTMLURL: String("h"), 722 Name: String("n"), 723 Company: String("c"), 724 Blog: String("b"), 725 Location: String("l"), 726 Email: String("e"), 727 }, 728 Parent: &Team{ 729 ID: Int64(1), 730 NodeID: String("n"), 731 Name: String("n"), 732 Description: String("d"), 733 URL: String("u"), 734 Slug: String("s"), 735 Permission: String("p"), 736 Privacy: String("p"), 737 MembersCount: Int(1), 738 ReposCount: Int(1), 739 }, 740 LDAPDN: String("l"), 741 }, 742 Changes: &TeamChange{ 743 Description: &TeamDescription{ 744 From: String("from"), 745 }, 746 Name: &TeamName{ 747 From: String("from"), 748 }, 749 Privacy: &TeamPrivacy{ 750 From: String("from"), 751 }, 752 Repository: &TeamRepository{ 753 Permissions: &TeamPermissions{ 754 From: &TeamPermissionsFrom{ 755 Admin: Bool(true), 756 Pull: Bool(true), 757 Push: Bool(true), 758 }, 759 }, 760 }, 761 }, 762 Repo: &Repository{ 763 ID: Int64(1), 764 URL: String("s"), 765 Name: String("n"), 766 }, 767 Org: &Organization{ 768 BillingEmail: String("be"), 769 Blog: String("b"), 770 Company: String("c"), 771 Email: String("e"), 772 TwitterUsername: String("tu"), 773 Location: String("loc"), 774 Name: String("n"), 775 Description: String("d"), 776 IsVerified: Bool(true), 777 HasOrganizationProjects: Bool(true), 778 HasRepositoryProjects: Bool(true), 779 DefaultRepoPermission: String("drp"), 780 MembersCanCreateRepos: Bool(true), 781 MembersCanCreateInternalRepos: Bool(true), 782 MembersCanCreatePrivateRepos: Bool(true), 783 MembersCanCreatePublicRepos: Bool(false), 784 MembersAllowedRepositoryCreationType: String("marct"), 785 MembersCanCreatePages: Bool(true), 786 MembersCanCreatePublicPages: Bool(false), 787 MembersCanCreatePrivatePages: Bool(true), 788 }, 789 Sender: &User{ 790 Login: String("l"), 791 ID: Int64(1), 792 NodeID: String("n"), 793 URL: String("u"), 794 ReposURL: String("r"), 795 EventsURL: String("e"), 796 AvatarURL: String("a"), 797 }, 798 Installation: &Installation{ 799 ID: Int64(1), 800 NodeID: String("nid"), 801 AppID: Int64(1), 802 AppSlug: String("as"), 803 TargetID: Int64(1), 804 Account: &User{ 805 Login: String("l"), 806 ID: Int64(1), 807 URL: String("u"), 808 AvatarURL: String("a"), 809 GravatarID: String("g"), 810 Name: String("n"), 811 Company: String("c"), 812 Blog: String("b"), 813 Location: String("l"), 814 Email: String("e"), 815 Hireable: Bool(true), 816 Bio: String("b"), 817 TwitterUsername: String("t"), 818 PublicRepos: Int(1), 819 Followers: Int(1), 820 Following: Int(1), 821 CreatedAt: &Timestamp{referenceTime}, 822 SuspendedAt: &Timestamp{referenceTime}, 823 }, 824 AccessTokensURL: String("atu"), 825 RepositoriesURL: String("ru"), 826 HTMLURL: String("hu"), 827 TargetType: String("tt"), 828 SingleFileName: String("sfn"), 829 RepositorySelection: String("rs"), 830 Events: []string{"e"}, 831 SingleFilePaths: []string{"s"}, 832 Permissions: &InstallationPermissions{ 833 Actions: String("a"), 834 Administration: String("ad"), 835 Checks: String("c"), 836 Contents: String("co"), 837 ContentReferences: String("cr"), 838 Deployments: String("d"), 839 Environments: String("e"), 840 Issues: String("i"), 841 Metadata: String("md"), 842 Members: String("m"), 843 OrganizationAdministration: String("oa"), 844 OrganizationHooks: String("oh"), 845 OrganizationPlan: String("op"), 846 OrganizationPreReceiveHooks: String("opr"), 847 OrganizationProjects: String("op"), 848 OrganizationSecrets: String("os"), 849 OrganizationSelfHostedRunners: String("osh"), 850 OrganizationUserBlocking: String("oub"), 851 Packages: String("pkg"), 852 Pages: String("pg"), 853 PullRequests: String("pr"), 854 RepositoryHooks: String("rh"), 855 RepositoryProjects: String("rp"), 856 RepositoryPreReceiveHooks: String("rprh"), 857 Secrets: String("s"), 858 SecretScanningAlerts: String("ssa"), 859 SecurityEvents: String("se"), 860 SingleFile: String("sf"), 861 Statuses: String("s"), 862 TeamDiscussions: String("td"), 863 VulnerabilityAlerts: String("va"), 864 Workflows: String("w"), 865 }, 866 CreatedAt: &Timestamp{referenceTime}, 867 UpdatedAt: &Timestamp{referenceTime}, 868 HasMultipleSingleFiles: Bool(false), 869 SuspendedBy: &User{ 870 Login: String("l"), 871 ID: Int64(1), 872 URL: String("u"), 873 AvatarURL: String("a"), 874 GravatarID: String("g"), 875 Name: String("n"), 876 Company: String("c"), 877 Blog: String("b"), 878 Location: String("l"), 879 Email: String("e"), 880 Hireable: Bool(true), 881 Bio: String("b"), 882 TwitterUsername: String("t"), 883 PublicRepos: Int(1), 884 Followers: Int(1), 885 Following: Int(1), 886 CreatedAt: &Timestamp{referenceTime}, 887 SuspendedAt: &Timestamp{referenceTime}, 888 }, 889 SuspendedAt: &Timestamp{referenceTime}, 890 }, 891 } 892 893 want := `{ 894 "action": "a", 895 "team": { 896 "id": 1, 897 "node_id": "n", 898 "name": "n", 899 "description": "d", 900 "url": "u", 901 "slug": "s", 902 "permission": "p", 903 "privacy": "p", 904 "members_count": 1, 905 "repos_count": 1, 906 "organization": { 907 "login": "l", 908 "id": 1, 909 "node_id": "n", 910 "avatar_url": "a", 911 "html_url": "h", 912 "name": "n", 913 "company": "c", 914 "blog": "b", 915 "location": "l", 916 "email": "e" 917 }, 918 "members_url": "m", 919 "repositories_url": "r", 920 "parent": { 921 "id": 1, 922 "node_id": "n", 923 "name": "n", 924 "description": "d", 925 "url": "u", 926 "slug": "s", 927 "permission": "p", 928 "privacy": "p", 929 "members_count": 1, 930 "repos_count": 1 931 }, 932 "ldap_dn": "l" 933 }, 934 "changes": { 935 "description": { 936 "from": "from" 937 }, 938 "name": { 939 "from": "from" 940 }, 941 "privacy": { 942 "from": "from" 943 }, 944 "repository": { 945 "permissions": { 946 "from": { 947 "admin": true, 948 "pull": true, 949 "push": true 950 } 951 } 952 } 953 }, 954 "repository": { 955 "id": 1, 956 "name": "n", 957 "url": "s" 958 }, 959 "organization": { 960 "name": "n", 961 "company": "c", 962 "blog": "b", 963 "location": "loc", 964 "email": "e", 965 "twitter_username": "tu", 966 "description": "d", 967 "billing_email": "be", 968 "is_verified": true, 969 "has_organization_projects": true, 970 "has_repository_projects": true, 971 "default_repository_permission": "drp", 972 "members_can_create_repositories": true, 973 "members_can_create_public_repositories": false, 974 "members_can_create_private_repositories": true, 975 "members_can_create_internal_repositories": true, 976 "members_allowed_repository_creation_type": "marct", 977 "members_can_create_pages": true, 978 "members_can_create_public_pages": false, 979 "members_can_create_private_pages": true 980 }, 981 "sender": { 982 "login": "l", 983 "id": 1, 984 "node_id": "n", 985 "avatar_url": "a", 986 "url": "u", 987 "events_url": "e", 988 "repos_url": "r" 989 }, 990 "installation": { 991 "id": 1, 992 "node_id": "nid", 993 "app_id": 1, 994 "app_slug": "as", 995 "target_id": 1, 996 "account": { 997 "login": "l", 998 "id": 1, 999 "avatar_url": "a", 1000 "gravatar_id": "g", 1001 "name": "n", 1002 "company": "c", 1003 "blog": "b", 1004 "location": "l", 1005 "email": "e", 1006 "hireable": true, 1007 "bio": "b", 1008 "twitter_username": "t", 1009 "public_repos": 1, 1010 "followers": 1, 1011 "following": 1, 1012 "created_at": ` + referenceTimeStr + `, 1013 "suspended_at": ` + referenceTimeStr + `, 1014 "url": "u" 1015 }, 1016 "access_tokens_url": "atu", 1017 "repositories_url": "ru", 1018 "html_url": "hu", 1019 "target_type": "tt", 1020 "single_file_name": "sfn", 1021 "repository_selection": "rs", 1022 "events": [ 1023 "e" 1024 ], 1025 "single_file_paths": [ 1026 "s" 1027 ], 1028 "permissions": { 1029 "actions": "a", 1030 "administration": "ad", 1031 "checks": "c", 1032 "contents": "co", 1033 "content_references": "cr", 1034 "deployments": "d", 1035 "environments": "e", 1036 "issues": "i", 1037 "metadata": "md", 1038 "members": "m", 1039 "organization_administration": "oa", 1040 "organization_hooks": "oh", 1041 "organization_plan": "op", 1042 "organization_pre_receive_hooks": "opr", 1043 "organization_projects": "op", 1044 "organization_secrets": "os", 1045 "organization_self_hosted_runners": "osh", 1046 "organization_user_blocking": "oub", 1047 "packages": "pkg", 1048 "pages": "pg", 1049 "pull_requests": "pr", 1050 "repository_hooks": "rh", 1051 "repository_projects": "rp", 1052 "repository_pre_receive_hooks": "rprh", 1053 "secrets": "s", 1054 "secret_scanning_alerts": "ssa", 1055 "security_events": "se", 1056 "single_file": "sf", 1057 "statuses": "s", 1058 "team_discussions": "td", 1059 "vulnerability_alerts": "va", 1060 "workflows": "w" 1061 }, 1062 "created_at": ` + referenceTimeStr + `, 1063 "updated_at": ` + referenceTimeStr + `, 1064 "has_multiple_single_files": false, 1065 "suspended_by": { 1066 "login": "l", 1067 "id": 1, 1068 "avatar_url": "a", 1069 "gravatar_id": "g", 1070 "name": "n", 1071 "company": "c", 1072 "blog": "b", 1073 "location": "l", 1074 "email": "e", 1075 "hireable": true, 1076 "bio": "b", 1077 "twitter_username": "t", 1078 "public_repos": 1, 1079 "followers": 1, 1080 "following": 1, 1081 "created_at": ` + referenceTimeStr + `, 1082 "suspended_at": ` + referenceTimeStr + `, 1083 "url": "u" 1084 }, 1085 "suspended_at": ` + referenceTimeStr + ` 1086 } 1087 }` 1088 1089 testJSONMarshal(t, u, want) 1090 } 1091 1092 func TestInstallationRepositoriesEvent_Marshal(t *testing.T) { 1093 testJSONMarshal(t, &InstallationRepositoriesEvent{}, "{}") 1094 1095 u := &InstallationRepositoriesEvent{ 1096 Action: String("a"), 1097 RepositoriesAdded: []*Repository{ 1098 { 1099 ID: Int64(1), 1100 URL: String("s"), 1101 Name: String("n"), 1102 }, 1103 }, 1104 RepositoriesRemoved: []*Repository{ 1105 { 1106 ID: Int64(1), 1107 URL: String("s"), 1108 Name: String("n"), 1109 }, 1110 }, 1111 RepositorySelection: String("rs"), 1112 Sender: &User{ 1113 Login: String("l"), 1114 ID: Int64(1), 1115 NodeID: String("n"), 1116 URL: String("u"), 1117 ReposURL: String("r"), 1118 EventsURL: String("e"), 1119 AvatarURL: String("a"), 1120 }, 1121 Installation: &Installation{ 1122 ID: Int64(1), 1123 NodeID: String("nid"), 1124 AppID: Int64(1), 1125 AppSlug: String("as"), 1126 TargetID: Int64(1), 1127 Account: &User{ 1128 Login: String("l"), 1129 ID: Int64(1), 1130 URL: String("u"), 1131 AvatarURL: String("a"), 1132 GravatarID: String("g"), 1133 Name: String("n"), 1134 Company: String("c"), 1135 Blog: String("b"), 1136 Location: String("l"), 1137 Email: String("e"), 1138 Hireable: Bool(true), 1139 Bio: String("b"), 1140 TwitterUsername: String("t"), 1141 PublicRepos: Int(1), 1142 Followers: Int(1), 1143 Following: Int(1), 1144 CreatedAt: &Timestamp{referenceTime}, 1145 SuspendedAt: &Timestamp{referenceTime}, 1146 }, 1147 AccessTokensURL: String("atu"), 1148 RepositoriesURL: String("ru"), 1149 HTMLURL: String("hu"), 1150 TargetType: String("tt"), 1151 SingleFileName: String("sfn"), 1152 RepositorySelection: String("rs"), 1153 Events: []string{"e"}, 1154 SingleFilePaths: []string{"s"}, 1155 Permissions: &InstallationPermissions{ 1156 Actions: String("a"), 1157 Administration: String("ad"), 1158 Checks: String("c"), 1159 Contents: String("co"), 1160 ContentReferences: String("cr"), 1161 Deployments: String("d"), 1162 Environments: String("e"), 1163 Issues: String("i"), 1164 Metadata: String("md"), 1165 Members: String("m"), 1166 OrganizationAdministration: String("oa"), 1167 OrganizationHooks: String("oh"), 1168 OrganizationPlan: String("op"), 1169 OrganizationPreReceiveHooks: String("opr"), 1170 OrganizationProjects: String("op"), 1171 OrganizationSecrets: String("os"), 1172 OrganizationSelfHostedRunners: String("osh"), 1173 OrganizationUserBlocking: String("oub"), 1174 Packages: String("pkg"), 1175 Pages: String("pg"), 1176 PullRequests: String("pr"), 1177 RepositoryHooks: String("rh"), 1178 RepositoryProjects: String("rp"), 1179 RepositoryPreReceiveHooks: String("rprh"), 1180 Secrets: String("s"), 1181 SecretScanningAlerts: String("ssa"), 1182 SecurityEvents: String("se"), 1183 SingleFile: String("sf"), 1184 Statuses: String("s"), 1185 TeamDiscussions: String("td"), 1186 VulnerabilityAlerts: String("va"), 1187 Workflows: String("w"), 1188 }, 1189 CreatedAt: &Timestamp{referenceTime}, 1190 UpdatedAt: &Timestamp{referenceTime}, 1191 HasMultipleSingleFiles: Bool(false), 1192 SuspendedBy: &User{ 1193 Login: String("l"), 1194 ID: Int64(1), 1195 URL: String("u"), 1196 AvatarURL: String("a"), 1197 GravatarID: String("g"), 1198 Name: String("n"), 1199 Company: String("c"), 1200 Blog: String("b"), 1201 Location: String("l"), 1202 Email: String("e"), 1203 Hireable: Bool(true), 1204 Bio: String("b"), 1205 TwitterUsername: String("t"), 1206 PublicRepos: Int(1), 1207 Followers: Int(1), 1208 Following: Int(1), 1209 CreatedAt: &Timestamp{referenceTime}, 1210 SuspendedAt: &Timestamp{referenceTime}, 1211 }, 1212 SuspendedAt: &Timestamp{referenceTime}, 1213 }, 1214 } 1215 1216 want := `{ 1217 "action": "a", 1218 "repositories_added": [ 1219 { 1220 "id": 1, 1221 "name": "n", 1222 "url": "s" 1223 } 1224 ], 1225 "repositories_removed": [ 1226 { 1227 "id": 1, 1228 "name": "n", 1229 "url": "s" 1230 } 1231 ], 1232 "repository_selection": "rs", 1233 "sender": { 1234 "login": "l", 1235 "id": 1, 1236 "node_id": "n", 1237 "avatar_url": "a", 1238 "url": "u", 1239 "events_url": "e", 1240 "repos_url": "r" 1241 }, 1242 "installation": { 1243 "id": 1, 1244 "node_id": "nid", 1245 "app_id": 1, 1246 "app_slug": "as", 1247 "target_id": 1, 1248 "account": { 1249 "login": "l", 1250 "id": 1, 1251 "avatar_url": "a", 1252 "gravatar_id": "g", 1253 "name": "n", 1254 "company": "c", 1255 "blog": "b", 1256 "location": "l", 1257 "email": "e", 1258 "hireable": true, 1259 "bio": "b", 1260 "twitter_username": "t", 1261 "public_repos": 1, 1262 "followers": 1, 1263 "following": 1, 1264 "created_at": ` + referenceTimeStr + `, 1265 "suspended_at": ` + referenceTimeStr + `, 1266 "url": "u" 1267 }, 1268 "access_tokens_url": "atu", 1269 "repositories_url": "ru", 1270 "html_url": "hu", 1271 "target_type": "tt", 1272 "single_file_name": "sfn", 1273 "repository_selection": "rs", 1274 "events": [ 1275 "e" 1276 ], 1277 "single_file_paths": [ 1278 "s" 1279 ], 1280 "permissions": { 1281 "actions": "a", 1282 "administration": "ad", 1283 "checks": "c", 1284 "contents": "co", 1285 "content_references": "cr", 1286 "deployments": "d", 1287 "environments": "e", 1288 "issues": "i", 1289 "metadata": "md", 1290 "members": "m", 1291 "organization_administration": "oa", 1292 "organization_hooks": "oh", 1293 "organization_plan": "op", 1294 "organization_pre_receive_hooks": "opr", 1295 "organization_projects": "op", 1296 "organization_secrets": "os", 1297 "organization_self_hosted_runners": "osh", 1298 "organization_user_blocking": "oub", 1299 "packages": "pkg", 1300 "pages": "pg", 1301 "pull_requests": "pr", 1302 "repository_hooks": "rh", 1303 "repository_projects": "rp", 1304 "repository_pre_receive_hooks": "rprh", 1305 "secrets": "s", 1306 "secret_scanning_alerts": "ssa", 1307 "security_events": "se", 1308 "single_file": "sf", 1309 "statuses": "s", 1310 "team_discussions": "td", 1311 "vulnerability_alerts": "va", 1312 "workflows": "w" 1313 }, 1314 "created_at": ` + referenceTimeStr + `, 1315 "updated_at": ` + referenceTimeStr + `, 1316 "has_multiple_single_files": false, 1317 "suspended_by": { 1318 "login": "l", 1319 "id": 1, 1320 "avatar_url": "a", 1321 "gravatar_id": "g", 1322 "name": "n", 1323 "company": "c", 1324 "blog": "b", 1325 "location": "l", 1326 "email": "e", 1327 "hireable": true, 1328 "bio": "b", 1329 "twitter_username": "t", 1330 "public_repos": 1, 1331 "followers": 1, 1332 "following": 1, 1333 "created_at": ` + referenceTimeStr + `, 1334 "suspended_at": ` + referenceTimeStr + `, 1335 "url": "u" 1336 }, 1337 "suspended_at": ` + referenceTimeStr + ` 1338 } 1339 }` 1340 1341 testJSONMarshal(t, u, want) 1342 } 1343 1344 func TestInstallationTargetEvent_Marshal(t *testing.T) { 1345 testJSONMarshal(t, &InstallationTargetEvent{}, "{}") 1346 1347 u := &InstallationTargetEvent{ 1348 Account: &User{ 1349 Login: String("u"), 1350 ID: Int64(1), 1351 NodeID: String("n"), 1352 URL: String("u"), 1353 ReposURL: String("r"), 1354 EventsURL: String("e"), 1355 AvatarURL: String("l"), 1356 }, 1357 Action: String("a"), 1358 Changes: &InstallationChanges{ 1359 Login: &InstallationLoginChange{ 1360 From: String("p"), 1361 }, 1362 Slug: &InstallationSlugChange{ 1363 From: String("j"), 1364 }, 1365 }, 1366 Enterprise: &Enterprise{ 1367 ID: Int(1), 1368 Slug: String("s"), 1369 Name: String("n"), 1370 NodeID: String("nid"), 1371 AvatarURL: String("au"), 1372 Description: String("d"), 1373 WebsiteURL: String("wu"), 1374 HTMLURL: String("hu"), 1375 CreatedAt: &Timestamp{referenceTime}, 1376 UpdatedAt: &Timestamp{referenceTime}, 1377 }, 1378 Installation: &Installation{ 1379 ID: Int64(1), 1380 NodeID: String("nid"), 1381 AppID: Int64(1), 1382 AppSlug: String("as"), 1383 TargetID: Int64(1), 1384 Account: &User{ 1385 Login: String("l"), 1386 ID: Int64(1), 1387 URL: String("u"), 1388 AvatarURL: String("a"), 1389 GravatarID: String("g"), 1390 Name: String("n"), 1391 Company: String("c"), 1392 Blog: String("b"), 1393 Location: String("l"), 1394 Email: String("e"), 1395 Hireable: Bool(true), 1396 Bio: String("b"), 1397 TwitterUsername: String("t"), 1398 PublicRepos: Int(1), 1399 Followers: Int(1), 1400 Following: Int(1), 1401 CreatedAt: &Timestamp{referenceTime}, 1402 SuspendedAt: &Timestamp{referenceTime}, 1403 }, 1404 AccessTokensURL: String("atu"), 1405 RepositoriesURL: String("ru"), 1406 HTMLURL: String("hu"), 1407 TargetType: String("tt"), 1408 SingleFileName: String("sfn"), 1409 RepositorySelection: String("rs"), 1410 Events: []string{"e"}, 1411 SingleFilePaths: []string{"s"}, 1412 Permissions: &InstallationPermissions{ 1413 Actions: String("a"), 1414 Administration: String("ad"), 1415 Checks: String("c"), 1416 Contents: String("co"), 1417 ContentReferences: String("cr"), 1418 Deployments: String("d"), 1419 Environments: String("e"), 1420 Issues: String("i"), 1421 Metadata: String("md"), 1422 Members: String("m"), 1423 OrganizationAdministration: String("oa"), 1424 OrganizationHooks: String("oh"), 1425 OrganizationPlan: String("op"), 1426 OrganizationPreReceiveHooks: String("opr"), 1427 OrganizationProjects: String("op"), 1428 OrganizationSecrets: String("os"), 1429 OrganizationSelfHostedRunners: String("osh"), 1430 OrganizationUserBlocking: String("oub"), 1431 Packages: String("pkg"), 1432 Pages: String("pg"), 1433 PullRequests: String("pr"), 1434 RepositoryHooks: String("rh"), 1435 RepositoryProjects: String("rp"), 1436 RepositoryPreReceiveHooks: String("rprh"), 1437 Secrets: String("s"), 1438 SecretScanningAlerts: String("ssa"), 1439 SecurityEvents: String("se"), 1440 SingleFile: String("sf"), 1441 Statuses: String("s"), 1442 TeamDiscussions: String("td"), 1443 VulnerabilityAlerts: String("va"), 1444 Workflows: String("w"), 1445 }, 1446 CreatedAt: &Timestamp{referenceTime}, 1447 UpdatedAt: &Timestamp{referenceTime}, 1448 HasMultipleSingleFiles: Bool(false), 1449 SuspendedBy: &User{ 1450 Login: String("l"), 1451 ID: Int64(1), 1452 URL: String("u"), 1453 AvatarURL: String("a"), 1454 GravatarID: String("g"), 1455 Name: String("n"), 1456 Company: String("c"), 1457 Blog: String("b"), 1458 Location: String("l"), 1459 Email: String("e"), 1460 Hireable: Bool(true), 1461 Bio: String("b"), 1462 TwitterUsername: String("t"), 1463 PublicRepos: Int(1), 1464 Followers: Int(1), 1465 Following: Int(1), 1466 CreatedAt: &Timestamp{referenceTime}, 1467 SuspendedAt: &Timestamp{referenceTime}, 1468 }, 1469 SuspendedAt: &Timestamp{referenceTime}, 1470 }, 1471 Organization: &Organization{ 1472 BillingEmail: String("be"), 1473 Blog: String("b"), 1474 Company: String("c"), 1475 Email: String("e"), 1476 TwitterUsername: String("tu"), 1477 Location: String("loc"), 1478 Name: String("n"), 1479 Description: String("d"), 1480 IsVerified: Bool(true), 1481 HasOrganizationProjects: Bool(true), 1482 HasRepositoryProjects: Bool(true), 1483 DefaultRepoPermission: String("drp"), 1484 MembersCanCreateRepos: Bool(true), 1485 MembersCanCreateInternalRepos: Bool(true), 1486 MembersCanCreatePrivateRepos: Bool(true), 1487 MembersCanCreatePublicRepos: Bool(false), 1488 MembersAllowedRepositoryCreationType: String("marct"), 1489 MembersCanCreatePages: Bool(true), 1490 MembersCanCreatePublicPages: Bool(false), 1491 MembersCanCreatePrivatePages: Bool(true), 1492 }, 1493 Repository: &Repository{ 1494 ID: Int64(1), 1495 URL: String("s"), 1496 Name: String("n"), 1497 }, 1498 Sender: &User{ 1499 Login: String("l"), 1500 ID: Int64(1), 1501 NodeID: String("n"), 1502 URL: String("u"), 1503 ReposURL: String("r"), 1504 EventsURL: String("e"), 1505 AvatarURL: String("a"), 1506 }, 1507 TargetType: String("running"), 1508 } 1509 1510 want := `{ 1511 "account": { 1512 "login": "u", 1513 "id": 1, 1514 "node_id": "n", 1515 "avatar_url": "l", 1516 "url": "u", 1517 "events_url": "e", 1518 "repos_url": "r" 1519 }, 1520 "action": "a", 1521 "changes": { 1522 "login": { 1523 "from": "p" 1524 }, 1525 "slug": { 1526 "from": "j" 1527 } 1528 }, 1529 "enterprise": { 1530 "id": 1, 1531 "slug": "s", 1532 "name": "n", 1533 "node_id": "nid", 1534 "avatar_url": "au", 1535 "description": "d", 1536 "website_url": "wu", 1537 "html_url": "hu", 1538 "created_at": ` + referenceTimeStr + `, 1539 "updated_at": ` + referenceTimeStr + ` 1540 }, 1541 "installation": { 1542 "id": 1, 1543 "node_id": "nid", 1544 "app_id": 1, 1545 "app_slug": "as", 1546 "target_id": 1, 1547 "account": { 1548 "login": "l", 1549 "id": 1, 1550 "avatar_url": "a", 1551 "gravatar_id": "g", 1552 "name": "n", 1553 "company": "c", 1554 "blog": "b", 1555 "location": "l", 1556 "email": "e", 1557 "hireable": true, 1558 "bio": "b", 1559 "twitter_username": "t", 1560 "public_repos": 1, 1561 "followers": 1, 1562 "following": 1, 1563 "created_at": ` + referenceTimeStr + `, 1564 "suspended_at": ` + referenceTimeStr + `, 1565 "url": "u" 1566 }, 1567 "access_tokens_url": "atu", 1568 "repositories_url": "ru", 1569 "html_url": "hu", 1570 "target_type": "tt", 1571 "single_file_name": "sfn", 1572 "repository_selection": "rs", 1573 "events": [ 1574 "e" 1575 ], 1576 "single_file_paths": [ 1577 "s" 1578 ], 1579 "permissions": { 1580 "actions": "a", 1581 "administration": "ad", 1582 "checks": "c", 1583 "contents": "co", 1584 "content_references": "cr", 1585 "deployments": "d", 1586 "environments": "e", 1587 "issues": "i", 1588 "metadata": "md", 1589 "members": "m", 1590 "organization_administration": "oa", 1591 "organization_hooks": "oh", 1592 "organization_plan": "op", 1593 "organization_pre_receive_hooks": "opr", 1594 "organization_projects": "op", 1595 "organization_secrets": "os", 1596 "organization_self_hosted_runners": "osh", 1597 "organization_user_blocking": "oub", 1598 "packages": "pkg", 1599 "pages": "pg", 1600 "pull_requests": "pr", 1601 "repository_hooks": "rh", 1602 "repository_projects": "rp", 1603 "repository_pre_receive_hooks": "rprh", 1604 "secrets": "s", 1605 "secret_scanning_alerts": "ssa", 1606 "security_events": "se", 1607 "single_file": "sf", 1608 "statuses": "s", 1609 "team_discussions": "td", 1610 "vulnerability_alerts": "va", 1611 "workflows": "w" 1612 }, 1613 "created_at": ` + referenceTimeStr + `, 1614 "updated_at": ` + referenceTimeStr + `, 1615 "has_multiple_single_files": false, 1616 "suspended_by": { 1617 "login": "l", 1618 "id": 1, 1619 "avatar_url": "a", 1620 "gravatar_id": "g", 1621 "name": "n", 1622 "company": "c", 1623 "blog": "b", 1624 "location": "l", 1625 "email": "e", 1626 "hireable": true, 1627 "bio": "b", 1628 "twitter_username": "t", 1629 "public_repos": 1, 1630 "followers": 1, 1631 "following": 1, 1632 "created_at": ` + referenceTimeStr + `, 1633 "suspended_at": ` + referenceTimeStr + `, 1634 "url": "u" 1635 }, 1636 "suspended_at": ` + referenceTimeStr + ` 1637 }, 1638 "organization": { 1639 "name": "n", 1640 "company": "c", 1641 "blog": "b", 1642 "location": "loc", 1643 "email": "e", 1644 "twitter_username": "tu", 1645 "description": "d", 1646 "billing_email": "be", 1647 "is_verified": true, 1648 "has_organization_projects": true, 1649 "has_repository_projects": true, 1650 "default_repository_permission": "drp", 1651 "members_can_create_repositories": true, 1652 "members_can_create_public_repositories": false, 1653 "members_can_create_private_repositories": true, 1654 "members_can_create_internal_repositories": true, 1655 "members_allowed_repository_creation_type": "marct", 1656 "members_can_create_pages": true, 1657 "members_can_create_public_pages": false, 1658 "members_can_create_private_pages": true 1659 }, 1660 "repository": { 1661 "id": 1, 1662 "url": "s", 1663 "name": "n" 1664 }, 1665 "sender": { 1666 "login": "l", 1667 "id": 1, 1668 "node_id": "n", 1669 "avatar_url": "a", 1670 "url": "u", 1671 "events_url": "e", 1672 "repos_url": "r" 1673 }, 1674 "target_type": "running" 1675 }` 1676 1677 testJSONMarshal(t, u, want) 1678 } 1679 1680 func TestEditTitle_Marshal(t *testing.T) { 1681 testJSONMarshal(t, &EditTitle{}, "{}") 1682 1683 u := &EditTitle{ 1684 From: String("EditTitleFrom"), 1685 } 1686 1687 want := `{ 1688 "from": "EditTitleFrom" 1689 }` 1690 1691 testJSONMarshal(t, u, want) 1692 } 1693 1694 func TestEditBody_Marshal(t *testing.T) { 1695 testJSONMarshal(t, &EditBody{}, "{}") 1696 1697 u := &EditBody{ 1698 From: String("EditBodyFrom"), 1699 } 1700 1701 want := `{ 1702 "from": "EditBodyFrom" 1703 }` 1704 1705 testJSONMarshal(t, u, want) 1706 } 1707 1708 func TestEditBase_Marshal(t *testing.T) { 1709 testJSONMarshal(t, &EditBase{}, "{}") 1710 1711 u := &EditBase{ 1712 Ref: &EditRef{ 1713 From: String("EditRefFrom"), 1714 }, 1715 SHA: &EditSHA{ 1716 From: String("EditSHAFrom"), 1717 }, 1718 } 1719 1720 want := `{ 1721 "ref": { 1722 "from": "EditRefFrom" 1723 }, 1724 "sha": { 1725 "from": "EditSHAFrom" 1726 } 1727 }` 1728 1729 testJSONMarshal(t, u, want) 1730 } 1731 1732 func TestEditRef_Marshal(t *testing.T) { 1733 testJSONMarshal(t, &EditRef{}, "{}") 1734 1735 u := &EditRef{ 1736 From: String("EditRefFrom"), 1737 } 1738 1739 want := `{ 1740 "from": "EditRefFrom" 1741 }` 1742 1743 testJSONMarshal(t, u, want) 1744 } 1745 1746 func TestEditSHA_Marshal(t *testing.T) { 1747 testJSONMarshal(t, &EditSHA{}, "{}") 1748 1749 u := &EditSHA{ 1750 From: String("EditSHAFrom"), 1751 } 1752 1753 want := `{ 1754 "from": "EditSHAFrom" 1755 }` 1756 1757 testJSONMarshal(t, u, want) 1758 } 1759 1760 func TestProjectName_Marshal(t *testing.T) { 1761 testJSONMarshal(t, &ProjectName{}, "{}") 1762 1763 u := &ProjectName{ 1764 From: String("ProjectNameFrom"), 1765 } 1766 1767 want := `{ 1768 "from": "ProjectNameFrom" 1769 }` 1770 1771 testJSONMarshal(t, u, want) 1772 } 1773 1774 func TestProjectBody_Marshal(t *testing.T) { 1775 testJSONMarshal(t, &ProjectBody{}, "{}") 1776 1777 u := &ProjectBody{ 1778 From: String("ProjectBodyFrom"), 1779 } 1780 1781 want := `{ 1782 "from": "ProjectBodyFrom" 1783 }` 1784 1785 testJSONMarshal(t, u, want) 1786 } 1787 1788 func TestProjectCardNote_Marshal(t *testing.T) { 1789 testJSONMarshal(t, &ProjectCardNote{}, "{}") 1790 1791 u := &ProjectCardNote{ 1792 From: String("ProjectCardNoteFrom"), 1793 } 1794 1795 want := `{ 1796 "from": "ProjectCardNoteFrom" 1797 }` 1798 1799 testJSONMarshal(t, u, want) 1800 } 1801 1802 func TestProjectColumnName_Marshal(t *testing.T) { 1803 testJSONMarshal(t, &ProjectColumnName{}, "{}") 1804 1805 u := &ProjectColumnName{ 1806 From: String("ProjectColumnNameFrom"), 1807 } 1808 1809 want := `{ 1810 "from": "ProjectColumnNameFrom" 1811 }` 1812 1813 testJSONMarshal(t, u, want) 1814 } 1815 1816 func TestTeamDescription_Marshal(t *testing.T) { 1817 testJSONMarshal(t, &TeamDescription{}, "{}") 1818 1819 u := &TeamDescription{ 1820 From: String("TeamDescriptionFrom"), 1821 } 1822 1823 want := `{ 1824 "from": "TeamDescriptionFrom" 1825 }` 1826 1827 testJSONMarshal(t, u, want) 1828 } 1829 1830 func TestTeamName_Marshal(t *testing.T) { 1831 testJSONMarshal(t, &TeamName{}, "{}") 1832 1833 u := &TeamName{ 1834 From: String("TeamNameFrom"), 1835 } 1836 1837 want := `{ 1838 "from": "TeamNameFrom" 1839 }` 1840 1841 testJSONMarshal(t, u, want) 1842 } 1843 1844 func TestTeamPrivacy_Marshal(t *testing.T) { 1845 testJSONMarshal(t, &TeamPrivacy{}, "{}") 1846 1847 u := &TeamPrivacy{ 1848 From: String("TeamPrivacyFrom"), 1849 } 1850 1851 want := `{ 1852 "from": "TeamPrivacyFrom" 1853 }` 1854 1855 testJSONMarshal(t, u, want) 1856 } 1857 1858 func TestTeamRepository_Marshal(t *testing.T) { 1859 testJSONMarshal(t, &TeamRepository{}, "{}") 1860 1861 u := &TeamRepository{ 1862 Permissions: &TeamPermissions{ 1863 From: &TeamPermissionsFrom{ 1864 Admin: Bool(true), 1865 Pull: Bool(true), 1866 Push: Bool(true), 1867 }, 1868 }, 1869 } 1870 1871 want := `{ 1872 "permissions": { 1873 "from": { 1874 "admin": true, 1875 "pull": true, 1876 "push": true 1877 } 1878 } 1879 }` 1880 1881 testJSONMarshal(t, u, want) 1882 } 1883 1884 func TestTeamPermissions_Marshal(t *testing.T) { 1885 testJSONMarshal(t, &TeamPermissions{}, "{}") 1886 1887 u := &TeamPermissions{ 1888 From: &TeamPermissionsFrom{ 1889 Admin: Bool(true), 1890 Pull: Bool(true), 1891 Push: Bool(true), 1892 }, 1893 } 1894 1895 want := `{ 1896 "from": { 1897 "admin": true, 1898 "pull": true, 1899 "push": true 1900 } 1901 }` 1902 1903 testJSONMarshal(t, u, want) 1904 } 1905 1906 func TestTeamPermissionsFrom_Marshal(t *testing.T) { 1907 testJSONMarshal(t, &TeamPermissionsFrom{}, "{}") 1908 1909 u := &TeamPermissionsFrom{ 1910 Admin: Bool(true), 1911 Pull: Bool(true), 1912 Push: Bool(true), 1913 } 1914 1915 want := `{ 1916 "admin": true, 1917 "pull": true, 1918 "push": true 1919 }` 1920 1921 testJSONMarshal(t, u, want) 1922 } 1923 1924 func TestRepositoryVulnerabilityAlert_Marshal(t *testing.T) { 1925 testJSONMarshal(t, &RepositoryVulnerabilityAlert{}, "{}") 1926 1927 u := &RepositoryVulnerabilityAlert{ 1928 ID: Int64(1), 1929 AffectedRange: String("ar"), 1930 AffectedPackageName: String("apn"), 1931 ExternalReference: String("er"), 1932 ExternalIdentifier: String("ei"), 1933 FixedIn: String("fi"), 1934 Dismisser: &User{ 1935 Login: String("l"), 1936 ID: Int64(1), 1937 NodeID: String("n"), 1938 URL: String("u"), 1939 ReposURL: String("r"), 1940 EventsURL: String("e"), 1941 AvatarURL: String("a"), 1942 }, 1943 DismissReason: String("dr"), 1944 DismissedAt: &Timestamp{referenceTime}, 1945 } 1946 1947 want := `{ 1948 "id": 1, 1949 "affected_range": "ar", 1950 "affected_package_name": "apn", 1951 "external_reference": "er", 1952 "external_identifier": "ei", 1953 "fixed_in": "fi", 1954 "dismisser": { 1955 "login": "l", 1956 "id": 1, 1957 "node_id": "n", 1958 "avatar_url": "a", 1959 "url": "u", 1960 "events_url": "e", 1961 "repos_url": "r" 1962 }, 1963 "dismiss_reason": "dr", 1964 "dismissed_at": ` + referenceTimeStr + ` 1965 }` 1966 1967 testJSONMarshal(t, u, want) 1968 } 1969 1970 func TestPage_Marshal(t *testing.T) { 1971 testJSONMarshal(t, &Page{}, "{}") 1972 1973 u := &Page{ 1974 PageName: String("p"), 1975 Title: String("t"), 1976 Summary: String("s"), 1977 Action: String("a"), 1978 SHA: String("s"), 1979 HTMLURL: String("h"), 1980 } 1981 1982 want := `{ 1983 "page_name": "p", 1984 "title": "t", 1985 "summary": "s", 1986 "action": "a", 1987 "sha": "s", 1988 "html_url": "h" 1989 }` 1990 1991 testJSONMarshal(t, u, want) 1992 } 1993 1994 func TestTeamChange_Marshal(t *testing.T) { 1995 testJSONMarshal(t, &TeamChange{}, "{}") 1996 1997 u := &TeamChange{ 1998 Description: &TeamDescription{ 1999 From: String("DescriptionFrom"), 2000 }, 2001 Name: &TeamName{ 2002 From: String("NameFrom"), 2003 }, 2004 Privacy: &TeamPrivacy{ 2005 From: String("PrivacyFrom"), 2006 }, 2007 Repository: &TeamRepository{ 2008 Permissions: &TeamPermissions{ 2009 From: &TeamPermissionsFrom{ 2010 Admin: Bool(false), 2011 Pull: Bool(false), 2012 Push: Bool(false), 2013 }, 2014 }, 2015 }, 2016 } 2017 2018 want := `{ 2019 "description": { 2020 "from": "DescriptionFrom" 2021 }, 2022 "name": { 2023 "from": "NameFrom" 2024 }, 2025 "privacy": { 2026 "from": "PrivacyFrom" 2027 }, 2028 "repository": { 2029 "permissions": { 2030 "from": { 2031 "admin": false, 2032 "pull": false, 2033 "push": false 2034 } 2035 } 2036 } 2037 }` 2038 2039 testJSONMarshal(t, u, want) 2040 } 2041 2042 func TestIssueCommentEvent_Marshal(t *testing.T) { 2043 testJSONMarshal(t, &IssueCommentEvent{}, "{}") 2044 2045 u := &IssueCommentEvent{ 2046 Action: String("a"), 2047 Issue: &Issue{ID: Int64(1)}, 2048 Comment: &IssueComment{ID: Int64(1)}, 2049 Changes: &EditChange{ 2050 Title: &EditTitle{ 2051 From: String("TitleFrom"), 2052 }, 2053 Body: &EditBody{ 2054 From: String("BodyFrom"), 2055 }, 2056 Base: &EditBase{ 2057 Ref: &EditRef{ 2058 From: String("BaseRefFrom"), 2059 }, 2060 SHA: &EditSHA{ 2061 From: String("BaseSHAFrom"), 2062 }, 2063 }, 2064 }, 2065 Repo: &Repository{ 2066 ID: Int64(1), 2067 URL: String("s"), 2068 Name: String("n"), 2069 }, 2070 Sender: &User{ 2071 Login: String("l"), 2072 ID: Int64(1), 2073 NodeID: String("n"), 2074 URL: String("u"), 2075 ReposURL: String("r"), 2076 EventsURL: String("e"), 2077 AvatarURL: String("a"), 2078 }, 2079 Installation: &Installation{ 2080 ID: Int64(1), 2081 NodeID: String("nid"), 2082 AppID: Int64(1), 2083 AppSlug: String("as"), 2084 TargetID: Int64(1), 2085 Account: &User{ 2086 Login: String("l"), 2087 ID: Int64(1), 2088 URL: String("u"), 2089 AvatarURL: String("a"), 2090 GravatarID: String("g"), 2091 Name: String("n"), 2092 Company: String("c"), 2093 Blog: String("b"), 2094 Location: String("l"), 2095 Email: String("e"), 2096 Hireable: Bool(true), 2097 Bio: String("b"), 2098 TwitterUsername: String("t"), 2099 PublicRepos: Int(1), 2100 Followers: Int(1), 2101 Following: Int(1), 2102 CreatedAt: &Timestamp{referenceTime}, 2103 SuspendedAt: &Timestamp{referenceTime}, 2104 }, 2105 AccessTokensURL: String("atu"), 2106 RepositoriesURL: String("ru"), 2107 HTMLURL: String("hu"), 2108 TargetType: String("tt"), 2109 SingleFileName: String("sfn"), 2110 RepositorySelection: String("rs"), 2111 Events: []string{"e"}, 2112 SingleFilePaths: []string{"s"}, 2113 Permissions: &InstallationPermissions{ 2114 Actions: String("a"), 2115 Administration: String("ad"), 2116 Checks: String("c"), 2117 Contents: String("co"), 2118 ContentReferences: String("cr"), 2119 Deployments: String("d"), 2120 Environments: String("e"), 2121 Issues: String("i"), 2122 Metadata: String("md"), 2123 Members: String("m"), 2124 OrganizationAdministration: String("oa"), 2125 OrganizationHooks: String("oh"), 2126 OrganizationPlan: String("op"), 2127 OrganizationPreReceiveHooks: String("opr"), 2128 OrganizationProjects: String("op"), 2129 OrganizationSecrets: String("os"), 2130 OrganizationSelfHostedRunners: String("osh"), 2131 OrganizationUserBlocking: String("oub"), 2132 Packages: String("pkg"), 2133 Pages: String("pg"), 2134 PullRequests: String("pr"), 2135 RepositoryHooks: String("rh"), 2136 RepositoryProjects: String("rp"), 2137 RepositoryPreReceiveHooks: String("rprh"), 2138 Secrets: String("s"), 2139 SecretScanningAlerts: String("ssa"), 2140 SecurityEvents: String("se"), 2141 SingleFile: String("sf"), 2142 Statuses: String("s"), 2143 TeamDiscussions: String("td"), 2144 VulnerabilityAlerts: String("va"), 2145 Workflows: String("w"), 2146 }, 2147 CreatedAt: &Timestamp{referenceTime}, 2148 UpdatedAt: &Timestamp{referenceTime}, 2149 HasMultipleSingleFiles: Bool(false), 2150 SuspendedBy: &User{ 2151 Login: String("l"), 2152 ID: Int64(1), 2153 URL: String("u"), 2154 AvatarURL: String("a"), 2155 GravatarID: String("g"), 2156 Name: String("n"), 2157 Company: String("c"), 2158 Blog: String("b"), 2159 Location: String("l"), 2160 Email: String("e"), 2161 Hireable: Bool(true), 2162 Bio: String("b"), 2163 TwitterUsername: String("t"), 2164 PublicRepos: Int(1), 2165 Followers: Int(1), 2166 Following: Int(1), 2167 CreatedAt: &Timestamp{referenceTime}, 2168 SuspendedAt: &Timestamp{referenceTime}, 2169 }, 2170 SuspendedAt: &Timestamp{referenceTime}, 2171 }, 2172 Organization: &Organization{ 2173 BillingEmail: String("be"), 2174 Blog: String("b"), 2175 Company: String("c"), 2176 Email: String("e"), 2177 TwitterUsername: String("tu"), 2178 Location: String("loc"), 2179 Name: String("n"), 2180 Description: String("d"), 2181 IsVerified: Bool(true), 2182 HasOrganizationProjects: Bool(true), 2183 HasRepositoryProjects: Bool(true), 2184 DefaultRepoPermission: String("drp"), 2185 MembersCanCreateRepos: Bool(true), 2186 MembersCanCreateInternalRepos: Bool(true), 2187 MembersCanCreatePrivateRepos: Bool(true), 2188 MembersCanCreatePublicRepos: Bool(false), 2189 MembersAllowedRepositoryCreationType: String("marct"), 2190 MembersCanCreatePages: Bool(true), 2191 MembersCanCreatePublicPages: Bool(false), 2192 MembersCanCreatePrivatePages: Bool(true), 2193 }, 2194 } 2195 2196 want := `{ 2197 "action": "a", 2198 "issue": { 2199 "id": 1 2200 }, 2201 "comment": { 2202 "id": 1 2203 }, 2204 "changes": { 2205 "title": { 2206 "from": "TitleFrom" 2207 }, 2208 "body": { 2209 "from": "BodyFrom" 2210 }, 2211 "base": { 2212 "ref": { 2213 "from": "BaseRefFrom" 2214 }, 2215 "sha": { 2216 "from": "BaseSHAFrom" 2217 } 2218 } 2219 }, 2220 "repository": { 2221 "id": 1, 2222 "name": "n", 2223 "url": "s" 2224 }, 2225 "sender": { 2226 "login": "l", 2227 "id": 1, 2228 "node_id": "n", 2229 "avatar_url": "a", 2230 "url": "u", 2231 "events_url": "e", 2232 "repos_url": "r" 2233 }, 2234 "installation": { 2235 "id": 1, 2236 "node_id": "nid", 2237 "app_id": 1, 2238 "app_slug": "as", 2239 "target_id": 1, 2240 "account": { 2241 "login": "l", 2242 "id": 1, 2243 "avatar_url": "a", 2244 "gravatar_id": "g", 2245 "name": "n", 2246 "company": "c", 2247 "blog": "b", 2248 "location": "l", 2249 "email": "e", 2250 "hireable": true, 2251 "bio": "b", 2252 "twitter_username": "t", 2253 "public_repos": 1, 2254 "followers": 1, 2255 "following": 1, 2256 "created_at": ` + referenceTimeStr + `, 2257 "suspended_at": ` + referenceTimeStr + `, 2258 "url": "u" 2259 }, 2260 "access_tokens_url": "atu", 2261 "repositories_url": "ru", 2262 "html_url": "hu", 2263 "target_type": "tt", 2264 "single_file_name": "sfn", 2265 "repository_selection": "rs", 2266 "events": [ 2267 "e" 2268 ], 2269 "single_file_paths": [ 2270 "s" 2271 ], 2272 "permissions": { 2273 "actions": "a", 2274 "administration": "ad", 2275 "checks": "c", 2276 "contents": "co", 2277 "content_references": "cr", 2278 "deployments": "d", 2279 "environments": "e", 2280 "issues": "i", 2281 "metadata": "md", 2282 "members": "m", 2283 "organization_administration": "oa", 2284 "organization_hooks": "oh", 2285 "organization_plan": "op", 2286 "organization_pre_receive_hooks": "opr", 2287 "organization_projects": "op", 2288 "organization_secrets": "os", 2289 "organization_self_hosted_runners": "osh", 2290 "organization_user_blocking": "oub", 2291 "packages": "pkg", 2292 "pages": "pg", 2293 "pull_requests": "pr", 2294 "repository_hooks": "rh", 2295 "repository_projects": "rp", 2296 "repository_pre_receive_hooks": "rprh", 2297 "secrets": "s", 2298 "secret_scanning_alerts": "ssa", 2299 "security_events": "se", 2300 "single_file": "sf", 2301 "statuses": "s", 2302 "team_discussions": "td", 2303 "vulnerability_alerts": "va", 2304 "workflows": "w" 2305 }, 2306 "created_at": ` + referenceTimeStr + `, 2307 "updated_at": ` + referenceTimeStr + `, 2308 "has_multiple_single_files": false, 2309 "suspended_by": { 2310 "login": "l", 2311 "id": 1, 2312 "avatar_url": "a", 2313 "gravatar_id": "g", 2314 "name": "n", 2315 "company": "c", 2316 "blog": "b", 2317 "location": "l", 2318 "email": "e", 2319 "hireable": true, 2320 "bio": "b", 2321 "twitter_username": "t", 2322 "public_repos": 1, 2323 "followers": 1, 2324 "following": 1, 2325 "created_at": ` + referenceTimeStr + `, 2326 "suspended_at": ` + referenceTimeStr + `, 2327 "url": "u" 2328 }, 2329 "suspended_at": ` + referenceTimeStr + ` 2330 }, 2331 "organization": { 2332 "name": "n", 2333 "company": "c", 2334 "blog": "b", 2335 "location": "loc", 2336 "email": "e", 2337 "twitter_username": "tu", 2338 "description": "d", 2339 "billing_email": "be", 2340 "is_verified": true, 2341 "has_organization_projects": true, 2342 "has_repository_projects": true, 2343 "default_repository_permission": "drp", 2344 "members_can_create_repositories": true, 2345 "members_can_create_public_repositories": false, 2346 "members_can_create_private_repositories": true, 2347 "members_can_create_internal_repositories": true, 2348 "members_allowed_repository_creation_type": "marct", 2349 "members_can_create_pages": true, 2350 "members_can_create_public_pages": false, 2351 "members_can_create_private_pages": true 2352 } 2353 }` 2354 2355 testJSONMarshal(t, u, want) 2356 } 2357 2358 func TestIssuesEvent_Marshal(t *testing.T) { 2359 testJSONMarshal(t, &IssuesEvent{}, "{}") 2360 2361 u := &IssuesEvent{ 2362 Action: String("a"), 2363 Issue: &Issue{ID: Int64(1)}, 2364 Assignee: &User{ 2365 Login: String("l"), 2366 ID: Int64(1), 2367 NodeID: String("n"), 2368 URL: String("u"), 2369 ReposURL: String("r"), 2370 EventsURL: String("e"), 2371 AvatarURL: String("a"), 2372 }, 2373 Label: &Label{ID: Int64(1)}, 2374 Changes: &EditChange{ 2375 Title: &EditTitle{ 2376 From: String("TitleFrom"), 2377 }, 2378 Body: &EditBody{ 2379 From: String("BodyFrom"), 2380 }, 2381 Base: &EditBase{ 2382 Ref: &EditRef{ 2383 From: String("BaseRefFrom"), 2384 }, 2385 SHA: &EditSHA{ 2386 From: String("BaseSHAFrom"), 2387 }, 2388 }, 2389 }, 2390 Repo: &Repository{ 2391 ID: Int64(1), 2392 URL: String("s"), 2393 Name: String("n"), 2394 }, 2395 Sender: &User{ 2396 Login: String("l"), 2397 ID: Int64(1), 2398 NodeID: String("n"), 2399 URL: String("u"), 2400 ReposURL: String("r"), 2401 EventsURL: String("e"), 2402 AvatarURL: String("a"), 2403 }, 2404 Installation: &Installation{ 2405 ID: Int64(1), 2406 NodeID: String("nid"), 2407 AppID: Int64(1), 2408 AppSlug: String("as"), 2409 TargetID: Int64(1), 2410 Account: &User{ 2411 Login: String("l"), 2412 ID: Int64(1), 2413 URL: String("u"), 2414 AvatarURL: String("a"), 2415 GravatarID: String("g"), 2416 Name: String("n"), 2417 Company: String("c"), 2418 Blog: String("b"), 2419 Location: String("l"), 2420 Email: String("e"), 2421 Hireable: Bool(true), 2422 Bio: String("b"), 2423 TwitterUsername: String("t"), 2424 PublicRepos: Int(1), 2425 Followers: Int(1), 2426 Following: Int(1), 2427 CreatedAt: &Timestamp{referenceTime}, 2428 SuspendedAt: &Timestamp{referenceTime}, 2429 }, 2430 AccessTokensURL: String("atu"), 2431 RepositoriesURL: String("ru"), 2432 HTMLURL: String("hu"), 2433 TargetType: String("tt"), 2434 SingleFileName: String("sfn"), 2435 RepositorySelection: String("rs"), 2436 Events: []string{"e"}, 2437 SingleFilePaths: []string{"s"}, 2438 Permissions: &InstallationPermissions{ 2439 Actions: String("a"), 2440 Administration: String("ad"), 2441 Checks: String("c"), 2442 Contents: String("co"), 2443 ContentReferences: String("cr"), 2444 Deployments: String("d"), 2445 Environments: String("e"), 2446 Issues: String("i"), 2447 Metadata: String("md"), 2448 Members: String("m"), 2449 OrganizationAdministration: String("oa"), 2450 OrganizationHooks: String("oh"), 2451 OrganizationPlan: String("op"), 2452 OrganizationPreReceiveHooks: String("opr"), 2453 OrganizationProjects: String("op"), 2454 OrganizationSecrets: String("os"), 2455 OrganizationSelfHostedRunners: String("osh"), 2456 OrganizationUserBlocking: String("oub"), 2457 Packages: String("pkg"), 2458 Pages: String("pg"), 2459 PullRequests: String("pr"), 2460 RepositoryHooks: String("rh"), 2461 RepositoryProjects: String("rp"), 2462 RepositoryPreReceiveHooks: String("rprh"), 2463 Secrets: String("s"), 2464 SecretScanningAlerts: String("ssa"), 2465 SecurityEvents: String("se"), 2466 SingleFile: String("sf"), 2467 Statuses: String("s"), 2468 TeamDiscussions: String("td"), 2469 VulnerabilityAlerts: String("va"), 2470 Workflows: String("w"), 2471 }, 2472 CreatedAt: &Timestamp{referenceTime}, 2473 UpdatedAt: &Timestamp{referenceTime}, 2474 HasMultipleSingleFiles: Bool(false), 2475 SuspendedBy: &User{ 2476 Login: String("l"), 2477 ID: Int64(1), 2478 URL: String("u"), 2479 AvatarURL: String("a"), 2480 GravatarID: String("g"), 2481 Name: String("n"), 2482 Company: String("c"), 2483 Blog: String("b"), 2484 Location: String("l"), 2485 Email: String("e"), 2486 Hireable: Bool(true), 2487 Bio: String("b"), 2488 TwitterUsername: String("t"), 2489 PublicRepos: Int(1), 2490 Followers: Int(1), 2491 Following: Int(1), 2492 CreatedAt: &Timestamp{referenceTime}, 2493 SuspendedAt: &Timestamp{referenceTime}, 2494 }, 2495 SuspendedAt: &Timestamp{referenceTime}, 2496 }, 2497 } 2498 2499 want := `{ 2500 "action": "a", 2501 "issue": { 2502 "id": 1 2503 }, 2504 "assignee": { 2505 "login": "l", 2506 "id": 1, 2507 "node_id": "n", 2508 "avatar_url": "a", 2509 "url": "u", 2510 "events_url": "e", 2511 "repos_url": "r" 2512 }, 2513 "label": { 2514 "id": 1 2515 }, 2516 "changes": { 2517 "title": { 2518 "from": "TitleFrom" 2519 }, 2520 "body": { 2521 "from": "BodyFrom" 2522 }, 2523 "base": { 2524 "ref": { 2525 "from": "BaseRefFrom" 2526 }, 2527 "sha": { 2528 "from": "BaseSHAFrom" 2529 } 2530 } 2531 }, 2532 "repository": { 2533 "id": 1, 2534 "name": "n", 2535 "url": "s" 2536 }, 2537 "sender": { 2538 "login": "l", 2539 "id": 1, 2540 "node_id": "n", 2541 "avatar_url": "a", 2542 "url": "u", 2543 "events_url": "e", 2544 "repos_url": "r" 2545 }, 2546 "installation": { 2547 "id": 1, 2548 "node_id": "nid", 2549 "app_id": 1, 2550 "app_slug": "as", 2551 "target_id": 1, 2552 "account": { 2553 "login": "l", 2554 "id": 1, 2555 "avatar_url": "a", 2556 "gravatar_id": "g", 2557 "name": "n", 2558 "company": "c", 2559 "blog": "b", 2560 "location": "l", 2561 "email": "e", 2562 "hireable": true, 2563 "bio": "b", 2564 "twitter_username": "t", 2565 "public_repos": 1, 2566 "followers": 1, 2567 "following": 1, 2568 "created_at": ` + referenceTimeStr + `, 2569 "suspended_at": ` + referenceTimeStr + `, 2570 "url": "u" 2571 }, 2572 "access_tokens_url": "atu", 2573 "repositories_url": "ru", 2574 "html_url": "hu", 2575 "target_type": "tt", 2576 "single_file_name": "sfn", 2577 "repository_selection": "rs", 2578 "events": [ 2579 "e" 2580 ], 2581 "single_file_paths": [ 2582 "s" 2583 ], 2584 "permissions": { 2585 "actions": "a", 2586 "administration": "ad", 2587 "checks": "c", 2588 "contents": "co", 2589 "content_references": "cr", 2590 "deployments": "d", 2591 "environments": "e", 2592 "issues": "i", 2593 "metadata": "md", 2594 "members": "m", 2595 "organization_administration": "oa", 2596 "organization_hooks": "oh", 2597 "organization_plan": "op", 2598 "organization_pre_receive_hooks": "opr", 2599 "organization_projects": "op", 2600 "organization_secrets": "os", 2601 "organization_self_hosted_runners": "osh", 2602 "organization_user_blocking": "oub", 2603 "packages": "pkg", 2604 "pages": "pg", 2605 "pull_requests": "pr", 2606 "repository_hooks": "rh", 2607 "repository_projects": "rp", 2608 "repository_pre_receive_hooks": "rprh", 2609 "secrets": "s", 2610 "secret_scanning_alerts": "ssa", 2611 "security_events": "se", 2612 "single_file": "sf", 2613 "statuses": "s", 2614 "team_discussions": "td", 2615 "vulnerability_alerts": "va", 2616 "workflows": "w" 2617 }, 2618 "created_at": ` + referenceTimeStr + `, 2619 "updated_at": ` + referenceTimeStr + `, 2620 "has_multiple_single_files": false, 2621 "suspended_by": { 2622 "login": "l", 2623 "id": 1, 2624 "avatar_url": "a", 2625 "gravatar_id": "g", 2626 "name": "n", 2627 "company": "c", 2628 "blog": "b", 2629 "location": "l", 2630 "email": "e", 2631 "hireable": true, 2632 "bio": "b", 2633 "twitter_username": "t", 2634 "public_repos": 1, 2635 "followers": 1, 2636 "following": 1, 2637 "created_at": ` + referenceTimeStr + `, 2638 "suspended_at": ` + referenceTimeStr + `, 2639 "url": "u" 2640 }, 2641 "suspended_at": ` + referenceTimeStr + ` 2642 } 2643 }` 2644 2645 testJSONMarshal(t, u, want) 2646 } 2647 2648 func TestLabelEvent_Marshal(t *testing.T) { 2649 testJSONMarshal(t, &LabelEvent{}, "{}") 2650 2651 u := &LabelEvent{ 2652 Action: String("a"), 2653 Label: &Label{ID: Int64(1)}, 2654 Changes: &EditChange{ 2655 Title: &EditTitle{ 2656 From: String("TitleFrom"), 2657 }, 2658 Body: &EditBody{ 2659 From: String("BodyFrom"), 2660 }, 2661 Base: &EditBase{ 2662 Ref: &EditRef{ 2663 From: String("BaseRefFrom"), 2664 }, 2665 SHA: &EditSHA{ 2666 From: String("BaseSHAFrom"), 2667 }, 2668 }, 2669 }, 2670 Repo: &Repository{ 2671 ID: Int64(1), 2672 URL: String("s"), 2673 Name: String("n"), 2674 }, 2675 Org: &Organization{ 2676 BillingEmail: String("be"), 2677 Blog: String("b"), 2678 Company: String("c"), 2679 Email: String("e"), 2680 TwitterUsername: String("tu"), 2681 Location: String("loc"), 2682 Name: String("n"), 2683 Description: String("d"), 2684 IsVerified: Bool(true), 2685 HasOrganizationProjects: Bool(true), 2686 HasRepositoryProjects: Bool(true), 2687 DefaultRepoPermission: String("drp"), 2688 MembersCanCreateRepos: Bool(true), 2689 MembersCanCreateInternalRepos: Bool(true), 2690 MembersCanCreatePrivateRepos: Bool(true), 2691 MembersCanCreatePublicRepos: Bool(false), 2692 MembersAllowedRepositoryCreationType: String("marct"), 2693 MembersCanCreatePages: Bool(true), 2694 MembersCanCreatePublicPages: Bool(false), 2695 MembersCanCreatePrivatePages: Bool(true), 2696 }, 2697 Installation: &Installation{ 2698 ID: Int64(1), 2699 NodeID: String("nid"), 2700 AppID: Int64(1), 2701 AppSlug: String("as"), 2702 TargetID: Int64(1), 2703 Account: &User{ 2704 Login: String("l"), 2705 ID: Int64(1), 2706 URL: String("u"), 2707 AvatarURL: String("a"), 2708 GravatarID: String("g"), 2709 Name: String("n"), 2710 Company: String("c"), 2711 Blog: String("b"), 2712 Location: String("l"), 2713 Email: String("e"), 2714 Hireable: Bool(true), 2715 Bio: String("b"), 2716 TwitterUsername: String("t"), 2717 PublicRepos: Int(1), 2718 Followers: Int(1), 2719 Following: Int(1), 2720 CreatedAt: &Timestamp{referenceTime}, 2721 SuspendedAt: &Timestamp{referenceTime}, 2722 }, 2723 AccessTokensURL: String("atu"), 2724 RepositoriesURL: String("ru"), 2725 HTMLURL: String("hu"), 2726 TargetType: String("tt"), 2727 SingleFileName: String("sfn"), 2728 RepositorySelection: String("rs"), 2729 Events: []string{"e"}, 2730 SingleFilePaths: []string{"s"}, 2731 Permissions: &InstallationPermissions{ 2732 Actions: String("a"), 2733 Administration: String("ad"), 2734 Checks: String("c"), 2735 Contents: String("co"), 2736 ContentReferences: String("cr"), 2737 Deployments: String("d"), 2738 Environments: String("e"), 2739 Issues: String("i"), 2740 Metadata: String("md"), 2741 Members: String("m"), 2742 OrganizationAdministration: String("oa"), 2743 OrganizationHooks: String("oh"), 2744 OrganizationPlan: String("op"), 2745 OrganizationPreReceiveHooks: String("opr"), 2746 OrganizationProjects: String("op"), 2747 OrganizationSecrets: String("os"), 2748 OrganizationSelfHostedRunners: String("osh"), 2749 OrganizationUserBlocking: String("oub"), 2750 Packages: String("pkg"), 2751 Pages: String("pg"), 2752 PullRequests: String("pr"), 2753 RepositoryHooks: String("rh"), 2754 RepositoryProjects: String("rp"), 2755 RepositoryPreReceiveHooks: String("rprh"), 2756 Secrets: String("s"), 2757 SecretScanningAlerts: String("ssa"), 2758 SecurityEvents: String("se"), 2759 SingleFile: String("sf"), 2760 Statuses: String("s"), 2761 TeamDiscussions: String("td"), 2762 VulnerabilityAlerts: String("va"), 2763 Workflows: String("w"), 2764 }, 2765 CreatedAt: &Timestamp{referenceTime}, 2766 UpdatedAt: &Timestamp{referenceTime}, 2767 HasMultipleSingleFiles: Bool(false), 2768 SuspendedBy: &User{ 2769 Login: String("l"), 2770 ID: Int64(1), 2771 URL: String("u"), 2772 AvatarURL: String("a"), 2773 GravatarID: String("g"), 2774 Name: String("n"), 2775 Company: String("c"), 2776 Blog: String("b"), 2777 Location: String("l"), 2778 Email: String("e"), 2779 Hireable: Bool(true), 2780 Bio: String("b"), 2781 TwitterUsername: String("t"), 2782 PublicRepos: Int(1), 2783 Followers: Int(1), 2784 Following: Int(1), 2785 CreatedAt: &Timestamp{referenceTime}, 2786 SuspendedAt: &Timestamp{referenceTime}, 2787 }, 2788 SuspendedAt: &Timestamp{referenceTime}, 2789 }, 2790 } 2791 2792 want := `{ 2793 "action": "a", 2794 "label": { 2795 "id": 1 2796 }, 2797 "changes": { 2798 "title": { 2799 "from": "TitleFrom" 2800 }, 2801 "body": { 2802 "from": "BodyFrom" 2803 }, 2804 "base": { 2805 "ref": { 2806 "from": "BaseRefFrom" 2807 }, 2808 "sha": { 2809 "from": "BaseSHAFrom" 2810 } 2811 } 2812 }, 2813 "repository": { 2814 "id": 1, 2815 "name": "n", 2816 "url": "s" 2817 }, 2818 "organization": { 2819 "name": "n", 2820 "company": "c", 2821 "blog": "b", 2822 "location": "loc", 2823 "email": "e", 2824 "twitter_username": "tu", 2825 "description": "d", 2826 "billing_email": "be", 2827 "is_verified": true, 2828 "has_organization_projects": true, 2829 "has_repository_projects": true, 2830 "default_repository_permission": "drp", 2831 "members_can_create_repositories": true, 2832 "members_can_create_public_repositories": false, 2833 "members_can_create_private_repositories": true, 2834 "members_can_create_internal_repositories": true, 2835 "members_allowed_repository_creation_type": "marct", 2836 "members_can_create_pages": true, 2837 "members_can_create_public_pages": false, 2838 "members_can_create_private_pages": true 2839 }, 2840 "installation": { 2841 "id": 1, 2842 "node_id": "nid", 2843 "app_id": 1, 2844 "app_slug": "as", 2845 "target_id": 1, 2846 "account": { 2847 "login": "l", 2848 "id": 1, 2849 "avatar_url": "a", 2850 "gravatar_id": "g", 2851 "name": "n", 2852 "company": "c", 2853 "blog": "b", 2854 "location": "l", 2855 "email": "e", 2856 "hireable": true, 2857 "bio": "b", 2858 "twitter_username": "t", 2859 "public_repos": 1, 2860 "followers": 1, 2861 "following": 1, 2862 "created_at": ` + referenceTimeStr + `, 2863 "suspended_at": ` + referenceTimeStr + `, 2864 "url": "u" 2865 }, 2866 "access_tokens_url": "atu", 2867 "repositories_url": "ru", 2868 "html_url": "hu", 2869 "target_type": "tt", 2870 "single_file_name": "sfn", 2871 "repository_selection": "rs", 2872 "events": [ 2873 "e" 2874 ], 2875 "single_file_paths": [ 2876 "s" 2877 ], 2878 "permissions": { 2879 "actions": "a", 2880 "administration": "ad", 2881 "checks": "c", 2882 "contents": "co", 2883 "content_references": "cr", 2884 "deployments": "d", 2885 "environments": "e", 2886 "issues": "i", 2887 "metadata": "md", 2888 "members": "m", 2889 "organization_administration": "oa", 2890 "organization_hooks": "oh", 2891 "organization_plan": "op", 2892 "organization_pre_receive_hooks": "opr", 2893 "organization_projects": "op", 2894 "organization_secrets": "os", 2895 "organization_self_hosted_runners": "osh", 2896 "organization_user_blocking": "oub", 2897 "packages": "pkg", 2898 "pages": "pg", 2899 "pull_requests": "pr", 2900 "repository_hooks": "rh", 2901 "repository_projects": "rp", 2902 "repository_pre_receive_hooks": "rprh", 2903 "secrets": "s", 2904 "secret_scanning_alerts": "ssa", 2905 "security_events": "se", 2906 "single_file": "sf", 2907 "statuses": "s", 2908 "team_discussions": "td", 2909 "vulnerability_alerts": "va", 2910 "workflows": "w" 2911 }, 2912 "created_at": ` + referenceTimeStr + `, 2913 "updated_at": ` + referenceTimeStr + `, 2914 "has_multiple_single_files": false, 2915 "suspended_by": { 2916 "login": "l", 2917 "id": 1, 2918 "avatar_url": "a", 2919 "gravatar_id": "g", 2920 "name": "n", 2921 "company": "c", 2922 "blog": "b", 2923 "location": "l", 2924 "email": "e", 2925 "hireable": true, 2926 "bio": "b", 2927 "twitter_username": "t", 2928 "public_repos": 1, 2929 "followers": 1, 2930 "following": 1, 2931 "created_at": ` + referenceTimeStr + `, 2932 "suspended_at": ` + referenceTimeStr + `, 2933 "url": "u" 2934 }, 2935 "suspended_at": ` + referenceTimeStr + ` 2936 } 2937 }` 2938 2939 testJSONMarshal(t, u, want) 2940 } 2941 2942 func TestMilestoneEvent_Marshal(t *testing.T) { 2943 testJSONMarshal(t, &MilestoneEvent{}, "{}") 2944 2945 u := &MilestoneEvent{ 2946 Action: String("a"), 2947 Milestone: &Milestone{ID: Int64(1)}, 2948 Changes: &EditChange{ 2949 Title: &EditTitle{ 2950 From: String("TitleFrom"), 2951 }, 2952 Body: &EditBody{ 2953 From: String("BodyFrom"), 2954 }, 2955 Base: &EditBase{ 2956 Ref: &EditRef{ 2957 From: String("BaseRefFrom"), 2958 }, 2959 SHA: &EditSHA{ 2960 From: String("BaseSHAFrom"), 2961 }, 2962 }, 2963 }, 2964 Repo: &Repository{ 2965 ID: Int64(1), 2966 URL: String("s"), 2967 Name: String("n"), 2968 }, 2969 Sender: &User{ 2970 Login: String("l"), 2971 ID: Int64(1), 2972 NodeID: String("n"), 2973 URL: String("u"), 2974 ReposURL: String("r"), 2975 EventsURL: String("e"), 2976 AvatarURL: String("a"), 2977 }, 2978 Org: &Organization{ 2979 BillingEmail: String("be"), 2980 Blog: String("b"), 2981 Company: String("c"), 2982 Email: String("e"), 2983 TwitterUsername: String("tu"), 2984 Location: String("loc"), 2985 Name: String("n"), 2986 Description: String("d"), 2987 IsVerified: Bool(true), 2988 HasOrganizationProjects: Bool(true), 2989 HasRepositoryProjects: Bool(true), 2990 DefaultRepoPermission: String("drp"), 2991 MembersCanCreateRepos: Bool(true), 2992 MembersCanCreateInternalRepos: Bool(true), 2993 MembersCanCreatePrivateRepos: Bool(true), 2994 MembersCanCreatePublicRepos: Bool(false), 2995 MembersAllowedRepositoryCreationType: String("marct"), 2996 MembersCanCreatePages: Bool(true), 2997 MembersCanCreatePublicPages: Bool(false), 2998 MembersCanCreatePrivatePages: Bool(true), 2999 }, 3000 Installation: &Installation{ 3001 ID: Int64(1), 3002 NodeID: String("nid"), 3003 AppID: Int64(1), 3004 AppSlug: String("as"), 3005 TargetID: Int64(1), 3006 Account: &User{ 3007 Login: String("l"), 3008 ID: Int64(1), 3009 URL: String("u"), 3010 AvatarURL: String("a"), 3011 GravatarID: String("g"), 3012 Name: String("n"), 3013 Company: String("c"), 3014 Blog: String("b"), 3015 Location: String("l"), 3016 Email: String("e"), 3017 Hireable: Bool(true), 3018 Bio: String("b"), 3019 TwitterUsername: String("t"), 3020 PublicRepos: Int(1), 3021 Followers: Int(1), 3022 Following: Int(1), 3023 CreatedAt: &Timestamp{referenceTime}, 3024 SuspendedAt: &Timestamp{referenceTime}, 3025 }, 3026 AccessTokensURL: String("atu"), 3027 RepositoriesURL: String("ru"), 3028 HTMLURL: String("hu"), 3029 TargetType: String("tt"), 3030 SingleFileName: String("sfn"), 3031 RepositorySelection: String("rs"), 3032 Events: []string{"e"}, 3033 SingleFilePaths: []string{"s"}, 3034 Permissions: &InstallationPermissions{ 3035 Actions: String("a"), 3036 Administration: String("ad"), 3037 Checks: String("c"), 3038 Contents: String("co"), 3039 ContentReferences: String("cr"), 3040 Deployments: String("d"), 3041 Environments: String("e"), 3042 Issues: String("i"), 3043 Metadata: String("md"), 3044 Members: String("m"), 3045 OrganizationAdministration: String("oa"), 3046 OrganizationHooks: String("oh"), 3047 OrganizationPlan: String("op"), 3048 OrganizationPreReceiveHooks: String("opr"), 3049 OrganizationProjects: String("op"), 3050 OrganizationSecrets: String("os"), 3051 OrganizationSelfHostedRunners: String("osh"), 3052 OrganizationUserBlocking: String("oub"), 3053 Packages: String("pkg"), 3054 Pages: String("pg"), 3055 PullRequests: String("pr"), 3056 RepositoryHooks: String("rh"), 3057 RepositoryProjects: String("rp"), 3058 RepositoryPreReceiveHooks: String("rprh"), 3059 Secrets: String("s"), 3060 SecretScanningAlerts: String("ssa"), 3061 SecurityEvents: String("se"), 3062 SingleFile: String("sf"), 3063 Statuses: String("s"), 3064 TeamDiscussions: String("td"), 3065 VulnerabilityAlerts: String("va"), 3066 Workflows: String("w"), 3067 }, 3068 CreatedAt: &Timestamp{referenceTime}, 3069 UpdatedAt: &Timestamp{referenceTime}, 3070 HasMultipleSingleFiles: Bool(false), 3071 SuspendedBy: &User{ 3072 Login: String("l"), 3073 ID: Int64(1), 3074 URL: String("u"), 3075 AvatarURL: String("a"), 3076 GravatarID: String("g"), 3077 Name: String("n"), 3078 Company: String("c"), 3079 Blog: String("b"), 3080 Location: String("l"), 3081 Email: String("e"), 3082 Hireable: Bool(true), 3083 Bio: String("b"), 3084 TwitterUsername: String("t"), 3085 PublicRepos: Int(1), 3086 Followers: Int(1), 3087 Following: Int(1), 3088 CreatedAt: &Timestamp{referenceTime}, 3089 SuspendedAt: &Timestamp{referenceTime}, 3090 }, 3091 SuspendedAt: &Timestamp{referenceTime}, 3092 }, 3093 } 3094 3095 want := `{ 3096 "action": "a", 3097 "milestone": { 3098 "id": 1 3099 }, 3100 "changes": { 3101 "title": { 3102 "from": "TitleFrom" 3103 }, 3104 "body": { 3105 "from": "BodyFrom" 3106 }, 3107 "base": { 3108 "ref": { 3109 "from": "BaseRefFrom" 3110 }, 3111 "sha": { 3112 "from": "BaseSHAFrom" 3113 } 3114 } 3115 }, 3116 "repository": { 3117 "id": 1, 3118 "name": "n", 3119 "url": "s" 3120 }, 3121 "sender": { 3122 "login": "l", 3123 "id": 1, 3124 "node_id": "n", 3125 "avatar_url": "a", 3126 "url": "u", 3127 "events_url": "e", 3128 "repos_url": "r" 3129 }, 3130 "organization": { 3131 "name": "n", 3132 "company": "c", 3133 "blog": "b", 3134 "location": "loc", 3135 "email": "e", 3136 "twitter_username": "tu", 3137 "description": "d", 3138 "billing_email": "be", 3139 "is_verified": true, 3140 "has_organization_projects": true, 3141 "has_repository_projects": true, 3142 "default_repository_permission": "drp", 3143 "members_can_create_repositories": true, 3144 "members_can_create_public_repositories": false, 3145 "members_can_create_private_repositories": true, 3146 "members_can_create_internal_repositories": true, 3147 "members_allowed_repository_creation_type": "marct", 3148 "members_can_create_pages": true, 3149 "members_can_create_public_pages": false, 3150 "members_can_create_private_pages": true 3151 }, 3152 "installation": { 3153 "id": 1, 3154 "node_id": "nid", 3155 "app_id": 1, 3156 "app_slug": "as", 3157 "target_id": 1, 3158 "account": { 3159 "login": "l", 3160 "id": 1, 3161 "avatar_url": "a", 3162 "gravatar_id": "g", 3163 "name": "n", 3164 "company": "c", 3165 "blog": "b", 3166 "location": "l", 3167 "email": "e", 3168 "hireable": true, 3169 "bio": "b", 3170 "twitter_username": "t", 3171 "public_repos": 1, 3172 "followers": 1, 3173 "following": 1, 3174 "created_at": ` + referenceTimeStr + `, 3175 "suspended_at": ` + referenceTimeStr + `, 3176 "url": "u" 3177 }, 3178 "access_tokens_url": "atu", 3179 "repositories_url": "ru", 3180 "html_url": "hu", 3181 "target_type": "tt", 3182 "single_file_name": "sfn", 3183 "repository_selection": "rs", 3184 "events": [ 3185 "e" 3186 ], 3187 "single_file_paths": [ 3188 "s" 3189 ], 3190 "permissions": { 3191 "actions": "a", 3192 "administration": "ad", 3193 "checks": "c", 3194 "contents": "co", 3195 "content_references": "cr", 3196 "deployments": "d", 3197 "environments": "e", 3198 "issues": "i", 3199 "metadata": "md", 3200 "members": "m", 3201 "organization_administration": "oa", 3202 "organization_hooks": "oh", 3203 "organization_plan": "op", 3204 "organization_pre_receive_hooks": "opr", 3205 "organization_projects": "op", 3206 "organization_secrets": "os", 3207 "organization_self_hosted_runners": "osh", 3208 "organization_user_blocking": "oub", 3209 "packages": "pkg", 3210 "pages": "pg", 3211 "pull_requests": "pr", 3212 "repository_hooks": "rh", 3213 "repository_projects": "rp", 3214 "repository_pre_receive_hooks": "rprh", 3215 "secrets": "s", 3216 "secret_scanning_alerts": "ssa", 3217 "security_events": "se", 3218 "single_file": "sf", 3219 "statuses": "s", 3220 "team_discussions": "td", 3221 "vulnerability_alerts": "va", 3222 "workflows": "w" 3223 }, 3224 "created_at": ` + referenceTimeStr + `, 3225 "updated_at": ` + referenceTimeStr + `, 3226 "has_multiple_single_files": false, 3227 "suspended_by": { 3228 "login": "l", 3229 "id": 1, 3230 "avatar_url": "a", 3231 "gravatar_id": "g", 3232 "name": "n", 3233 "company": "c", 3234 "blog": "b", 3235 "location": "l", 3236 "email": "e", 3237 "hireable": true, 3238 "bio": "b", 3239 "twitter_username": "t", 3240 "public_repos": 1, 3241 "followers": 1, 3242 "following": 1, 3243 "created_at": ` + referenceTimeStr + `, 3244 "suspended_at": ` + referenceTimeStr + `, 3245 "url": "u" 3246 }, 3247 "suspended_at": ` + referenceTimeStr + ` 3248 } 3249 }` 3250 3251 testJSONMarshal(t, u, want) 3252 } 3253 3254 func TestPublicEvent_Marshal(t *testing.T) { 3255 testJSONMarshal(t, &PublicEvent{}, "{}") 3256 3257 u := &PublicEvent{ 3258 Repo: &Repository{ 3259 ID: Int64(1), 3260 URL: String("s"), 3261 Name: String("n"), 3262 }, 3263 Sender: &User{ 3264 Login: String("l"), 3265 ID: Int64(1), 3266 NodeID: String("n"), 3267 URL: String("u"), 3268 ReposURL: String("r"), 3269 EventsURL: String("e"), 3270 AvatarURL: String("a"), 3271 }, 3272 Installation: &Installation{ 3273 ID: Int64(1), 3274 NodeID: String("nid"), 3275 AppID: Int64(1), 3276 AppSlug: String("as"), 3277 TargetID: Int64(1), 3278 Account: &User{ 3279 Login: String("l"), 3280 ID: Int64(1), 3281 URL: String("u"), 3282 AvatarURL: String("a"), 3283 GravatarID: String("g"), 3284 Name: String("n"), 3285 Company: String("c"), 3286 Blog: String("b"), 3287 Location: String("l"), 3288 Email: String("e"), 3289 Hireable: Bool(true), 3290 Bio: String("b"), 3291 TwitterUsername: String("t"), 3292 PublicRepos: Int(1), 3293 Followers: Int(1), 3294 Following: Int(1), 3295 CreatedAt: &Timestamp{referenceTime}, 3296 SuspendedAt: &Timestamp{referenceTime}, 3297 }, 3298 AccessTokensURL: String("atu"), 3299 RepositoriesURL: String("ru"), 3300 HTMLURL: String("hu"), 3301 TargetType: String("tt"), 3302 SingleFileName: String("sfn"), 3303 RepositorySelection: String("rs"), 3304 Events: []string{"e"}, 3305 SingleFilePaths: []string{"s"}, 3306 Permissions: &InstallationPermissions{ 3307 Actions: String("a"), 3308 Administration: String("ad"), 3309 Checks: String("c"), 3310 Contents: String("co"), 3311 ContentReferences: String("cr"), 3312 Deployments: String("d"), 3313 Environments: String("e"), 3314 Issues: String("i"), 3315 Metadata: String("md"), 3316 Members: String("m"), 3317 OrganizationAdministration: String("oa"), 3318 OrganizationHooks: String("oh"), 3319 OrganizationPlan: String("op"), 3320 OrganizationPreReceiveHooks: String("opr"), 3321 OrganizationProjects: String("op"), 3322 OrganizationSecrets: String("os"), 3323 OrganizationSelfHostedRunners: String("osh"), 3324 OrganizationUserBlocking: String("oub"), 3325 Packages: String("pkg"), 3326 Pages: String("pg"), 3327 PullRequests: String("pr"), 3328 RepositoryHooks: String("rh"), 3329 RepositoryProjects: String("rp"), 3330 RepositoryPreReceiveHooks: String("rprh"), 3331 Secrets: String("s"), 3332 SecretScanningAlerts: String("ssa"), 3333 SecurityEvents: String("se"), 3334 SingleFile: String("sf"), 3335 Statuses: String("s"), 3336 TeamDiscussions: String("td"), 3337 VulnerabilityAlerts: String("va"), 3338 Workflows: String("w"), 3339 }, 3340 CreatedAt: &Timestamp{referenceTime}, 3341 UpdatedAt: &Timestamp{referenceTime}, 3342 HasMultipleSingleFiles: Bool(false), 3343 SuspendedBy: &User{ 3344 Login: String("l"), 3345 ID: Int64(1), 3346 URL: String("u"), 3347 AvatarURL: String("a"), 3348 GravatarID: String("g"), 3349 Name: String("n"), 3350 Company: String("c"), 3351 Blog: String("b"), 3352 Location: String("l"), 3353 Email: String("e"), 3354 Hireable: Bool(true), 3355 Bio: String("b"), 3356 TwitterUsername: String("t"), 3357 PublicRepos: Int(1), 3358 Followers: Int(1), 3359 Following: Int(1), 3360 CreatedAt: &Timestamp{referenceTime}, 3361 SuspendedAt: &Timestamp{referenceTime}, 3362 }, 3363 SuspendedAt: &Timestamp{referenceTime}, 3364 }, 3365 } 3366 3367 want := `{ 3368 "repository": { 3369 "id": 1, 3370 "name": "n", 3371 "url": "s" 3372 }, 3373 "sender": { 3374 "login": "l", 3375 "id": 1, 3376 "node_id": "n", 3377 "avatar_url": "a", 3378 "url": "u", 3379 "events_url": "e", 3380 "repos_url": "r" 3381 }, 3382 "installation": { 3383 "id": 1, 3384 "node_id": "nid", 3385 "app_id": 1, 3386 "app_slug": "as", 3387 "target_id": 1, 3388 "account": { 3389 "login": "l", 3390 "id": 1, 3391 "avatar_url": "a", 3392 "gravatar_id": "g", 3393 "name": "n", 3394 "company": "c", 3395 "blog": "b", 3396 "location": "l", 3397 "email": "e", 3398 "hireable": true, 3399 "bio": "b", 3400 "twitter_username": "t", 3401 "public_repos": 1, 3402 "followers": 1, 3403 "following": 1, 3404 "created_at": ` + referenceTimeStr + `, 3405 "suspended_at": ` + referenceTimeStr + `, 3406 "url": "u" 3407 }, 3408 "access_tokens_url": "atu", 3409 "repositories_url": "ru", 3410 "html_url": "hu", 3411 "target_type": "tt", 3412 "single_file_name": "sfn", 3413 "repository_selection": "rs", 3414 "events": [ 3415 "e" 3416 ], 3417 "single_file_paths": [ 3418 "s" 3419 ], 3420 "permissions": { 3421 "actions": "a", 3422 "administration": "ad", 3423 "checks": "c", 3424 "contents": "co", 3425 "content_references": "cr", 3426 "deployments": "d", 3427 "environments": "e", 3428 "issues": "i", 3429 "metadata": "md", 3430 "members": "m", 3431 "organization_administration": "oa", 3432 "organization_hooks": "oh", 3433 "organization_plan": "op", 3434 "organization_pre_receive_hooks": "opr", 3435 "organization_projects": "op", 3436 "organization_secrets": "os", 3437 "organization_self_hosted_runners": "osh", 3438 "organization_user_blocking": "oub", 3439 "packages": "pkg", 3440 "pages": "pg", 3441 "pull_requests": "pr", 3442 "repository_hooks": "rh", 3443 "repository_projects": "rp", 3444 "repository_pre_receive_hooks": "rprh", 3445 "secrets": "s", 3446 "secret_scanning_alerts": "ssa", 3447 "security_events": "se", 3448 "single_file": "sf", 3449 "statuses": "s", 3450 "team_discussions": "td", 3451 "vulnerability_alerts": "va", 3452 "workflows": "w" 3453 }, 3454 "created_at": ` + referenceTimeStr + `, 3455 "updated_at": ` + referenceTimeStr + `, 3456 "has_multiple_single_files": false, 3457 "suspended_by": { 3458 "login": "l", 3459 "id": 1, 3460 "avatar_url": "a", 3461 "gravatar_id": "g", 3462 "name": "n", 3463 "company": "c", 3464 "blog": "b", 3465 "location": "l", 3466 "email": "e", 3467 "hireable": true, 3468 "bio": "b", 3469 "twitter_username": "t", 3470 "public_repos": 1, 3471 "followers": 1, 3472 "following": 1, 3473 "created_at": ` + referenceTimeStr + `, 3474 "suspended_at": ` + referenceTimeStr + `, 3475 "url": "u" 3476 }, 3477 "suspended_at": ` + referenceTimeStr + ` 3478 } 3479 }` 3480 3481 testJSONMarshal(t, u, want) 3482 } 3483 3484 func TestPullRequestReviewEvent_Marshal(t *testing.T) { 3485 testJSONMarshal(t, &PullRequestReviewEvent{}, "{}") 3486 3487 u := &PullRequestReviewEvent{ 3488 Action: String("a"), 3489 Review: &PullRequestReview{ID: Int64(1)}, 3490 PullRequest: &PullRequest{ID: Int64(1)}, 3491 Repo: &Repository{ 3492 ID: Int64(1), 3493 URL: String("s"), 3494 Name: String("n"), 3495 }, 3496 Sender: &User{ 3497 Login: String("l"), 3498 ID: Int64(1), 3499 NodeID: String("n"), 3500 URL: String("u"), 3501 ReposURL: String("r"), 3502 EventsURL: String("e"), 3503 AvatarURL: String("a"), 3504 }, 3505 Installation: &Installation{ 3506 ID: Int64(1), 3507 NodeID: String("nid"), 3508 AppID: Int64(1), 3509 AppSlug: String("as"), 3510 TargetID: Int64(1), 3511 Account: &User{ 3512 Login: String("l"), 3513 ID: Int64(1), 3514 URL: String("u"), 3515 AvatarURL: String("a"), 3516 GravatarID: String("g"), 3517 Name: String("n"), 3518 Company: String("c"), 3519 Blog: String("b"), 3520 Location: String("l"), 3521 Email: String("e"), 3522 Hireable: Bool(true), 3523 Bio: String("b"), 3524 TwitterUsername: String("t"), 3525 PublicRepos: Int(1), 3526 Followers: Int(1), 3527 Following: Int(1), 3528 CreatedAt: &Timestamp{referenceTime}, 3529 SuspendedAt: &Timestamp{referenceTime}, 3530 }, 3531 AccessTokensURL: String("atu"), 3532 RepositoriesURL: String("ru"), 3533 HTMLURL: String("hu"), 3534 TargetType: String("tt"), 3535 SingleFileName: String("sfn"), 3536 RepositorySelection: String("rs"), 3537 Events: []string{"e"}, 3538 SingleFilePaths: []string{"s"}, 3539 Permissions: &InstallationPermissions{ 3540 Actions: String("a"), 3541 Administration: String("ad"), 3542 Checks: String("c"), 3543 Contents: String("co"), 3544 ContentReferences: String("cr"), 3545 Deployments: String("d"), 3546 Environments: String("e"), 3547 Issues: String("i"), 3548 Metadata: String("md"), 3549 Members: String("m"), 3550 OrganizationAdministration: String("oa"), 3551 OrganizationHooks: String("oh"), 3552 OrganizationPlan: String("op"), 3553 OrganizationPreReceiveHooks: String("opr"), 3554 OrganizationProjects: String("op"), 3555 OrganizationSecrets: String("os"), 3556 OrganizationSelfHostedRunners: String("osh"), 3557 OrganizationUserBlocking: String("oub"), 3558 Packages: String("pkg"), 3559 Pages: String("pg"), 3560 PullRequests: String("pr"), 3561 RepositoryHooks: String("rh"), 3562 RepositoryProjects: String("rp"), 3563 RepositoryPreReceiveHooks: String("rprh"), 3564 Secrets: String("s"), 3565 SecretScanningAlerts: String("ssa"), 3566 SecurityEvents: String("se"), 3567 SingleFile: String("sf"), 3568 Statuses: String("s"), 3569 TeamDiscussions: String("td"), 3570 VulnerabilityAlerts: String("va"), 3571 Workflows: String("w"), 3572 }, 3573 CreatedAt: &Timestamp{referenceTime}, 3574 UpdatedAt: &Timestamp{referenceTime}, 3575 HasMultipleSingleFiles: Bool(false), 3576 SuspendedBy: &User{ 3577 Login: String("l"), 3578 ID: Int64(1), 3579 URL: String("u"), 3580 AvatarURL: String("a"), 3581 GravatarID: String("g"), 3582 Name: String("n"), 3583 Company: String("c"), 3584 Blog: String("b"), 3585 Location: String("l"), 3586 Email: String("e"), 3587 Hireable: Bool(true), 3588 Bio: String("b"), 3589 TwitterUsername: String("t"), 3590 PublicRepos: Int(1), 3591 Followers: Int(1), 3592 Following: Int(1), 3593 CreatedAt: &Timestamp{referenceTime}, 3594 SuspendedAt: &Timestamp{referenceTime}, 3595 }, 3596 SuspendedAt: &Timestamp{referenceTime}, 3597 }, 3598 Organization: &Organization{ 3599 BillingEmail: String("be"), 3600 Blog: String("b"), 3601 Company: String("c"), 3602 Email: String("e"), 3603 TwitterUsername: String("tu"), 3604 Location: String("loc"), 3605 Name: String("n"), 3606 Description: String("d"), 3607 IsVerified: Bool(true), 3608 HasOrganizationProjects: Bool(true), 3609 HasRepositoryProjects: Bool(true), 3610 DefaultRepoPermission: String("drp"), 3611 MembersCanCreateRepos: Bool(true), 3612 MembersCanCreateInternalRepos: Bool(true), 3613 MembersCanCreatePrivateRepos: Bool(true), 3614 MembersCanCreatePublicRepos: Bool(false), 3615 MembersAllowedRepositoryCreationType: String("marct"), 3616 MembersCanCreatePages: Bool(true), 3617 MembersCanCreatePublicPages: Bool(false), 3618 MembersCanCreatePrivatePages: Bool(true), 3619 }, 3620 } 3621 3622 want := `{ 3623 "action": "a", 3624 "review": { 3625 "id": 1 3626 }, 3627 "pull_request": { 3628 "id": 1 3629 }, 3630 "repository": { 3631 "id": 1, 3632 "name": "n", 3633 "url": "s" 3634 }, 3635 "sender": { 3636 "login": "l", 3637 "id": 1, 3638 "node_id": "n", 3639 "avatar_url": "a", 3640 "url": "u", 3641 "events_url": "e", 3642 "repos_url": "r" 3643 }, 3644 "installation": { 3645 "id": 1, 3646 "node_id": "nid", 3647 "app_id": 1, 3648 "app_slug": "as", 3649 "target_id": 1, 3650 "account": { 3651 "login": "l", 3652 "id": 1, 3653 "avatar_url": "a", 3654 "gravatar_id": "g", 3655 "name": "n", 3656 "company": "c", 3657 "blog": "b", 3658 "location": "l", 3659 "email": "e", 3660 "hireable": true, 3661 "bio": "b", 3662 "twitter_username": "t", 3663 "public_repos": 1, 3664 "followers": 1, 3665 "following": 1, 3666 "created_at": ` + referenceTimeStr + `, 3667 "suspended_at": ` + referenceTimeStr + `, 3668 "url": "u" 3669 }, 3670 "access_tokens_url": "atu", 3671 "repositories_url": "ru", 3672 "html_url": "hu", 3673 "target_type": "tt", 3674 "single_file_name": "sfn", 3675 "repository_selection": "rs", 3676 "events": [ 3677 "e" 3678 ], 3679 "single_file_paths": [ 3680 "s" 3681 ], 3682 "permissions": { 3683 "actions": "a", 3684 "administration": "ad", 3685 "checks": "c", 3686 "contents": "co", 3687 "content_references": "cr", 3688 "deployments": "d", 3689 "environments": "e", 3690 "issues": "i", 3691 "metadata": "md", 3692 "members": "m", 3693 "organization_administration": "oa", 3694 "organization_hooks": "oh", 3695 "organization_plan": "op", 3696 "organization_pre_receive_hooks": "opr", 3697 "organization_projects": "op", 3698 "organization_secrets": "os", 3699 "organization_self_hosted_runners": "osh", 3700 "organization_user_blocking": "oub", 3701 "packages": "pkg", 3702 "pages": "pg", 3703 "pull_requests": "pr", 3704 "repository_hooks": "rh", 3705 "repository_projects": "rp", 3706 "repository_pre_receive_hooks": "rprh", 3707 "secrets": "s", 3708 "secret_scanning_alerts": "ssa", 3709 "security_events": "se", 3710 "single_file": "sf", 3711 "statuses": "s", 3712 "team_discussions": "td", 3713 "vulnerability_alerts": "va", 3714 "workflows": "w" 3715 }, 3716 "created_at": ` + referenceTimeStr + `, 3717 "updated_at": ` + referenceTimeStr + `, 3718 "has_multiple_single_files": false, 3719 "suspended_by": { 3720 "login": "l", 3721 "id": 1, 3722 "avatar_url": "a", 3723 "gravatar_id": "g", 3724 "name": "n", 3725 "company": "c", 3726 "blog": "b", 3727 "location": "l", 3728 "email": "e", 3729 "hireable": true, 3730 "bio": "b", 3731 "twitter_username": "t", 3732 "public_repos": 1, 3733 "followers": 1, 3734 "following": 1, 3735 "created_at": ` + referenceTimeStr + `, 3736 "suspended_at": ` + referenceTimeStr + `, 3737 "url": "u" 3738 }, 3739 "suspended_at": ` + referenceTimeStr + ` 3740 }, 3741 "organization": { 3742 "name": "n", 3743 "company": "c", 3744 "blog": "b", 3745 "location": "loc", 3746 "email": "e", 3747 "twitter_username": "tu", 3748 "description": "d", 3749 "billing_email": "be", 3750 "is_verified": true, 3751 "has_organization_projects": true, 3752 "has_repository_projects": true, 3753 "default_repository_permission": "drp", 3754 "members_can_create_repositories": true, 3755 "members_can_create_public_repositories": false, 3756 "members_can_create_private_repositories": true, 3757 "members_can_create_internal_repositories": true, 3758 "members_allowed_repository_creation_type": "marct", 3759 "members_can_create_pages": true, 3760 "members_can_create_public_pages": false, 3761 "members_can_create_private_pages": true 3762 } 3763 }` 3764 3765 testJSONMarshal(t, u, want) 3766 } 3767 3768 func TestPushEvent_Marshal(t *testing.T) { 3769 testJSONMarshal(t, &PushEvent{}, "{}") 3770 3771 u := &PushEvent{ 3772 PushID: Int64(1), 3773 Head: String("h"), 3774 Ref: String("ref"), 3775 Size: Int(1), 3776 Commits: []*HeadCommit{ 3777 {ID: String("id")}, 3778 }, 3779 Before: String("b"), 3780 DistinctSize: Int(1), 3781 After: String("a"), 3782 Created: Bool(true), 3783 Deleted: Bool(true), 3784 Forced: Bool(true), 3785 BaseRef: String("a"), 3786 Compare: String("a"), 3787 Repo: &PushEventRepository{ID: Int64(1)}, 3788 HeadCommit: &HeadCommit{ID: String("id")}, 3789 Pusher: &CommitAuthor{ 3790 Login: String("l"), 3791 Date: &Timestamp{referenceTime}, 3792 Name: String("n"), 3793 Email: String("e"), 3794 }, 3795 Sender: &User{ 3796 Login: String("l"), 3797 ID: Int64(1), 3798 NodeID: String("n"), 3799 URL: String("u"), 3800 ReposURL: String("r"), 3801 EventsURL: String("e"), 3802 AvatarURL: String("a"), 3803 }, 3804 Installation: &Installation{ 3805 ID: Int64(1), 3806 NodeID: String("nid"), 3807 AppID: Int64(1), 3808 AppSlug: String("as"), 3809 TargetID: Int64(1), 3810 Account: &User{ 3811 Login: String("l"), 3812 ID: Int64(1), 3813 URL: String("u"), 3814 AvatarURL: String("a"), 3815 GravatarID: String("g"), 3816 Name: String("n"), 3817 Company: String("c"), 3818 Blog: String("b"), 3819 Location: String("l"), 3820 Email: String("e"), 3821 Hireable: Bool(true), 3822 Bio: String("b"), 3823 TwitterUsername: String("t"), 3824 PublicRepos: Int(1), 3825 Followers: Int(1), 3826 Following: Int(1), 3827 CreatedAt: &Timestamp{referenceTime}, 3828 SuspendedAt: &Timestamp{referenceTime}, 3829 }, 3830 AccessTokensURL: String("atu"), 3831 RepositoriesURL: String("ru"), 3832 HTMLURL: String("hu"), 3833 TargetType: String("tt"), 3834 SingleFileName: String("sfn"), 3835 RepositorySelection: String("rs"), 3836 Events: []string{"e"}, 3837 SingleFilePaths: []string{"s"}, 3838 Permissions: &InstallationPermissions{ 3839 Actions: String("a"), 3840 Administration: String("ad"), 3841 Checks: String("c"), 3842 Contents: String("co"), 3843 ContentReferences: String("cr"), 3844 Deployments: String("d"), 3845 Environments: String("e"), 3846 Issues: String("i"), 3847 Metadata: String("md"), 3848 Members: String("m"), 3849 OrganizationAdministration: String("oa"), 3850 OrganizationHooks: String("oh"), 3851 OrganizationPlan: String("op"), 3852 OrganizationPreReceiveHooks: String("opr"), 3853 OrganizationProjects: String("op"), 3854 OrganizationSecrets: String("os"), 3855 OrganizationSelfHostedRunners: String("osh"), 3856 OrganizationUserBlocking: String("oub"), 3857 Packages: String("pkg"), 3858 Pages: String("pg"), 3859 PullRequests: String("pr"), 3860 RepositoryHooks: String("rh"), 3861 RepositoryProjects: String("rp"), 3862 RepositoryPreReceiveHooks: String("rprh"), 3863 Secrets: String("s"), 3864 SecretScanningAlerts: String("ssa"), 3865 SecurityEvents: String("se"), 3866 SingleFile: String("sf"), 3867 Statuses: String("s"), 3868 TeamDiscussions: String("td"), 3869 VulnerabilityAlerts: String("va"), 3870 Workflows: String("w"), 3871 }, 3872 CreatedAt: &Timestamp{referenceTime}, 3873 UpdatedAt: &Timestamp{referenceTime}, 3874 HasMultipleSingleFiles: Bool(false), 3875 SuspendedBy: &User{ 3876 Login: String("l"), 3877 ID: Int64(1), 3878 URL: String("u"), 3879 AvatarURL: String("a"), 3880 GravatarID: String("g"), 3881 Name: String("n"), 3882 Company: String("c"), 3883 Blog: String("b"), 3884 Location: String("l"), 3885 Email: String("e"), 3886 Hireable: Bool(true), 3887 Bio: String("b"), 3888 TwitterUsername: String("t"), 3889 PublicRepos: Int(1), 3890 Followers: Int(1), 3891 Following: Int(1), 3892 CreatedAt: &Timestamp{referenceTime}, 3893 SuspendedAt: &Timestamp{referenceTime}, 3894 }, 3895 SuspendedAt: &Timestamp{referenceTime}, 3896 }, 3897 Organization: &Organization{ 3898 BillingEmail: String("be"), 3899 Blog: String("b"), 3900 Company: String("c"), 3901 Email: String("e"), 3902 TwitterUsername: String("tu"), 3903 Location: String("loc"), 3904 Name: String("n"), 3905 Description: String("d"), 3906 IsVerified: Bool(true), 3907 HasOrganizationProjects: Bool(true), 3908 HasRepositoryProjects: Bool(true), 3909 DefaultRepoPermission: String("drp"), 3910 MembersCanCreateRepos: Bool(true), 3911 MembersCanCreateInternalRepos: Bool(true), 3912 MembersCanCreatePrivateRepos: Bool(true), 3913 MembersCanCreatePublicRepos: Bool(false), 3914 MembersAllowedRepositoryCreationType: String("marct"), 3915 MembersCanCreatePages: Bool(true), 3916 MembersCanCreatePublicPages: Bool(false), 3917 MembersCanCreatePrivatePages: Bool(true), 3918 }, 3919 } 3920 3921 want := `{ 3922 "push_id": 1, 3923 "head": "h", 3924 "ref": "ref", 3925 "size": 1, 3926 "commits": [ 3927 { 3928 "id": "id" 3929 } 3930 ], 3931 "before": "b", 3932 "distinct_size": 1, 3933 "after": "a", 3934 "created": true, 3935 "deleted": true, 3936 "forced": true, 3937 "base_ref": "a", 3938 "compare": "a", 3939 "repository": { 3940 "id": 1 3941 }, 3942 "head_commit": { 3943 "id": "id" 3944 }, 3945 "pusher": { 3946 "date": ` + referenceTimeStr + `, 3947 "name": "n", 3948 "email": "e", 3949 "username": "l" 3950 }, 3951 "sender": { 3952 "login": "l", 3953 "id": 1, 3954 "node_id": "n", 3955 "avatar_url": "a", 3956 "url": "u", 3957 "events_url": "e", 3958 "repos_url": "r" 3959 }, 3960 "installation": { 3961 "id": 1, 3962 "node_id": "nid", 3963 "app_id": 1, 3964 "app_slug": "as", 3965 "target_id": 1, 3966 "account": { 3967 "login": "l", 3968 "id": 1, 3969 "avatar_url": "a", 3970 "gravatar_id": "g", 3971 "name": "n", 3972 "company": "c", 3973 "blog": "b", 3974 "location": "l", 3975 "email": "e", 3976 "hireable": true, 3977 "bio": "b", 3978 "twitter_username": "t", 3979 "public_repos": 1, 3980 "followers": 1, 3981 "following": 1, 3982 "created_at": ` + referenceTimeStr + `, 3983 "suspended_at": ` + referenceTimeStr + `, 3984 "url": "u" 3985 }, 3986 "access_tokens_url": "atu", 3987 "repositories_url": "ru", 3988 "html_url": "hu", 3989 "target_type": "tt", 3990 "single_file_name": "sfn", 3991 "repository_selection": "rs", 3992 "events": [ 3993 "e" 3994 ], 3995 "single_file_paths": [ 3996 "s" 3997 ], 3998 "permissions": { 3999 "actions": "a", 4000 "administration": "ad", 4001 "checks": "c", 4002 "contents": "co", 4003 "content_references": "cr", 4004 "deployments": "d", 4005 "environments": "e", 4006 "issues": "i", 4007 "metadata": "md", 4008 "members": "m", 4009 "organization_administration": "oa", 4010 "organization_hooks": "oh", 4011 "organization_plan": "op", 4012 "organization_pre_receive_hooks": "opr", 4013 "organization_projects": "op", 4014 "organization_secrets": "os", 4015 "organization_self_hosted_runners": "osh", 4016 "organization_user_blocking": "oub", 4017 "packages": "pkg", 4018 "pages": "pg", 4019 "pull_requests": "pr", 4020 "repository_hooks": "rh", 4021 "repository_projects": "rp", 4022 "repository_pre_receive_hooks": "rprh", 4023 "secrets": "s", 4024 "secret_scanning_alerts": "ssa", 4025 "security_events": "se", 4026 "single_file": "sf", 4027 "statuses": "s", 4028 "team_discussions": "td", 4029 "vulnerability_alerts": "va", 4030 "workflows": "w" 4031 }, 4032 "created_at": ` + referenceTimeStr + `, 4033 "updated_at": ` + referenceTimeStr + `, 4034 "has_multiple_single_files": false, 4035 "suspended_by": { 4036 "login": "l", 4037 "id": 1, 4038 "avatar_url": "a", 4039 "gravatar_id": "g", 4040 "name": "n", 4041 "company": "c", 4042 "blog": "b", 4043 "location": "l", 4044 "email": "e", 4045 "hireable": true, 4046 "bio": "b", 4047 "twitter_username": "t", 4048 "public_repos": 1, 4049 "followers": 1, 4050 "following": 1, 4051 "created_at": ` + referenceTimeStr + `, 4052 "suspended_at": ` + referenceTimeStr + `, 4053 "url": "u" 4054 }, 4055 "suspended_at": ` + referenceTimeStr + ` 4056 }, 4057 "organization": { 4058 "name": "n", 4059 "company": "c", 4060 "blog": "b", 4061 "location": "loc", 4062 "email": "e", 4063 "twitter_username": "tu", 4064 "description": "d", 4065 "billing_email": "be", 4066 "is_verified": true, 4067 "has_organization_projects": true, 4068 "has_repository_projects": true, 4069 "default_repository_permission": "drp", 4070 "members_can_create_repositories": true, 4071 "members_can_create_public_repositories": false, 4072 "members_can_create_private_repositories": true, 4073 "members_can_create_internal_repositories": true, 4074 "members_allowed_repository_creation_type": "marct", 4075 "members_can_create_pages": true, 4076 "members_can_create_public_pages": false, 4077 "members_can_create_private_pages": true 4078 } 4079 }` 4080 4081 testJSONMarshal(t, u, want) 4082 } 4083 4084 func TestStatusEvent_Marshal(t *testing.T) { 4085 testJSONMarshal(t, &StatusEvent{}, "{}") 4086 4087 u := &StatusEvent{ 4088 SHA: String("sha"), 4089 State: String("s"), 4090 Description: String("d"), 4091 TargetURL: String("turl"), 4092 Branches: []*Branch{ 4093 { 4094 Name: String("n"), 4095 Commit: &RepositoryCommit{NodeID: String("nid")}, 4096 Protected: Bool(false), 4097 }, 4098 }, 4099 ID: Int64(1), 4100 Name: String("n"), 4101 Context: String("c"), 4102 Commit: &RepositoryCommit{NodeID: String("nid")}, 4103 CreatedAt: &Timestamp{referenceTime}, 4104 UpdatedAt: &Timestamp{referenceTime}, 4105 Sender: &User{ 4106 Login: String("l"), 4107 ID: Int64(1), 4108 NodeID: String("n"), 4109 URL: String("u"), 4110 ReposURL: String("r"), 4111 EventsURL: String("e"), 4112 AvatarURL: String("a"), 4113 }, 4114 Installation: &Installation{ 4115 ID: Int64(1), 4116 NodeID: String("nid"), 4117 AppID: Int64(1), 4118 AppSlug: String("as"), 4119 TargetID: Int64(1), 4120 Account: &User{ 4121 Login: String("l"), 4122 ID: Int64(1), 4123 URL: String("u"), 4124 AvatarURL: String("a"), 4125 GravatarID: String("g"), 4126 Name: String("n"), 4127 Company: String("c"), 4128 Blog: String("b"), 4129 Location: String("l"), 4130 Email: String("e"), 4131 Hireable: Bool(true), 4132 Bio: String("b"), 4133 TwitterUsername: String("t"), 4134 PublicRepos: Int(1), 4135 Followers: Int(1), 4136 Following: Int(1), 4137 CreatedAt: &Timestamp{referenceTime}, 4138 SuspendedAt: &Timestamp{referenceTime}, 4139 }, 4140 AccessTokensURL: String("atu"), 4141 RepositoriesURL: String("ru"), 4142 HTMLURL: String("hu"), 4143 TargetType: String("tt"), 4144 SingleFileName: String("sfn"), 4145 RepositorySelection: String("rs"), 4146 Events: []string{"e"}, 4147 SingleFilePaths: []string{"s"}, 4148 Permissions: &InstallationPermissions{ 4149 Actions: String("a"), 4150 Administration: String("ad"), 4151 Checks: String("c"), 4152 Contents: String("co"), 4153 ContentReferences: String("cr"), 4154 Deployments: String("d"), 4155 Environments: String("e"), 4156 Issues: String("i"), 4157 Metadata: String("md"), 4158 Members: String("m"), 4159 OrganizationAdministration: String("oa"), 4160 OrganizationHooks: String("oh"), 4161 OrganizationPlan: String("op"), 4162 OrganizationPreReceiveHooks: String("opr"), 4163 OrganizationProjects: String("op"), 4164 OrganizationSecrets: String("os"), 4165 OrganizationSelfHostedRunners: String("osh"), 4166 OrganizationUserBlocking: String("oub"), 4167 Packages: String("pkg"), 4168 Pages: String("pg"), 4169 PullRequests: String("pr"), 4170 RepositoryHooks: String("rh"), 4171 RepositoryProjects: String("rp"), 4172 RepositoryPreReceiveHooks: String("rprh"), 4173 Secrets: String("s"), 4174 SecretScanningAlerts: String("ssa"), 4175 SecurityEvents: String("se"), 4176 SingleFile: String("sf"), 4177 Statuses: String("s"), 4178 TeamDiscussions: String("td"), 4179 VulnerabilityAlerts: String("va"), 4180 Workflows: String("w"), 4181 }, 4182 CreatedAt: &Timestamp{referenceTime}, 4183 UpdatedAt: &Timestamp{referenceTime}, 4184 HasMultipleSingleFiles: Bool(false), 4185 SuspendedBy: &User{ 4186 Login: String("l"), 4187 ID: Int64(1), 4188 URL: String("u"), 4189 AvatarURL: String("a"), 4190 GravatarID: String("g"), 4191 Name: String("n"), 4192 Company: String("c"), 4193 Blog: String("b"), 4194 Location: String("l"), 4195 Email: String("e"), 4196 Hireable: Bool(true), 4197 Bio: String("b"), 4198 TwitterUsername: String("t"), 4199 PublicRepos: Int(1), 4200 Followers: Int(1), 4201 Following: Int(1), 4202 CreatedAt: &Timestamp{referenceTime}, 4203 SuspendedAt: &Timestamp{referenceTime}, 4204 }, 4205 SuspendedAt: &Timestamp{referenceTime}, 4206 }, 4207 } 4208 4209 want := `{ 4210 "sha": "sha", 4211 "state": "s", 4212 "description": "d", 4213 "target_url": "turl", 4214 "branches": [ 4215 { 4216 "name": "n", 4217 "commit": { 4218 "node_id": "nid" 4219 }, 4220 "protected": false 4221 } 4222 ], 4223 "id": 1, 4224 "name": "n", 4225 "context": "c", 4226 "commit": { 4227 "node_id": "nid" 4228 }, 4229 "created_at": ` + referenceTimeStr + `, 4230 "updated_at": ` + referenceTimeStr + `, 4231 "sender": { 4232 "login": "l", 4233 "id": 1, 4234 "node_id": "n", 4235 "avatar_url": "a", 4236 "url": "u", 4237 "events_url": "e", 4238 "repos_url": "r" 4239 }, 4240 "installation": { 4241 "id": 1, 4242 "node_id": "nid", 4243 "app_id": 1, 4244 "app_slug": "as", 4245 "target_id": 1, 4246 "account": { 4247 "login": "l", 4248 "id": 1, 4249 "avatar_url": "a", 4250 "gravatar_id": "g", 4251 "name": "n", 4252 "company": "c", 4253 "blog": "b", 4254 "location": "l", 4255 "email": "e", 4256 "hireable": true, 4257 "bio": "b", 4258 "twitter_username": "t", 4259 "public_repos": 1, 4260 "followers": 1, 4261 "following": 1, 4262 "created_at": ` + referenceTimeStr + `, 4263 "suspended_at": ` + referenceTimeStr + `, 4264 "url": "u" 4265 }, 4266 "access_tokens_url": "atu", 4267 "repositories_url": "ru", 4268 "html_url": "hu", 4269 "target_type": "tt", 4270 "single_file_name": "sfn", 4271 "repository_selection": "rs", 4272 "events": [ 4273 "e" 4274 ], 4275 "single_file_paths": [ 4276 "s" 4277 ], 4278 "permissions": { 4279 "actions": "a", 4280 "administration": "ad", 4281 "checks": "c", 4282 "contents": "co", 4283 "content_references": "cr", 4284 "deployments": "d", 4285 "environments": "e", 4286 "issues": "i", 4287 "metadata": "md", 4288 "members": "m", 4289 "organization_administration": "oa", 4290 "organization_hooks": "oh", 4291 "organization_plan": "op", 4292 "organization_pre_receive_hooks": "opr", 4293 "organization_projects": "op", 4294 "organization_secrets": "os", 4295 "organization_self_hosted_runners": "osh", 4296 "organization_user_blocking": "oub", 4297 "packages": "pkg", 4298 "pages": "pg", 4299 "pull_requests": "pr", 4300 "repository_hooks": "rh", 4301 "repository_projects": "rp", 4302 "repository_pre_receive_hooks": "rprh", 4303 "secrets": "s", 4304 "secret_scanning_alerts": "ssa", 4305 "security_events": "se", 4306 "single_file": "sf", 4307 "statuses": "s", 4308 "team_discussions": "td", 4309 "vulnerability_alerts": "va", 4310 "workflows": "w" 4311 }, 4312 "created_at": ` + referenceTimeStr + `, 4313 "updated_at": ` + referenceTimeStr + `, 4314 "has_multiple_single_files": false, 4315 "suspended_by": { 4316 "login": "l", 4317 "id": 1, 4318 "avatar_url": "a", 4319 "gravatar_id": "g", 4320 "name": "n", 4321 "company": "c", 4322 "blog": "b", 4323 "location": "l", 4324 "email": "e", 4325 "hireable": true, 4326 "bio": "b", 4327 "twitter_username": "t", 4328 "public_repos": 1, 4329 "followers": 1, 4330 "following": 1, 4331 "created_at": ` + referenceTimeStr + `, 4332 "suspended_at": ` + referenceTimeStr + `, 4333 "url": "u" 4334 }, 4335 "suspended_at": ` + referenceTimeStr + ` 4336 } 4337 }` 4338 4339 testJSONMarshal(t, u, want) 4340 } 4341 4342 func TestMarketplacePurchaseEvent_Marshal(t *testing.T) { 4343 testJSONMarshal(t, &MarketplacePurchaseEvent{}, "{}") 4344 4345 u := &MarketplacePurchaseEvent{ 4346 Action: String("a"), 4347 EffectiveDate: &Timestamp{referenceTime}, 4348 MarketplacePurchase: &MarketplacePurchase{ 4349 BillingCycle: String("bc"), 4350 NextBillingDate: &Timestamp{referenceTime}, 4351 UnitCount: Int(1), 4352 Plan: &MarketplacePlan{ 4353 URL: String("u"), 4354 AccountsURL: String("au"), 4355 ID: Int64(1), 4356 Number: Int(1), 4357 Name: String("n"), 4358 Description: String("d"), 4359 MonthlyPriceInCents: Int(1), 4360 YearlyPriceInCents: Int(1), 4361 PriceModel: String("pm"), 4362 UnitName: String("un"), 4363 Bullets: &[]string{"b"}, 4364 State: String("s"), 4365 HasFreeTrial: Bool(false), 4366 }, 4367 OnFreeTrial: Bool(false), 4368 FreeTrialEndsOn: &Timestamp{referenceTime}, 4369 UpdatedAt: &Timestamp{referenceTime}, 4370 }, 4371 PreviousMarketplacePurchase: &MarketplacePurchase{ 4372 BillingCycle: String("bc"), 4373 NextBillingDate: &Timestamp{referenceTime}, 4374 UnitCount: Int(1), 4375 Plan: &MarketplacePlan{ 4376 URL: String("u"), 4377 AccountsURL: String("au"), 4378 ID: Int64(1), 4379 Number: Int(1), 4380 Name: String("n"), 4381 Description: String("d"), 4382 MonthlyPriceInCents: Int(1), 4383 YearlyPriceInCents: Int(1), 4384 PriceModel: String("pm"), 4385 UnitName: String("un"), 4386 Bullets: &[]string{"b"}, 4387 State: String("s"), 4388 HasFreeTrial: Bool(false), 4389 }, 4390 OnFreeTrial: Bool(false), 4391 FreeTrialEndsOn: &Timestamp{referenceTime}, 4392 UpdatedAt: &Timestamp{referenceTime}, 4393 }, 4394 Sender: &User{ 4395 Login: String("l"), 4396 ID: Int64(1), 4397 NodeID: String("n"), 4398 URL: String("u"), 4399 ReposURL: String("r"), 4400 EventsURL: String("e"), 4401 AvatarURL: String("a"), 4402 }, 4403 Installation: &Installation{ 4404 ID: Int64(1), 4405 NodeID: String("nid"), 4406 AppID: Int64(1), 4407 AppSlug: String("as"), 4408 TargetID: Int64(1), 4409 Account: &User{ 4410 Login: String("l"), 4411 ID: Int64(1), 4412 URL: String("u"), 4413 AvatarURL: String("a"), 4414 GravatarID: String("g"), 4415 Name: String("n"), 4416 Company: String("c"), 4417 Blog: String("b"), 4418 Location: String("l"), 4419 Email: String("e"), 4420 Hireable: Bool(true), 4421 Bio: String("b"), 4422 TwitterUsername: String("t"), 4423 PublicRepos: Int(1), 4424 Followers: Int(1), 4425 Following: Int(1), 4426 CreatedAt: &Timestamp{referenceTime}, 4427 SuspendedAt: &Timestamp{referenceTime}, 4428 }, 4429 AccessTokensURL: String("atu"), 4430 RepositoriesURL: String("ru"), 4431 HTMLURL: String("hu"), 4432 TargetType: String("tt"), 4433 SingleFileName: String("sfn"), 4434 RepositorySelection: String("rs"), 4435 Events: []string{"e"}, 4436 SingleFilePaths: []string{"s"}, 4437 Permissions: &InstallationPermissions{ 4438 Actions: String("a"), 4439 Administration: String("ad"), 4440 Checks: String("c"), 4441 Contents: String("co"), 4442 ContentReferences: String("cr"), 4443 Deployments: String("d"), 4444 Environments: String("e"), 4445 Issues: String("i"), 4446 Metadata: String("md"), 4447 Members: String("m"), 4448 OrganizationAdministration: String("oa"), 4449 OrganizationHooks: String("oh"), 4450 OrganizationPlan: String("op"), 4451 OrganizationPreReceiveHooks: String("opr"), 4452 OrganizationProjects: String("op"), 4453 OrganizationSecrets: String("os"), 4454 OrganizationSelfHostedRunners: String("osh"), 4455 OrganizationUserBlocking: String("oub"), 4456 Packages: String("pkg"), 4457 Pages: String("pg"), 4458 PullRequests: String("pr"), 4459 RepositoryHooks: String("rh"), 4460 RepositoryProjects: String("rp"), 4461 RepositoryPreReceiveHooks: String("rprh"), 4462 Secrets: String("s"), 4463 SecretScanningAlerts: String("ssa"), 4464 SecurityEvents: String("se"), 4465 SingleFile: String("sf"), 4466 Statuses: String("s"), 4467 TeamDiscussions: String("td"), 4468 VulnerabilityAlerts: String("va"), 4469 Workflows: String("w"), 4470 }, 4471 CreatedAt: &Timestamp{referenceTime}, 4472 UpdatedAt: &Timestamp{referenceTime}, 4473 HasMultipleSingleFiles: Bool(false), 4474 SuspendedBy: &User{ 4475 Login: String("l"), 4476 ID: Int64(1), 4477 URL: String("u"), 4478 AvatarURL: String("a"), 4479 GravatarID: String("g"), 4480 Name: String("n"), 4481 Company: String("c"), 4482 Blog: String("b"), 4483 Location: String("l"), 4484 Email: String("e"), 4485 Hireable: Bool(true), 4486 Bio: String("b"), 4487 TwitterUsername: String("t"), 4488 PublicRepos: Int(1), 4489 Followers: Int(1), 4490 Following: Int(1), 4491 CreatedAt: &Timestamp{referenceTime}, 4492 SuspendedAt: &Timestamp{referenceTime}, 4493 }, 4494 SuspendedAt: &Timestamp{referenceTime}, 4495 }, 4496 } 4497 4498 want := `{ 4499 "action": "a", 4500 "effective_date": ` + referenceTimeStr + `, 4501 "marketplace_purchase": { 4502 "billing_cycle": "bc", 4503 "next_billing_date": ` + referenceTimeStr + `, 4504 "unit_count": 1, 4505 "plan": { 4506 "url": "u", 4507 "accounts_url": "au", 4508 "id": 1, 4509 "number": 1, 4510 "name": "n", 4511 "description": "d", 4512 "monthly_price_in_cents": 1, 4513 "yearly_price_in_cents": 1, 4514 "price_model": "pm", 4515 "unit_name": "un", 4516 "bullets": [ 4517 "b" 4518 ], 4519 "state": "s", 4520 "has_free_trial": false 4521 }, 4522 "on_free_trial": false, 4523 "free_trial_ends_on": ` + referenceTimeStr + `, 4524 "updated_at": ` + referenceTimeStr + ` 4525 }, 4526 "previous_marketplace_purchase": { 4527 "billing_cycle": "bc", 4528 "next_billing_date": ` + referenceTimeStr + `, 4529 "unit_count": 1, 4530 "plan": { 4531 "url": "u", 4532 "accounts_url": "au", 4533 "id": 1, 4534 "number": 1, 4535 "name": "n", 4536 "description": "d", 4537 "monthly_price_in_cents": 1, 4538 "yearly_price_in_cents": 1, 4539 "price_model": "pm", 4540 "unit_name": "un", 4541 "bullets": [ 4542 "b" 4543 ], 4544 "state": "s", 4545 "has_free_trial": false 4546 }, 4547 "on_free_trial": false, 4548 "free_trial_ends_on": ` + referenceTimeStr + `, 4549 "updated_at": ` + referenceTimeStr + ` 4550 }, 4551 "sender": { 4552 "login": "l", 4553 "id": 1, 4554 "node_id": "n", 4555 "avatar_url": "a", 4556 "url": "u", 4557 "events_url": "e", 4558 "repos_url": "r" 4559 }, 4560 "installation": { 4561 "id": 1, 4562 "node_id": "nid", 4563 "app_id": 1, 4564 "app_slug": "as", 4565 "target_id": 1, 4566 "account": { 4567 "login": "l", 4568 "id": 1, 4569 "avatar_url": "a", 4570 "gravatar_id": "g", 4571 "name": "n", 4572 "company": "c", 4573 "blog": "b", 4574 "location": "l", 4575 "email": "e", 4576 "hireable": true, 4577 "bio": "b", 4578 "twitter_username": "t", 4579 "public_repos": 1, 4580 "followers": 1, 4581 "following": 1, 4582 "created_at": ` + referenceTimeStr + `, 4583 "suspended_at": ` + referenceTimeStr + `, 4584 "url": "u" 4585 }, 4586 "access_tokens_url": "atu", 4587 "repositories_url": "ru", 4588 "html_url": "hu", 4589 "target_type": "tt", 4590 "single_file_name": "sfn", 4591 "repository_selection": "rs", 4592 "events": [ 4593 "e" 4594 ], 4595 "single_file_paths": [ 4596 "s" 4597 ], 4598 "permissions": { 4599 "actions": "a", 4600 "administration": "ad", 4601 "checks": "c", 4602 "contents": "co", 4603 "content_references": "cr", 4604 "deployments": "d", 4605 "environments": "e", 4606 "issues": "i", 4607 "metadata": "md", 4608 "members": "m", 4609 "organization_administration": "oa", 4610 "organization_hooks": "oh", 4611 "organization_plan": "op", 4612 "organization_pre_receive_hooks": "opr", 4613 "organization_projects": "op", 4614 "organization_secrets": "os", 4615 "organization_self_hosted_runners": "osh", 4616 "organization_user_blocking": "oub", 4617 "packages": "pkg", 4618 "pages": "pg", 4619 "pull_requests": "pr", 4620 "repository_hooks": "rh", 4621 "repository_projects": "rp", 4622 "repository_pre_receive_hooks": "rprh", 4623 "secrets": "s", 4624 "secret_scanning_alerts": "ssa", 4625 "security_events": "se", 4626 "single_file": "sf", 4627 "statuses": "s", 4628 "team_discussions": "td", 4629 "vulnerability_alerts": "va", 4630 "workflows": "w" 4631 }, 4632 "created_at": ` + referenceTimeStr + `, 4633 "updated_at": ` + referenceTimeStr + `, 4634 "has_multiple_single_files": false, 4635 "suspended_by": { 4636 "login": "l", 4637 "id": 1, 4638 "avatar_url": "a", 4639 "gravatar_id": "g", 4640 "name": "n", 4641 "company": "c", 4642 "blog": "b", 4643 "location": "l", 4644 "email": "e", 4645 "hireable": true, 4646 "bio": "b", 4647 "twitter_username": "t", 4648 "public_repos": 1, 4649 "followers": 1, 4650 "following": 1, 4651 "created_at": ` + referenceTimeStr + `, 4652 "suspended_at": ` + referenceTimeStr + `, 4653 "url": "u" 4654 }, 4655 "suspended_at": ` + referenceTimeStr + ` 4656 } 4657 }` 4658 4659 testJSONMarshal(t, u, want) 4660 } 4661 4662 func TestOrganizationEvent_Marshal(t *testing.T) { 4663 testJSONMarshal(t, &OrganizationEvent{}, "{}") 4664 4665 u := &OrganizationEvent{ 4666 Action: String("a"), 4667 Invitation: &Invitation{ID: Int64(1)}, 4668 Membership: &Membership{ 4669 URL: String("url"), 4670 State: String("s"), 4671 Role: String("r"), 4672 OrganizationURL: String("ou"), 4673 Organization: &Organization{ 4674 BillingEmail: String("be"), 4675 Blog: String("b"), 4676 Company: String("c"), 4677 Email: String("e"), 4678 TwitterUsername: String("tu"), 4679 Location: String("loc"), 4680 Name: String("n"), 4681 Description: String("d"), 4682 IsVerified: Bool(true), 4683 HasOrganizationProjects: Bool(true), 4684 HasRepositoryProjects: Bool(true), 4685 DefaultRepoPermission: String("drp"), 4686 MembersCanCreateRepos: Bool(true), 4687 MembersCanCreateInternalRepos: Bool(true), 4688 MembersCanCreatePrivateRepos: Bool(true), 4689 MembersCanCreatePublicRepos: Bool(false), 4690 MembersAllowedRepositoryCreationType: String("marct"), 4691 MembersCanCreatePages: Bool(true), 4692 MembersCanCreatePublicPages: Bool(false), 4693 MembersCanCreatePrivatePages: Bool(true), 4694 }, 4695 User: &User{ 4696 Login: String("l"), 4697 ID: Int64(1), 4698 NodeID: String("n"), 4699 URL: String("u"), 4700 ReposURL: String("r"), 4701 EventsURL: String("e"), 4702 AvatarURL: String("a"), 4703 }, 4704 }, 4705 Organization: &Organization{ 4706 BillingEmail: String("be"), 4707 Blog: String("b"), 4708 Company: String("c"), 4709 Email: String("e"), 4710 TwitterUsername: String("tu"), 4711 Location: String("loc"), 4712 Name: String("n"), 4713 Description: String("d"), 4714 IsVerified: Bool(true), 4715 HasOrganizationProjects: Bool(true), 4716 HasRepositoryProjects: Bool(true), 4717 DefaultRepoPermission: String("drp"), 4718 MembersCanCreateRepos: Bool(true), 4719 MembersCanCreateInternalRepos: Bool(true), 4720 MembersCanCreatePrivateRepos: Bool(true), 4721 MembersCanCreatePublicRepos: Bool(false), 4722 MembersAllowedRepositoryCreationType: String("marct"), 4723 MembersCanCreatePages: Bool(true), 4724 MembersCanCreatePublicPages: Bool(false), 4725 MembersCanCreatePrivatePages: Bool(true), 4726 }, 4727 Sender: &User{ 4728 Login: String("l"), 4729 ID: Int64(1), 4730 NodeID: String("n"), 4731 URL: String("u"), 4732 ReposURL: String("r"), 4733 EventsURL: String("e"), 4734 AvatarURL: String("a"), 4735 }, 4736 Installation: &Installation{ 4737 ID: Int64(1), 4738 NodeID: String("nid"), 4739 AppID: Int64(1), 4740 AppSlug: String("as"), 4741 TargetID: Int64(1), 4742 Account: &User{ 4743 Login: String("l"), 4744 ID: Int64(1), 4745 URL: String("u"), 4746 AvatarURL: String("a"), 4747 GravatarID: String("g"), 4748 Name: String("n"), 4749 Company: String("c"), 4750 Blog: String("b"), 4751 Location: String("l"), 4752 Email: String("e"), 4753 Hireable: Bool(true), 4754 Bio: String("b"), 4755 TwitterUsername: String("t"), 4756 PublicRepos: Int(1), 4757 Followers: Int(1), 4758 Following: Int(1), 4759 CreatedAt: &Timestamp{referenceTime}, 4760 SuspendedAt: &Timestamp{referenceTime}, 4761 }, 4762 AccessTokensURL: String("atu"), 4763 RepositoriesURL: String("ru"), 4764 HTMLURL: String("hu"), 4765 TargetType: String("tt"), 4766 SingleFileName: String("sfn"), 4767 RepositorySelection: String("rs"), 4768 Events: []string{"e"}, 4769 SingleFilePaths: []string{"s"}, 4770 Permissions: &InstallationPermissions{ 4771 Actions: String("a"), 4772 Administration: String("ad"), 4773 Checks: String("c"), 4774 Contents: String("co"), 4775 ContentReferences: String("cr"), 4776 Deployments: String("d"), 4777 Environments: String("e"), 4778 Issues: String("i"), 4779 Metadata: String("md"), 4780 Members: String("m"), 4781 OrganizationAdministration: String("oa"), 4782 OrganizationHooks: String("oh"), 4783 OrganizationPlan: String("op"), 4784 OrganizationPreReceiveHooks: String("opr"), 4785 OrganizationProjects: String("op"), 4786 OrganizationSecrets: String("os"), 4787 OrganizationSelfHostedRunners: String("osh"), 4788 OrganizationUserBlocking: String("oub"), 4789 Packages: String("pkg"), 4790 Pages: String("pg"), 4791 PullRequests: String("pr"), 4792 RepositoryHooks: String("rh"), 4793 RepositoryProjects: String("rp"), 4794 RepositoryPreReceiveHooks: String("rprh"), 4795 Secrets: String("s"), 4796 SecretScanningAlerts: String("ssa"), 4797 SecurityEvents: String("se"), 4798 SingleFile: String("sf"), 4799 Statuses: String("s"), 4800 TeamDiscussions: String("td"), 4801 VulnerabilityAlerts: String("va"), 4802 Workflows: String("w"), 4803 }, 4804 CreatedAt: &Timestamp{referenceTime}, 4805 UpdatedAt: &Timestamp{referenceTime}, 4806 HasMultipleSingleFiles: Bool(false), 4807 SuspendedBy: &User{ 4808 Login: String("l"), 4809 ID: Int64(1), 4810 URL: String("u"), 4811 AvatarURL: String("a"), 4812 GravatarID: String("g"), 4813 Name: String("n"), 4814 Company: String("c"), 4815 Blog: String("b"), 4816 Location: String("l"), 4817 Email: String("e"), 4818 Hireable: Bool(true), 4819 Bio: String("b"), 4820 TwitterUsername: String("t"), 4821 PublicRepos: Int(1), 4822 Followers: Int(1), 4823 Following: Int(1), 4824 CreatedAt: &Timestamp{referenceTime}, 4825 SuspendedAt: &Timestamp{referenceTime}, 4826 }, 4827 SuspendedAt: &Timestamp{referenceTime}, 4828 }, 4829 } 4830 4831 want := `{ 4832 "action": "a", 4833 "invitation": { 4834 "id": 1 4835 }, 4836 "membership": { 4837 "url": "url", 4838 "state": "s", 4839 "role": "r", 4840 "organization_url": "ou", 4841 "organization": { 4842 "name": "n", 4843 "company": "c", 4844 "blog": "b", 4845 "location": "loc", 4846 "email": "e", 4847 "twitter_username": "tu", 4848 "description": "d", 4849 "billing_email": "be", 4850 "is_verified": true, 4851 "has_organization_projects": true, 4852 "has_repository_projects": true, 4853 "default_repository_permission": "drp", 4854 "members_can_create_repositories": true, 4855 "members_can_create_public_repositories": false, 4856 "members_can_create_private_repositories": true, 4857 "members_can_create_internal_repositories": true, 4858 "members_allowed_repository_creation_type": "marct", 4859 "members_can_create_pages": true, 4860 "members_can_create_public_pages": false, 4861 "members_can_create_private_pages": true 4862 }, 4863 "user": { 4864 "login": "l", 4865 "id": 1, 4866 "node_id": "n", 4867 "avatar_url": "a", 4868 "url": "u", 4869 "events_url": "e", 4870 "repos_url": "r" 4871 } 4872 }, 4873 "organization": { 4874 "name": "n", 4875 "company": "c", 4876 "blog": "b", 4877 "location": "loc", 4878 "email": "e", 4879 "twitter_username": "tu", 4880 "description": "d", 4881 "billing_email": "be", 4882 "is_verified": true, 4883 "has_organization_projects": true, 4884 "has_repository_projects": true, 4885 "default_repository_permission": "drp", 4886 "members_can_create_repositories": true, 4887 "members_can_create_public_repositories": false, 4888 "members_can_create_private_repositories": true, 4889 "members_can_create_internal_repositories": true, 4890 "members_allowed_repository_creation_type": "marct", 4891 "members_can_create_pages": true, 4892 "members_can_create_public_pages": false, 4893 "members_can_create_private_pages": true 4894 }, 4895 "sender": { 4896 "login": "l", 4897 "id": 1, 4898 "node_id": "n", 4899 "avatar_url": "a", 4900 "url": "u", 4901 "events_url": "e", 4902 "repos_url": "r" 4903 }, 4904 "installation": { 4905 "id": 1, 4906 "node_id": "nid", 4907 "app_id": 1, 4908 "app_slug": "as", 4909 "target_id": 1, 4910 "account": { 4911 "login": "l", 4912 "id": 1, 4913 "avatar_url": "a", 4914 "gravatar_id": "g", 4915 "name": "n", 4916 "company": "c", 4917 "blog": "b", 4918 "location": "l", 4919 "email": "e", 4920 "hireable": true, 4921 "bio": "b", 4922 "twitter_username": "t", 4923 "public_repos": 1, 4924 "followers": 1, 4925 "following": 1, 4926 "created_at": ` + referenceTimeStr + `, 4927 "suspended_at": ` + referenceTimeStr + `, 4928 "url": "u" 4929 }, 4930 "access_tokens_url": "atu", 4931 "repositories_url": "ru", 4932 "html_url": "hu", 4933 "target_type": "tt", 4934 "single_file_name": "sfn", 4935 "repository_selection": "rs", 4936 "events": [ 4937 "e" 4938 ], 4939 "single_file_paths": [ 4940 "s" 4941 ], 4942 "permissions": { 4943 "actions": "a", 4944 "administration": "ad", 4945 "checks": "c", 4946 "contents": "co", 4947 "content_references": "cr", 4948 "deployments": "d", 4949 "environments": "e", 4950 "issues": "i", 4951 "metadata": "md", 4952 "members": "m", 4953 "organization_administration": "oa", 4954 "organization_hooks": "oh", 4955 "organization_plan": "op", 4956 "organization_pre_receive_hooks": "opr", 4957 "organization_projects": "op", 4958 "organization_secrets": "os", 4959 "organization_self_hosted_runners": "osh", 4960 "organization_user_blocking": "oub", 4961 "packages": "pkg", 4962 "pages": "pg", 4963 "pull_requests": "pr", 4964 "repository_hooks": "rh", 4965 "repository_projects": "rp", 4966 "repository_pre_receive_hooks": "rprh", 4967 "secrets": "s", 4968 "secret_scanning_alerts": "ssa", 4969 "security_events": "se", 4970 "single_file": "sf", 4971 "statuses": "s", 4972 "team_discussions": "td", 4973 "vulnerability_alerts": "va", 4974 "workflows": "w" 4975 }, 4976 "created_at": ` + referenceTimeStr + `, 4977 "updated_at": ` + referenceTimeStr + `, 4978 "has_multiple_single_files": false, 4979 "suspended_by": { 4980 "login": "l", 4981 "id": 1, 4982 "avatar_url": "a", 4983 "gravatar_id": "g", 4984 "name": "n", 4985 "company": "c", 4986 "blog": "b", 4987 "location": "l", 4988 "email": "e", 4989 "hireable": true, 4990 "bio": "b", 4991 "twitter_username": "t", 4992 "public_repos": 1, 4993 "followers": 1, 4994 "following": 1, 4995 "created_at": ` + referenceTimeStr + `, 4996 "suspended_at": ` + referenceTimeStr + `, 4997 "url": "u" 4998 }, 4999 "suspended_at": ` + referenceTimeStr + ` 5000 } 5001 }` 5002 5003 testJSONMarshal(t, u, want) 5004 } 5005 5006 func TestPageBuildEvent_Marshal(t *testing.T) { 5007 testJSONMarshal(t, &PageBuildEvent{}, "{}") 5008 5009 u := &PageBuildEvent{ 5010 Build: &PagesBuild{URL: String("url")}, 5011 ID: Int64(1), 5012 Repo: &Repository{ 5013 ID: Int64(1), 5014 URL: String("s"), 5015 Name: String("n"), 5016 }, 5017 Sender: &User{ 5018 Login: String("l"), 5019 ID: Int64(1), 5020 NodeID: String("n"), 5021 URL: String("u"), 5022 ReposURL: String("r"), 5023 EventsURL: String("e"), 5024 AvatarURL: String("a"), 5025 }, 5026 Installation: &Installation{ 5027 ID: Int64(1), 5028 NodeID: String("nid"), 5029 AppID: Int64(1), 5030 AppSlug: String("as"), 5031 TargetID: Int64(1), 5032 Account: &User{ 5033 Login: String("l"), 5034 ID: Int64(1), 5035 URL: String("u"), 5036 AvatarURL: String("a"), 5037 GravatarID: String("g"), 5038 Name: String("n"), 5039 Company: String("c"), 5040 Blog: String("b"), 5041 Location: String("l"), 5042 Email: String("e"), 5043 Hireable: Bool(true), 5044 Bio: String("b"), 5045 TwitterUsername: String("t"), 5046 PublicRepos: Int(1), 5047 Followers: Int(1), 5048 Following: Int(1), 5049 CreatedAt: &Timestamp{referenceTime}, 5050 SuspendedAt: &Timestamp{referenceTime}, 5051 }, 5052 AccessTokensURL: String("atu"), 5053 RepositoriesURL: String("ru"), 5054 HTMLURL: String("hu"), 5055 TargetType: String("tt"), 5056 SingleFileName: String("sfn"), 5057 RepositorySelection: String("rs"), 5058 Events: []string{"e"}, 5059 SingleFilePaths: []string{"s"}, 5060 Permissions: &InstallationPermissions{ 5061 Actions: String("a"), 5062 Administration: String("ad"), 5063 Checks: String("c"), 5064 Contents: String("co"), 5065 ContentReferences: String("cr"), 5066 Deployments: String("d"), 5067 Environments: String("e"), 5068 Issues: String("i"), 5069 Metadata: String("md"), 5070 Members: String("m"), 5071 OrganizationAdministration: String("oa"), 5072 OrganizationHooks: String("oh"), 5073 OrganizationPlan: String("op"), 5074 OrganizationPreReceiveHooks: String("opr"), 5075 OrganizationProjects: String("op"), 5076 OrganizationSecrets: String("os"), 5077 OrganizationSelfHostedRunners: String("osh"), 5078 OrganizationUserBlocking: String("oub"), 5079 Packages: String("pkg"), 5080 Pages: String("pg"), 5081 PullRequests: String("pr"), 5082 RepositoryHooks: String("rh"), 5083 RepositoryProjects: String("rp"), 5084 RepositoryPreReceiveHooks: String("rprh"), 5085 Secrets: String("s"), 5086 SecretScanningAlerts: String("ssa"), 5087 SecurityEvents: String("se"), 5088 SingleFile: String("sf"), 5089 Statuses: String("s"), 5090 TeamDiscussions: String("td"), 5091 VulnerabilityAlerts: String("va"), 5092 Workflows: String("w"), 5093 }, 5094 CreatedAt: &Timestamp{referenceTime}, 5095 UpdatedAt: &Timestamp{referenceTime}, 5096 HasMultipleSingleFiles: Bool(false), 5097 SuspendedBy: &User{ 5098 Login: String("l"), 5099 ID: Int64(1), 5100 URL: String("u"), 5101 AvatarURL: String("a"), 5102 GravatarID: String("g"), 5103 Name: String("n"), 5104 Company: String("c"), 5105 Blog: String("b"), 5106 Location: String("l"), 5107 Email: String("e"), 5108 Hireable: Bool(true), 5109 Bio: String("b"), 5110 TwitterUsername: String("t"), 5111 PublicRepos: Int(1), 5112 Followers: Int(1), 5113 Following: Int(1), 5114 CreatedAt: &Timestamp{referenceTime}, 5115 SuspendedAt: &Timestamp{referenceTime}, 5116 }, 5117 SuspendedAt: &Timestamp{referenceTime}, 5118 }, 5119 } 5120 5121 want := `{ 5122 "build": { 5123 "url": "url" 5124 }, 5125 "id": 1, 5126 "repository": { 5127 "id": 1, 5128 "name": "n", 5129 "url": "s" 5130 }, 5131 "sender": { 5132 "login": "l", 5133 "id": 1, 5134 "node_id": "n", 5135 "avatar_url": "a", 5136 "url": "u", 5137 "events_url": "e", 5138 "repos_url": "r" 5139 }, 5140 "installation": { 5141 "id": 1, 5142 "node_id": "nid", 5143 "app_id": 1, 5144 "app_slug": "as", 5145 "target_id": 1, 5146 "account": { 5147 "login": "l", 5148 "id": 1, 5149 "avatar_url": "a", 5150 "gravatar_id": "g", 5151 "name": "n", 5152 "company": "c", 5153 "blog": "b", 5154 "location": "l", 5155 "email": "e", 5156 "hireable": true, 5157 "bio": "b", 5158 "twitter_username": "t", 5159 "public_repos": 1, 5160 "followers": 1, 5161 "following": 1, 5162 "created_at": ` + referenceTimeStr + `, 5163 "suspended_at": ` + referenceTimeStr + `, 5164 "url": "u" 5165 }, 5166 "access_tokens_url": "atu", 5167 "repositories_url": "ru", 5168 "html_url": "hu", 5169 "target_type": "tt", 5170 "single_file_name": "sfn", 5171 "repository_selection": "rs", 5172 "events": [ 5173 "e" 5174 ], 5175 "single_file_paths": [ 5176 "s" 5177 ], 5178 "permissions": { 5179 "actions": "a", 5180 "administration": "ad", 5181 "checks": "c", 5182 "contents": "co", 5183 "content_references": "cr", 5184 "deployments": "d", 5185 "environments": "e", 5186 "issues": "i", 5187 "metadata": "md", 5188 "members": "m", 5189 "organization_administration": "oa", 5190 "organization_hooks": "oh", 5191 "organization_plan": "op", 5192 "organization_pre_receive_hooks": "opr", 5193 "organization_projects": "op", 5194 "organization_secrets": "os", 5195 "organization_self_hosted_runners": "osh", 5196 "organization_user_blocking": "oub", 5197 "packages": "pkg", 5198 "pages": "pg", 5199 "pull_requests": "pr", 5200 "repository_hooks": "rh", 5201 "repository_projects": "rp", 5202 "repository_pre_receive_hooks": "rprh", 5203 "secrets": "s", 5204 "secret_scanning_alerts": "ssa", 5205 "security_events": "se", 5206 "single_file": "sf", 5207 "statuses": "s", 5208 "team_discussions": "td", 5209 "vulnerability_alerts": "va", 5210 "workflows": "w" 5211 }, 5212 "created_at": ` + referenceTimeStr + `, 5213 "updated_at": ` + referenceTimeStr + `, 5214 "has_multiple_single_files": false, 5215 "suspended_by": { 5216 "login": "l", 5217 "id": 1, 5218 "avatar_url": "a", 5219 "gravatar_id": "g", 5220 "name": "n", 5221 "company": "c", 5222 "blog": "b", 5223 "location": "l", 5224 "email": "e", 5225 "hireable": true, 5226 "bio": "b", 5227 "twitter_username": "t", 5228 "public_repos": 1, 5229 "followers": 1, 5230 "following": 1, 5231 "created_at": ` + referenceTimeStr + `, 5232 "suspended_at": ` + referenceTimeStr + `, 5233 "url": "u" 5234 }, 5235 "suspended_at": ` + referenceTimeStr + ` 5236 } 5237 }` 5238 5239 testJSONMarshal(t, u, want) 5240 } 5241 5242 func TestCommitCommentEvent_Marshal(t *testing.T) { 5243 testJSONMarshal(t, &CommitCommentEvent{}, "{}") 5244 5245 u := &CommitCommentEvent{ 5246 Comment: &RepositoryComment{ 5247 HTMLURL: String("hurl"), 5248 URL: String("url"), 5249 ID: Int64(1), 5250 NodeID: String("nid"), 5251 CommitID: String("cid"), 5252 User: &User{ 5253 Login: String("l"), 5254 ID: Int64(1), 5255 NodeID: String("n"), 5256 URL: String("u"), 5257 ReposURL: String("r"), 5258 EventsURL: String("e"), 5259 AvatarURL: String("a"), 5260 }, 5261 Reactions: &Reactions{ 5262 TotalCount: Int(1), 5263 PlusOne: Int(1), 5264 MinusOne: Int(1), 5265 Laugh: Int(1), 5266 Confused: Int(1), 5267 Heart: Int(1), 5268 Hooray: Int(1), 5269 Rocket: Int(1), 5270 Eyes: Int(1), 5271 URL: String("url"), 5272 }, 5273 CreatedAt: &Timestamp{referenceTime}, 5274 UpdatedAt: &Timestamp{referenceTime}, 5275 Body: String("b"), 5276 Path: String("path"), 5277 Position: Int(1), 5278 }, 5279 Action: String("a"), 5280 Repo: &Repository{ 5281 ID: Int64(1), 5282 URL: String("s"), 5283 Name: String("n"), 5284 }, 5285 Sender: &User{ 5286 Login: String("l"), 5287 ID: Int64(1), 5288 NodeID: String("n"), 5289 URL: String("u"), 5290 ReposURL: String("r"), 5291 EventsURL: String("e"), 5292 AvatarURL: String("a"), 5293 }, 5294 Installation: &Installation{ 5295 ID: Int64(1), 5296 NodeID: String("nid"), 5297 AppID: Int64(1), 5298 AppSlug: String("as"), 5299 TargetID: Int64(1), 5300 Account: &User{ 5301 Login: String("l"), 5302 ID: Int64(1), 5303 URL: String("u"), 5304 AvatarURL: String("a"), 5305 GravatarID: String("g"), 5306 Name: String("n"), 5307 Company: String("c"), 5308 Blog: String("b"), 5309 Location: String("l"), 5310 Email: String("e"), 5311 Hireable: Bool(true), 5312 Bio: String("b"), 5313 TwitterUsername: String("t"), 5314 PublicRepos: Int(1), 5315 Followers: Int(1), 5316 Following: Int(1), 5317 CreatedAt: &Timestamp{referenceTime}, 5318 SuspendedAt: &Timestamp{referenceTime}, 5319 }, 5320 AccessTokensURL: String("atu"), 5321 RepositoriesURL: String("ru"), 5322 HTMLURL: String("hu"), 5323 TargetType: String("tt"), 5324 SingleFileName: String("sfn"), 5325 RepositorySelection: String("rs"), 5326 Events: []string{"e"}, 5327 SingleFilePaths: []string{"s"}, 5328 Permissions: &InstallationPermissions{ 5329 Actions: String("a"), 5330 Administration: String("ad"), 5331 Checks: String("c"), 5332 Contents: String("co"), 5333 ContentReferences: String("cr"), 5334 Deployments: String("d"), 5335 Environments: String("e"), 5336 Issues: String("i"), 5337 Metadata: String("md"), 5338 Members: String("m"), 5339 OrganizationAdministration: String("oa"), 5340 OrganizationHooks: String("oh"), 5341 OrganizationPlan: String("op"), 5342 OrganizationPreReceiveHooks: String("opr"), 5343 OrganizationProjects: String("op"), 5344 OrganizationSecrets: String("os"), 5345 OrganizationSelfHostedRunners: String("osh"), 5346 OrganizationUserBlocking: String("oub"), 5347 Packages: String("pkg"), 5348 Pages: String("pg"), 5349 PullRequests: String("pr"), 5350 RepositoryHooks: String("rh"), 5351 RepositoryProjects: String("rp"), 5352 RepositoryPreReceiveHooks: String("rprh"), 5353 Secrets: String("s"), 5354 SecretScanningAlerts: String("ssa"), 5355 SecurityEvents: String("se"), 5356 SingleFile: String("sf"), 5357 Statuses: String("s"), 5358 TeamDiscussions: String("td"), 5359 VulnerabilityAlerts: String("va"), 5360 Workflows: String("w"), 5361 }, 5362 CreatedAt: &Timestamp{referenceTime}, 5363 UpdatedAt: &Timestamp{referenceTime}, 5364 HasMultipleSingleFiles: Bool(false), 5365 SuspendedBy: &User{ 5366 Login: String("l"), 5367 ID: Int64(1), 5368 URL: String("u"), 5369 AvatarURL: String("a"), 5370 GravatarID: String("g"), 5371 Name: String("n"), 5372 Company: String("c"), 5373 Blog: String("b"), 5374 Location: String("l"), 5375 Email: String("e"), 5376 Hireable: Bool(true), 5377 Bio: String("b"), 5378 TwitterUsername: String("t"), 5379 PublicRepos: Int(1), 5380 Followers: Int(1), 5381 Following: Int(1), 5382 CreatedAt: &Timestamp{referenceTime}, 5383 SuspendedAt: &Timestamp{referenceTime}, 5384 }, 5385 SuspendedAt: &Timestamp{referenceTime}, 5386 }, 5387 } 5388 5389 want := `{ 5390 "comment": { 5391 "html_url": "hurl", 5392 "url": "url", 5393 "id": 1, 5394 "node_id": "nid", 5395 "commit_id": "cid", 5396 "user": { 5397 "login": "l", 5398 "id": 1, 5399 "node_id": "n", 5400 "avatar_url": "a", 5401 "url": "u", 5402 "events_url": "e", 5403 "repos_url": "r" 5404 }, 5405 "reactions": { 5406 "total_count": 1, 5407 "+1": 1, 5408 "-1": 1, 5409 "laugh": 1, 5410 "confused": 1, 5411 "heart": 1, 5412 "hooray": 1, 5413 "rocket": 1, 5414 "eyes": 1, 5415 "url": "url" 5416 }, 5417 "created_at": ` + referenceTimeStr + `, 5418 "updated_at": ` + referenceTimeStr + `, 5419 "body": "b", 5420 "path": "path", 5421 "position": 1 5422 }, 5423 "action": "a", 5424 "repository": { 5425 "id": 1, 5426 "name": "n", 5427 "url": "s" 5428 }, 5429 "sender": { 5430 "login": "l", 5431 "id": 1, 5432 "node_id": "n", 5433 "avatar_url": "a", 5434 "url": "u", 5435 "events_url": "e", 5436 "repos_url": "r" 5437 }, 5438 "installation": { 5439 "id": 1, 5440 "node_id": "nid", 5441 "app_id": 1, 5442 "app_slug": "as", 5443 "target_id": 1, 5444 "account": { 5445 "login": "l", 5446 "id": 1, 5447 "avatar_url": "a", 5448 "gravatar_id": "g", 5449 "name": "n", 5450 "company": "c", 5451 "blog": "b", 5452 "location": "l", 5453 "email": "e", 5454 "hireable": true, 5455 "bio": "b", 5456 "twitter_username": "t", 5457 "public_repos": 1, 5458 "followers": 1, 5459 "following": 1, 5460 "created_at": ` + referenceTimeStr + `, 5461 "suspended_at": ` + referenceTimeStr + `, 5462 "url": "u" 5463 }, 5464 "access_tokens_url": "atu", 5465 "repositories_url": "ru", 5466 "html_url": "hu", 5467 "target_type": "tt", 5468 "single_file_name": "sfn", 5469 "repository_selection": "rs", 5470 "events": [ 5471 "e" 5472 ], 5473 "single_file_paths": [ 5474 "s" 5475 ], 5476 "permissions": { 5477 "actions": "a", 5478 "administration": "ad", 5479 "checks": "c", 5480 "contents": "co", 5481 "content_references": "cr", 5482 "deployments": "d", 5483 "environments": "e", 5484 "issues": "i", 5485 "metadata": "md", 5486 "members": "m", 5487 "organization_administration": "oa", 5488 "organization_hooks": "oh", 5489 "organization_plan": "op", 5490 "organization_pre_receive_hooks": "opr", 5491 "organization_projects": "op", 5492 "organization_secrets": "os", 5493 "organization_self_hosted_runners": "osh", 5494 "organization_user_blocking": "oub", 5495 "packages": "pkg", 5496 "pages": "pg", 5497 "pull_requests": "pr", 5498 "repository_hooks": "rh", 5499 "repository_projects": "rp", 5500 "repository_pre_receive_hooks": "rprh", 5501 "secrets": "s", 5502 "secret_scanning_alerts": "ssa", 5503 "security_events": "se", 5504 "single_file": "sf", 5505 "statuses": "s", 5506 "team_discussions": "td", 5507 "vulnerability_alerts": "va", 5508 "workflows": "w" 5509 }, 5510 "created_at": ` + referenceTimeStr + `, 5511 "updated_at": ` + referenceTimeStr + `, 5512 "has_multiple_single_files": false, 5513 "suspended_by": { 5514 "login": "l", 5515 "id": 1, 5516 "avatar_url": "a", 5517 "gravatar_id": "g", 5518 "name": "n", 5519 "company": "c", 5520 "blog": "b", 5521 "location": "l", 5522 "email": "e", 5523 "hireable": true, 5524 "bio": "b", 5525 "twitter_username": "t", 5526 "public_repos": 1, 5527 "followers": 1, 5528 "following": 1, 5529 "created_at": ` + referenceTimeStr + `, 5530 "suspended_at": ` + referenceTimeStr + `, 5531 "url": "u" 5532 }, 5533 "suspended_at": ` + referenceTimeStr + ` 5534 } 5535 }` 5536 5537 testJSONMarshal(t, u, want) 5538 } 5539 5540 func TestDeploymentEvent_Marshal(t *testing.T) { 5541 testJSONMarshal(t, &DeploymentEvent{}, "{}") 5542 5543 l := make(map[string]interface{}) 5544 l["key"] = "value" 5545 5546 jsonMsg, _ := json.Marshal(&l) 5547 5548 u := &DeploymentEvent{ 5549 Deployment: &Deployment{ 5550 URL: String("url"), 5551 ID: Int64(1), 5552 SHA: String("sha"), 5553 Ref: String("ref"), 5554 Task: String("t"), 5555 Payload: jsonMsg, 5556 Environment: String("e"), 5557 Description: String("d"), 5558 Creator: &User{ 5559 Login: String("l"), 5560 ID: Int64(1), 5561 NodeID: String("n"), 5562 URL: String("u"), 5563 ReposURL: String("r"), 5564 EventsURL: String("e"), 5565 AvatarURL: String("a"), 5566 }, 5567 CreatedAt: &Timestamp{referenceTime}, 5568 UpdatedAt: &Timestamp{referenceTime}, 5569 StatusesURL: String("surl"), 5570 RepositoryURL: String("rurl"), 5571 NodeID: String("nid"), 5572 }, 5573 Repo: &Repository{ 5574 ID: Int64(1), 5575 URL: String("s"), 5576 Name: String("n"), 5577 }, 5578 Sender: &User{ 5579 Login: String("l"), 5580 ID: Int64(1), 5581 NodeID: String("n"), 5582 URL: String("u"), 5583 ReposURL: String("r"), 5584 EventsURL: String("e"), 5585 AvatarURL: String("a"), 5586 }, 5587 Installation: &Installation{ 5588 ID: Int64(1), 5589 NodeID: String("nid"), 5590 AppID: Int64(1), 5591 AppSlug: String("as"), 5592 TargetID: Int64(1), 5593 Account: &User{ 5594 Login: String("l"), 5595 ID: Int64(1), 5596 URL: String("u"), 5597 AvatarURL: String("a"), 5598 GravatarID: String("g"), 5599 Name: String("n"), 5600 Company: String("c"), 5601 Blog: String("b"), 5602 Location: String("l"), 5603 Email: String("e"), 5604 Hireable: Bool(true), 5605 Bio: String("b"), 5606 TwitterUsername: String("t"), 5607 PublicRepos: Int(1), 5608 Followers: Int(1), 5609 Following: Int(1), 5610 CreatedAt: &Timestamp{referenceTime}, 5611 SuspendedAt: &Timestamp{referenceTime}, 5612 }, 5613 AccessTokensURL: String("atu"), 5614 RepositoriesURL: String("ru"), 5615 HTMLURL: String("hu"), 5616 TargetType: String("tt"), 5617 SingleFileName: String("sfn"), 5618 RepositorySelection: String("rs"), 5619 Events: []string{"e"}, 5620 SingleFilePaths: []string{"s"}, 5621 Permissions: &InstallationPermissions{ 5622 Actions: String("a"), 5623 Administration: String("ad"), 5624 Checks: String("c"), 5625 Contents: String("co"), 5626 ContentReferences: String("cr"), 5627 Deployments: String("d"), 5628 Environments: String("e"), 5629 Issues: String("i"), 5630 Metadata: String("md"), 5631 Members: String("m"), 5632 OrganizationAdministration: String("oa"), 5633 OrganizationHooks: String("oh"), 5634 OrganizationPlan: String("op"), 5635 OrganizationPreReceiveHooks: String("opr"), 5636 OrganizationProjects: String("op"), 5637 OrganizationSecrets: String("os"), 5638 OrganizationSelfHostedRunners: String("osh"), 5639 OrganizationUserBlocking: String("oub"), 5640 Packages: String("pkg"), 5641 Pages: String("pg"), 5642 PullRequests: String("pr"), 5643 RepositoryHooks: String("rh"), 5644 RepositoryProjects: String("rp"), 5645 RepositoryPreReceiveHooks: String("rprh"), 5646 Secrets: String("s"), 5647 SecretScanningAlerts: String("ssa"), 5648 SecurityEvents: String("se"), 5649 SingleFile: String("sf"), 5650 Statuses: String("s"), 5651 TeamDiscussions: String("td"), 5652 VulnerabilityAlerts: String("va"), 5653 Workflows: String("w"), 5654 }, 5655 CreatedAt: &Timestamp{referenceTime}, 5656 UpdatedAt: &Timestamp{referenceTime}, 5657 HasMultipleSingleFiles: Bool(false), 5658 SuspendedBy: &User{ 5659 Login: String("l"), 5660 ID: Int64(1), 5661 URL: String("u"), 5662 AvatarURL: String("a"), 5663 GravatarID: String("g"), 5664 Name: String("n"), 5665 Company: String("c"), 5666 Blog: String("b"), 5667 Location: String("l"), 5668 Email: String("e"), 5669 Hireable: Bool(true), 5670 Bio: String("b"), 5671 TwitterUsername: String("t"), 5672 PublicRepos: Int(1), 5673 Followers: Int(1), 5674 Following: Int(1), 5675 CreatedAt: &Timestamp{referenceTime}, 5676 SuspendedAt: &Timestamp{referenceTime}, 5677 }, 5678 SuspendedAt: &Timestamp{referenceTime}, 5679 }, 5680 Workflow: &Workflow{ 5681 ID: Int64(1), 5682 NodeID: String("nid"), 5683 Name: String("n"), 5684 Path: String("p"), 5685 State: String("s"), 5686 CreatedAt: &Timestamp{referenceTime}, 5687 UpdatedAt: &Timestamp{referenceTime}, 5688 URL: String("u"), 5689 HTMLURL: String("h"), 5690 BadgeURL: String("b"), 5691 }, 5692 WorkflowRun: &WorkflowRun{ 5693 ID: Int64(1), 5694 Name: String("n"), 5695 NodeID: String("nid"), 5696 HeadBranch: String("hb"), 5697 HeadSHA: String("hs"), 5698 RunNumber: Int(1), 5699 RunAttempt: Int(1), 5700 Event: String("e"), 5701 Status: String("s"), 5702 Conclusion: String("c"), 5703 WorkflowID: Int64(1), 5704 URL: String("u"), 5705 HTMLURL: String("h"), 5706 PullRequests: []*PullRequest{ 5707 { 5708 URL: String("u"), 5709 ID: Int64(1), 5710 Number: Int(1), 5711 Head: &PullRequestBranch{ 5712 Ref: String("r"), 5713 SHA: String("s"), 5714 Repo: &Repository{ 5715 ID: Int64(1), 5716 URL: String("s"), 5717 Name: String("n"), 5718 }, 5719 }, 5720 Base: &PullRequestBranch{ 5721 Ref: String("r"), 5722 SHA: String("s"), 5723 Repo: &Repository{ 5724 ID: Int64(1), 5725 URL: String("u"), 5726 Name: String("n"), 5727 }, 5728 }, 5729 }, 5730 }, 5731 CreatedAt: &Timestamp{referenceTime}, 5732 UpdatedAt: &Timestamp{referenceTime}, 5733 RunStartedAt: &Timestamp{referenceTime}, 5734 JobsURL: String("j"), 5735 LogsURL: String("l"), 5736 CheckSuiteURL: String("c"), 5737 ArtifactsURL: String("a"), 5738 CancelURL: String("c"), 5739 RerunURL: String("r"), 5740 PreviousAttemptURL: String("p"), 5741 HeadCommit: &HeadCommit{ 5742 Message: String("m"), 5743 Author: &CommitAuthor{ 5744 Name: String("n"), 5745 Email: String("e"), 5746 Login: String("l"), 5747 }, 5748 URL: String("u"), 5749 Distinct: Bool(false), 5750 SHA: String("s"), 5751 ID: String("i"), 5752 TreeID: String("tid"), 5753 Timestamp: &Timestamp{referenceTime}, 5754 Committer: &CommitAuthor{ 5755 Name: String("n"), 5756 Email: String("e"), 5757 Login: String("l"), 5758 }, 5759 }, 5760 WorkflowURL: String("w"), 5761 Repository: &Repository{ 5762 ID: Int64(1), 5763 URL: String("u"), 5764 Name: String("n"), 5765 }, 5766 HeadRepository: &Repository{ 5767 ID: Int64(1), 5768 URL: String("u"), 5769 Name: String("n"), 5770 }, 5771 }, 5772 } 5773 5774 want := `{ 5775 "deployment": { 5776 "url": "url", 5777 "id": 1, 5778 "sha": "sha", 5779 "ref": "ref", 5780 "task": "t", 5781 "payload": { 5782 "key": "value" 5783 }, 5784 "environment": "e", 5785 "description": "d", 5786 "creator": { 5787 "login": "l", 5788 "id": 1, 5789 "node_id": "n", 5790 "avatar_url": "a", 5791 "url": "u", 5792 "events_url": "e", 5793 "repos_url": "r" 5794 }, 5795 "created_at": ` + referenceTimeStr + `, 5796 "updated_at": ` + referenceTimeStr + `, 5797 "statuses_url": "surl", 5798 "repository_url": "rurl", 5799 "node_id": "nid" 5800 }, 5801 "repository": { 5802 "id": 1, 5803 "name": "n", 5804 "url": "s" 5805 }, 5806 "sender": { 5807 "login": "l", 5808 "id": 1, 5809 "node_id": "n", 5810 "avatar_url": "a", 5811 "url": "u", 5812 "events_url": "e", 5813 "repos_url": "r" 5814 }, 5815 "installation": { 5816 "id": 1, 5817 "node_id": "nid", 5818 "app_id": 1, 5819 "app_slug": "as", 5820 "target_id": 1, 5821 "account": { 5822 "login": "l", 5823 "id": 1, 5824 "avatar_url": "a", 5825 "gravatar_id": "g", 5826 "name": "n", 5827 "company": "c", 5828 "blog": "b", 5829 "location": "l", 5830 "email": "e", 5831 "hireable": true, 5832 "bio": "b", 5833 "twitter_username": "t", 5834 "public_repos": 1, 5835 "followers": 1, 5836 "following": 1, 5837 "created_at": ` + referenceTimeStr + `, 5838 "suspended_at": ` + referenceTimeStr + `, 5839 "url": "u" 5840 }, 5841 "access_tokens_url": "atu", 5842 "repositories_url": "ru", 5843 "html_url": "hu", 5844 "target_type": "tt", 5845 "single_file_name": "sfn", 5846 "repository_selection": "rs", 5847 "events": [ 5848 "e" 5849 ], 5850 "single_file_paths": [ 5851 "s" 5852 ], 5853 "permissions": { 5854 "actions": "a", 5855 "administration": "ad", 5856 "checks": "c", 5857 "contents": "co", 5858 "content_references": "cr", 5859 "deployments": "d", 5860 "environments": "e", 5861 "issues": "i", 5862 "metadata": "md", 5863 "members": "m", 5864 "organization_administration": "oa", 5865 "organization_hooks": "oh", 5866 "organization_plan": "op", 5867 "organization_pre_receive_hooks": "opr", 5868 "organization_projects": "op", 5869 "organization_secrets": "os", 5870 "organization_self_hosted_runners": "osh", 5871 "organization_user_blocking": "oub", 5872 "packages": "pkg", 5873 "pages": "pg", 5874 "pull_requests": "pr", 5875 "repository_hooks": "rh", 5876 "repository_projects": "rp", 5877 "repository_pre_receive_hooks": "rprh", 5878 "secrets": "s", 5879 "secret_scanning_alerts": "ssa", 5880 "security_events": "se", 5881 "single_file": "sf", 5882 "statuses": "s", 5883 "team_discussions": "td", 5884 "vulnerability_alerts": "va", 5885 "workflows": "w" 5886 }, 5887 "created_at": ` + referenceTimeStr + `, 5888 "updated_at": ` + referenceTimeStr + `, 5889 "has_multiple_single_files": false, 5890 "suspended_by": { 5891 "login": "l", 5892 "id": 1, 5893 "avatar_url": "a", 5894 "gravatar_id": "g", 5895 "name": "n", 5896 "company": "c", 5897 "blog": "b", 5898 "location": "l", 5899 "email": "e", 5900 "hireable": true, 5901 "bio": "b", 5902 "twitter_username": "t", 5903 "public_repos": 1, 5904 "followers": 1, 5905 "following": 1, 5906 "created_at": ` + referenceTimeStr + `, 5907 "suspended_at": ` + referenceTimeStr + `, 5908 "url": "u" 5909 }, 5910 "suspended_at": ` + referenceTimeStr + ` 5911 }, 5912 "workflow": { 5913 "id": 1, 5914 "node_id": "nid", 5915 "name": "n", 5916 "path": "p", 5917 "state": "s", 5918 "created_at": ` + referenceTimeStr + `, 5919 "updated_at": ` + referenceTimeStr + `, 5920 "url": "u", 5921 "html_url": "h", 5922 "badge_url": "b" 5923 }, 5924 "workflow_run": { 5925 "id": 1, 5926 "name": "n", 5927 "node_id": "nid", 5928 "head_branch": "hb", 5929 "head_sha": "hs", 5930 "run_number": 1, 5931 "run_attempt": 1, 5932 "event": "e", 5933 "status": "s", 5934 "conclusion": "c", 5935 "workflow_id": 1, 5936 "url": "u", 5937 "html_url": "h", 5938 "pull_requests": [ 5939 { 5940 "id": 1, 5941 "number": 1, 5942 "url": "u", 5943 "head": { 5944 "ref": "r", 5945 "sha": "s", 5946 "repo": { 5947 "id": 1, 5948 "name": "n", 5949 "url": "s" 5950 } 5951 }, 5952 "base": { 5953 "ref": "r", 5954 "sha": "s", 5955 "repo": { 5956 "id": 1, 5957 "name": "n", 5958 "url": "u" 5959 } 5960 } 5961 } 5962 ], 5963 "created_at": ` + referenceTimeStr + `, 5964 "updated_at": ` + referenceTimeStr + `, 5965 "run_started_at": ` + referenceTimeStr + `, 5966 "jobs_url": "j", 5967 "logs_url": "l", 5968 "check_suite_url": "c", 5969 "artifacts_url": "a", 5970 "cancel_url": "c", 5971 "rerun_url": "r", 5972 "previous_attempt_url": "p", 5973 "head_commit": { 5974 "message": "m", 5975 "author": { 5976 "name": "n", 5977 "email": "e", 5978 "username": "l" 5979 }, 5980 "url": "u", 5981 "distinct": false, 5982 "sha": "s", 5983 "id": "i", 5984 "tree_id": "tid", 5985 "timestamp": ` + referenceTimeStr + `, 5986 "committer": { 5987 "name": "n", 5988 "email": "e", 5989 "username": "l" 5990 } 5991 }, 5992 "workflow_url": "w", 5993 "repository": { 5994 "id": 1, 5995 "name": "n", 5996 "url": "u" 5997 }, 5998 "head_repository": { 5999 "id": 1, 6000 "name": "n", 6001 "url": "u" 6002 } 6003 } 6004 }` 6005 6006 testJSONMarshal(t, u, want) 6007 } 6008 6009 func TestDeploymentProtectionRuleEvent_Marshal(t *testing.T) { 6010 testJSONMarshal(t, &DeploymentProtectionRuleEvent{}, "{}") 6011 6012 l := make(map[string]interface{}) 6013 l["key"] = "value" 6014 6015 jsonMsg, _ := json.Marshal(&l) 6016 6017 u := &DeploymentProtectionRuleEvent{ 6018 Action: String("a"), 6019 Environment: String("e"), 6020 DeploymentCallbackURL: String("b"), 6021 Deployment: &Deployment{ 6022 URL: String("url"), 6023 ID: Int64(1), 6024 SHA: String("sha"), 6025 Ref: String("ref"), 6026 Task: String("t"), 6027 Payload: jsonMsg, 6028 Environment: String("e"), 6029 Description: String("d"), 6030 Creator: &User{ 6031 Login: String("l"), 6032 ID: Int64(1), 6033 NodeID: String("n"), 6034 URL: String("u"), 6035 ReposURL: String("r"), 6036 EventsURL: String("e"), 6037 AvatarURL: String("a"), 6038 }, 6039 CreatedAt: &Timestamp{referenceTime}, 6040 UpdatedAt: &Timestamp{referenceTime}, 6041 StatusesURL: String("surl"), 6042 RepositoryURL: String("rurl"), 6043 NodeID: String("nid"), 6044 }, 6045 Repo: &Repository{ 6046 ID: Int64(1), 6047 URL: String("s"), 6048 Name: String("n"), 6049 }, 6050 Organization: &Organization{ 6051 BillingEmail: String("be"), 6052 Blog: String("b"), 6053 Company: String("c"), 6054 Email: String("e"), 6055 TwitterUsername: String("tu"), 6056 Location: String("loc"), 6057 Name: String("n"), 6058 Description: String("d"), 6059 IsVerified: Bool(true), 6060 HasOrganizationProjects: Bool(true), 6061 HasRepositoryProjects: Bool(true), 6062 DefaultRepoPermission: String("drp"), 6063 MembersCanCreateRepos: Bool(true), 6064 MembersCanCreateInternalRepos: Bool(true), 6065 MembersCanCreatePrivateRepos: Bool(true), 6066 MembersCanCreatePublicRepos: Bool(false), 6067 MembersAllowedRepositoryCreationType: String("marct"), 6068 MembersCanCreatePages: Bool(true), 6069 MembersCanCreatePublicPages: Bool(false), 6070 MembersCanCreatePrivatePages: Bool(true), 6071 }, 6072 PullRequests: []*PullRequest{ 6073 { 6074 URL: String("u"), 6075 ID: Int64(1), 6076 Number: Int(1), 6077 Head: &PullRequestBranch{ 6078 Ref: String("r"), 6079 SHA: String("s"), 6080 Repo: &Repository{ 6081 ID: Int64(1), 6082 URL: String("s"), 6083 Name: String("n"), 6084 }, 6085 }, 6086 Base: &PullRequestBranch{ 6087 Ref: String("r"), 6088 SHA: String("s"), 6089 Repo: &Repository{ 6090 ID: Int64(1), 6091 URL: String("u"), 6092 Name: String("n"), 6093 }, 6094 }, 6095 }, 6096 }, 6097 Sender: &User{ 6098 Login: String("l"), 6099 ID: Int64(1), 6100 NodeID: String("n"), 6101 URL: String("u"), 6102 ReposURL: String("r"), 6103 EventsURL: String("e"), 6104 AvatarURL: String("a"), 6105 }, 6106 Installation: &Installation{ 6107 ID: Int64(1), 6108 NodeID: String("nid"), 6109 AppID: Int64(1), 6110 AppSlug: String("as"), 6111 TargetID: Int64(1), 6112 Account: &User{ 6113 Login: String("l"), 6114 ID: Int64(1), 6115 URL: String("u"), 6116 AvatarURL: String("a"), 6117 GravatarID: String("g"), 6118 Name: String("n"), 6119 Company: String("c"), 6120 Blog: String("b"), 6121 Location: String("l"), 6122 Email: String("e"), 6123 Hireable: Bool(true), 6124 Bio: String("b"), 6125 TwitterUsername: String("t"), 6126 PublicRepos: Int(1), 6127 Followers: Int(1), 6128 Following: Int(1), 6129 CreatedAt: &Timestamp{referenceTime}, 6130 SuspendedAt: &Timestamp{referenceTime}, 6131 }, 6132 AccessTokensURL: String("atu"), 6133 RepositoriesURL: String("ru"), 6134 HTMLURL: String("hu"), 6135 TargetType: String("tt"), 6136 SingleFileName: String("sfn"), 6137 RepositorySelection: String("rs"), 6138 Events: []string{"e"}, 6139 SingleFilePaths: []string{"s"}, 6140 Permissions: &InstallationPermissions{ 6141 Actions: String("a"), 6142 Administration: String("ad"), 6143 Checks: String("c"), 6144 Contents: String("co"), 6145 ContentReferences: String("cr"), 6146 Deployments: String("d"), 6147 Environments: String("e"), 6148 Issues: String("i"), 6149 Metadata: String("md"), 6150 Members: String("m"), 6151 OrganizationAdministration: String("oa"), 6152 OrganizationHooks: String("oh"), 6153 OrganizationPlan: String("op"), 6154 OrganizationPreReceiveHooks: String("opr"), 6155 OrganizationProjects: String("op"), 6156 OrganizationSecrets: String("os"), 6157 OrganizationSelfHostedRunners: String("osh"), 6158 OrganizationUserBlocking: String("oub"), 6159 Packages: String("pkg"), 6160 Pages: String("pg"), 6161 PullRequests: String("pr"), 6162 RepositoryHooks: String("rh"), 6163 RepositoryProjects: String("rp"), 6164 RepositoryPreReceiveHooks: String("rprh"), 6165 Secrets: String("s"), 6166 SecretScanningAlerts: String("ssa"), 6167 SecurityEvents: String("se"), 6168 SingleFile: String("sf"), 6169 Statuses: String("s"), 6170 TeamDiscussions: String("td"), 6171 VulnerabilityAlerts: String("va"), 6172 Workflows: String("w"), 6173 }, 6174 CreatedAt: &Timestamp{referenceTime}, 6175 UpdatedAt: &Timestamp{referenceTime}, 6176 HasMultipleSingleFiles: Bool(false), 6177 SuspendedBy: &User{ 6178 Login: String("l"), 6179 ID: Int64(1), 6180 URL: String("u"), 6181 AvatarURL: String("a"), 6182 GravatarID: String("g"), 6183 Name: String("n"), 6184 Company: String("c"), 6185 Blog: String("b"), 6186 Location: String("l"), 6187 Email: String("e"), 6188 Hireable: Bool(true), 6189 Bio: String("b"), 6190 TwitterUsername: String("t"), 6191 PublicRepos: Int(1), 6192 Followers: Int(1), 6193 Following: Int(1), 6194 CreatedAt: &Timestamp{referenceTime}, 6195 SuspendedAt: &Timestamp{referenceTime}, 6196 }, 6197 SuspendedAt: &Timestamp{referenceTime}, 6198 }, 6199 } 6200 6201 want := `{ 6202 "action": "a", 6203 "environment": "e", 6204 "deployment_callback_url": "b", 6205 "deployment": { 6206 "url": "url", 6207 "id": 1, 6208 "sha": "sha", 6209 "ref": "ref", 6210 "task": "t", 6211 "payload": { 6212 "key": "value" 6213 }, 6214 "environment": "e", 6215 "description": "d", 6216 "creator": { 6217 "login": "l", 6218 "id": 1, 6219 "node_id": "n", 6220 "avatar_url": "a", 6221 "url": "u", 6222 "events_url": "e", 6223 "repos_url": "r" 6224 }, 6225 "created_at": ` + referenceTimeStr + `, 6226 "updated_at": ` + referenceTimeStr + `, 6227 "statuses_url": "surl", 6228 "repository_url": "rurl", 6229 "node_id": "nid" 6230 }, 6231 "repository": { 6232 "id": 1, 6233 "name": "n", 6234 "url": "s" 6235 }, 6236 "organization": { 6237 "name": "n", 6238 "company": "c", 6239 "blog": "b", 6240 "location": "loc", 6241 "email": "e", 6242 "twitter_username": "tu", 6243 "description": "d", 6244 "billing_email": "be", 6245 "is_verified": true, 6246 "has_organization_projects": true, 6247 "has_repository_projects": true, 6248 "default_repository_permission": "drp", 6249 "members_can_create_repositories": true, 6250 "members_can_create_public_repositories": false, 6251 "members_can_create_private_repositories": true, 6252 "members_can_create_internal_repositories": true, 6253 "members_allowed_repository_creation_type": "marct", 6254 "members_can_create_pages": true, 6255 "members_can_create_public_pages": false, 6256 "members_can_create_private_pages": true 6257 }, 6258 "pull_requests": [ 6259 { 6260 "id": 1, 6261 "number": 1, 6262 "url": "u", 6263 "head": { 6264 "ref": "r", 6265 "sha": "s", 6266 "repo": { 6267 "id": 1, 6268 "name": "n", 6269 "url": "s" 6270 } 6271 }, 6272 "base": { 6273 "ref": "r", 6274 "sha": "s", 6275 "repo": { 6276 "id": 1, 6277 "name": "n", 6278 "url": "u" 6279 } 6280 } 6281 } 6282 ], 6283 "sender": { 6284 "login": "l", 6285 "id": 1, 6286 "node_id": "n", 6287 "avatar_url": "a", 6288 "url": "u", 6289 "events_url": "e", 6290 "repos_url": "r" 6291 }, 6292 "installation": { 6293 "id": 1, 6294 "node_id": "nid", 6295 "app_id": 1, 6296 "app_slug": "as", 6297 "target_id": 1, 6298 "account": { 6299 "login": "l", 6300 "id": 1, 6301 "avatar_url": "a", 6302 "gravatar_id": "g", 6303 "name": "n", 6304 "company": "c", 6305 "blog": "b", 6306 "location": "l", 6307 "email": "e", 6308 "hireable": true, 6309 "bio": "b", 6310 "twitter_username": "t", 6311 "public_repos": 1, 6312 "followers": 1, 6313 "following": 1, 6314 "created_at": ` + referenceTimeStr + `, 6315 "suspended_at": ` + referenceTimeStr + `, 6316 "url": "u" 6317 }, 6318 "access_tokens_url": "atu", 6319 "repositories_url": "ru", 6320 "html_url": "hu", 6321 "target_type": "tt", 6322 "single_file_name": "sfn", 6323 "repository_selection": "rs", 6324 "events": [ 6325 "e" 6326 ], 6327 "single_file_paths": [ 6328 "s" 6329 ], 6330 "permissions": { 6331 "actions": "a", 6332 "administration": "ad", 6333 "checks": "c", 6334 "contents": "co", 6335 "content_references": "cr", 6336 "deployments": "d", 6337 "environments": "e", 6338 "issues": "i", 6339 "metadata": "md", 6340 "members": "m", 6341 "organization_administration": "oa", 6342 "organization_hooks": "oh", 6343 "organization_plan": "op", 6344 "organization_pre_receive_hooks": "opr", 6345 "organization_projects": "op", 6346 "organization_secrets": "os", 6347 "organization_self_hosted_runners": "osh", 6348 "organization_user_blocking": "oub", 6349 "packages": "pkg", 6350 "pages": "pg", 6351 "pull_requests": "pr", 6352 "repository_hooks": "rh", 6353 "repository_projects": "rp", 6354 "repository_pre_receive_hooks": "rprh", 6355 "secrets": "s", 6356 "secret_scanning_alerts": "ssa", 6357 "security_events": "se", 6358 "single_file": "sf", 6359 "statuses": "s", 6360 "team_discussions": "td", 6361 "vulnerability_alerts": "va", 6362 "workflows": "w" 6363 }, 6364 "created_at": ` + referenceTimeStr + `, 6365 "updated_at": ` + referenceTimeStr + `, 6366 "has_multiple_single_files": false, 6367 "suspended_by": { 6368 "login": "l", 6369 "id": 1, 6370 "avatar_url": "a", 6371 "gravatar_id": "g", 6372 "name": "n", 6373 "company": "c", 6374 "blog": "b", 6375 "location": "l", 6376 "email": "e", 6377 "hireable": true, 6378 "bio": "b", 6379 "twitter_username": "t", 6380 "public_repos": 1, 6381 "followers": 1, 6382 "following": 1, 6383 "created_at": ` + referenceTimeStr + `, 6384 "suspended_at": ` + referenceTimeStr + `, 6385 "url": "u" 6386 }, 6387 "suspended_at": ` + referenceTimeStr + ` 6388 } 6389 }` 6390 6391 testJSONMarshal(t, u, want) 6392 } 6393 6394 func TestDeploymentStatusEvent_Marshal(t *testing.T) { 6395 testJSONMarshal(t, &DeploymentStatusEvent{}, "{}") 6396 6397 l := make(map[string]interface{}) 6398 l["key"] = "value" 6399 6400 jsonMsg, _ := json.Marshal(&l) 6401 6402 u := &DeploymentStatusEvent{ 6403 Deployment: &Deployment{ 6404 URL: String("url"), 6405 ID: Int64(1), 6406 SHA: String("sha"), 6407 Ref: String("ref"), 6408 Task: String("t"), 6409 Payload: jsonMsg, 6410 Environment: String("e"), 6411 Description: String("d"), 6412 Creator: &User{ 6413 Login: String("l"), 6414 ID: Int64(1), 6415 NodeID: String("n"), 6416 URL: String("u"), 6417 ReposURL: String("r"), 6418 EventsURL: String("e"), 6419 AvatarURL: String("a"), 6420 }, 6421 CreatedAt: &Timestamp{referenceTime}, 6422 UpdatedAt: &Timestamp{referenceTime}, 6423 StatusesURL: String("surl"), 6424 RepositoryURL: String("rurl"), 6425 NodeID: String("nid"), 6426 }, 6427 DeploymentStatus: &DeploymentStatus{ 6428 ID: Int64(1), 6429 State: String("s"), 6430 Creator: &User{ 6431 Login: String("l"), 6432 ID: Int64(1), 6433 NodeID: String("n"), 6434 URL: String("u"), 6435 ReposURL: String("r"), 6436 EventsURL: String("e"), 6437 AvatarURL: String("a"), 6438 }, 6439 Description: String("s"), 6440 Environment: String("s"), 6441 NodeID: String("s"), 6442 CreatedAt: &Timestamp{referenceTime}, 6443 UpdatedAt: &Timestamp{referenceTime}, 6444 TargetURL: String("s"), 6445 DeploymentURL: String("s"), 6446 RepositoryURL: String("s"), 6447 EnvironmentURL: String("s"), 6448 LogURL: String("s"), 6449 URL: String("s"), 6450 }, 6451 Repo: &Repository{ 6452 ID: Int64(1), 6453 URL: String("s"), 6454 Name: String("n"), 6455 }, 6456 Sender: &User{ 6457 Login: String("l"), 6458 ID: Int64(1), 6459 NodeID: String("n"), 6460 URL: String("u"), 6461 ReposURL: String("r"), 6462 EventsURL: String("e"), 6463 AvatarURL: String("a"), 6464 }, 6465 Installation: &Installation{ 6466 ID: Int64(1), 6467 NodeID: String("nid"), 6468 AppID: Int64(1), 6469 AppSlug: String("as"), 6470 TargetID: Int64(1), 6471 Account: &User{ 6472 Login: String("l"), 6473 ID: Int64(1), 6474 URL: String("u"), 6475 AvatarURL: String("a"), 6476 GravatarID: String("g"), 6477 Name: String("n"), 6478 Company: String("c"), 6479 Blog: String("b"), 6480 Location: String("l"), 6481 Email: String("e"), 6482 Hireable: Bool(true), 6483 Bio: String("b"), 6484 TwitterUsername: String("t"), 6485 PublicRepos: Int(1), 6486 Followers: Int(1), 6487 Following: Int(1), 6488 CreatedAt: &Timestamp{referenceTime}, 6489 SuspendedAt: &Timestamp{referenceTime}, 6490 }, 6491 AccessTokensURL: String("atu"), 6492 RepositoriesURL: String("ru"), 6493 HTMLURL: String("hu"), 6494 TargetType: String("tt"), 6495 SingleFileName: String("sfn"), 6496 RepositorySelection: String("rs"), 6497 Events: []string{"e"}, 6498 SingleFilePaths: []string{"s"}, 6499 Permissions: &InstallationPermissions{ 6500 Actions: String("a"), 6501 Administration: String("ad"), 6502 Checks: String("c"), 6503 Contents: String("co"), 6504 ContentReferences: String("cr"), 6505 Deployments: String("d"), 6506 Environments: String("e"), 6507 Issues: String("i"), 6508 Metadata: String("md"), 6509 Members: String("m"), 6510 OrganizationAdministration: String("oa"), 6511 OrganizationHooks: String("oh"), 6512 OrganizationPlan: String("op"), 6513 OrganizationPreReceiveHooks: String("opr"), 6514 OrganizationProjects: String("op"), 6515 OrganizationSecrets: String("os"), 6516 OrganizationSelfHostedRunners: String("osh"), 6517 OrganizationUserBlocking: String("oub"), 6518 Packages: String("pkg"), 6519 Pages: String("pg"), 6520 PullRequests: String("pr"), 6521 RepositoryHooks: String("rh"), 6522 RepositoryProjects: String("rp"), 6523 RepositoryPreReceiveHooks: String("rprh"), 6524 Secrets: String("s"), 6525 SecretScanningAlerts: String("ssa"), 6526 SecurityEvents: String("se"), 6527 SingleFile: String("sf"), 6528 Statuses: String("s"), 6529 TeamDiscussions: String("td"), 6530 VulnerabilityAlerts: String("va"), 6531 Workflows: String("w"), 6532 }, 6533 CreatedAt: &Timestamp{referenceTime}, 6534 UpdatedAt: &Timestamp{referenceTime}, 6535 HasMultipleSingleFiles: Bool(false), 6536 SuspendedBy: &User{ 6537 Login: String("l"), 6538 ID: Int64(1), 6539 URL: String("u"), 6540 AvatarURL: String("a"), 6541 GravatarID: String("g"), 6542 Name: String("n"), 6543 Company: String("c"), 6544 Blog: String("b"), 6545 Location: String("l"), 6546 Email: String("e"), 6547 Hireable: Bool(true), 6548 Bio: String("b"), 6549 TwitterUsername: String("t"), 6550 PublicRepos: Int(1), 6551 Followers: Int(1), 6552 Following: Int(1), 6553 CreatedAt: &Timestamp{referenceTime}, 6554 SuspendedAt: &Timestamp{referenceTime}, 6555 }, 6556 SuspendedAt: &Timestamp{referenceTime}, 6557 }, 6558 } 6559 6560 want := `{ 6561 "deployment": { 6562 "url": "url", 6563 "id": 1, 6564 "sha": "sha", 6565 "ref": "ref", 6566 "task": "t", 6567 "payload": { 6568 "key": "value" 6569 }, 6570 "environment": "e", 6571 "description": "d", 6572 "creator": { 6573 "login": "l", 6574 "id": 1, 6575 "node_id": "n", 6576 "avatar_url": "a", 6577 "url": "u", 6578 "events_url": "e", 6579 "repos_url": "r" 6580 }, 6581 "created_at": ` + referenceTimeStr + `, 6582 "updated_at": ` + referenceTimeStr + `, 6583 "statuses_url": "surl", 6584 "repository_url": "rurl", 6585 "node_id": "nid" 6586 }, 6587 "deployment_status": { 6588 "id": 1, 6589 "state": "s", 6590 "creator": { 6591 "login": "l", 6592 "id": 1, 6593 "node_id": "n", 6594 "avatar_url": "a", 6595 "url": "u", 6596 "events_url": "e", 6597 "repos_url": "r" 6598 }, 6599 "description": "s", 6600 "environment": "s", 6601 "node_id": "s", 6602 "created_at": ` + referenceTimeStr + `, 6603 "updated_at": ` + referenceTimeStr + `, 6604 "target_url": "s", 6605 "deployment_url": "s", 6606 "repository_url": "s", 6607 "environment_url": "s", 6608 "log_url": "s", 6609 "url": "s" 6610 }, 6611 "repository": { 6612 "id": 1, 6613 "name": "n", 6614 "url": "s" 6615 }, 6616 "sender": { 6617 "login": "l", 6618 "id": 1, 6619 "node_id": "n", 6620 "avatar_url": "a", 6621 "url": "u", 6622 "events_url": "e", 6623 "repos_url": "r" 6624 }, 6625 "installation": { 6626 "id": 1, 6627 "node_id": "nid", 6628 "app_id": 1, 6629 "app_slug": "as", 6630 "target_id": 1, 6631 "account": { 6632 "login": "l", 6633 "id": 1, 6634 "avatar_url": "a", 6635 "gravatar_id": "g", 6636 "name": "n", 6637 "company": "c", 6638 "blog": "b", 6639 "location": "l", 6640 "email": "e", 6641 "hireable": true, 6642 "bio": "b", 6643 "twitter_username": "t", 6644 "public_repos": 1, 6645 "followers": 1, 6646 "following": 1, 6647 "created_at": ` + referenceTimeStr + `, 6648 "suspended_at": ` + referenceTimeStr + `, 6649 "url": "u" 6650 }, 6651 "access_tokens_url": "atu", 6652 "repositories_url": "ru", 6653 "html_url": "hu", 6654 "target_type": "tt", 6655 "single_file_name": "sfn", 6656 "repository_selection": "rs", 6657 "events": [ 6658 "e" 6659 ], 6660 "single_file_paths": [ 6661 "s" 6662 ], 6663 "permissions": { 6664 "actions": "a", 6665 "administration": "ad", 6666 "checks": "c", 6667 "contents": "co", 6668 "content_references": "cr", 6669 "deployments": "d", 6670 "environments": "e", 6671 "issues": "i", 6672 "metadata": "md", 6673 "members": "m", 6674 "organization_administration": "oa", 6675 "organization_hooks": "oh", 6676 "organization_plan": "op", 6677 "organization_pre_receive_hooks": "opr", 6678 "organization_projects": "op", 6679 "organization_secrets": "os", 6680 "organization_self_hosted_runners": "osh", 6681 "organization_user_blocking": "oub", 6682 "packages": "pkg", 6683 "pages": "pg", 6684 "pull_requests": "pr", 6685 "repository_hooks": "rh", 6686 "repository_projects": "rp", 6687 "repository_pre_receive_hooks": "rprh", 6688 "secrets": "s", 6689 "secret_scanning_alerts": "ssa", 6690 "security_events": "se", 6691 "single_file": "sf", 6692 "statuses": "s", 6693 "team_discussions": "td", 6694 "vulnerability_alerts": "va", 6695 "workflows": "w" 6696 }, 6697 "created_at": ` + referenceTimeStr + `, 6698 "updated_at": ` + referenceTimeStr + `, 6699 "has_multiple_single_files": false, 6700 "suspended_by": { 6701 "login": "l", 6702 "id": 1, 6703 "avatar_url": "a", 6704 "gravatar_id": "g", 6705 "name": "n", 6706 "company": "c", 6707 "blog": "b", 6708 "location": "l", 6709 "email": "e", 6710 "hireable": true, 6711 "bio": "b", 6712 "twitter_username": "t", 6713 "public_repos": 1, 6714 "followers": 1, 6715 "following": 1, 6716 "created_at": ` + referenceTimeStr + `, 6717 "suspended_at": ` + referenceTimeStr + `, 6718 "url": "u" 6719 }, 6720 "suspended_at": ` + referenceTimeStr + ` 6721 } 6722 }` 6723 6724 testJSONMarshal(t, u, want) 6725 } 6726 6727 func TestDiscussionCommentEvent_Marshal(t *testing.T) { 6728 testJSONMarshal(t, &DiscussionCommentEvent{}, "{}") 6729 6730 u := &DiscussionCommentEvent{ 6731 Comment: &CommentDiscussion{ 6732 AuthorAssociation: String("aa"), 6733 Body: String("bo"), 6734 ChildCommentCount: Int(1), 6735 CreatedAt: &Timestamp{referenceTime}, 6736 DiscussionID: Int64(1), 6737 HTMLURL: String("hurl"), 6738 ID: Int64(1), 6739 NodeID: String("nid"), 6740 ParentID: Int64(1), 6741 Reactions: &Reactions{ 6742 TotalCount: Int(1), 6743 PlusOne: Int(1), 6744 MinusOne: Int(1), 6745 Laugh: Int(1), 6746 Confused: Int(1), 6747 Heart: Int(1), 6748 Hooray: Int(1), 6749 Rocket: Int(1), 6750 Eyes: Int(1), 6751 URL: String("url"), 6752 }, 6753 RepositoryURL: String("rurl"), 6754 UpdatedAt: &Timestamp{referenceTime}, 6755 User: &User{ 6756 Login: String("l"), 6757 ID: Int64(1), 6758 NodeID: String("n"), 6759 URL: String("u"), 6760 ReposURL: String("r"), 6761 EventsURL: String("e"), 6762 AvatarURL: String("a"), 6763 }, 6764 }, 6765 Discussion: &Discussion{ 6766 RepositoryURL: String("rurl"), 6767 DiscussionCategory: &DiscussionCategory{ 6768 ID: Int64(1), 6769 NodeID: String("nid"), 6770 RepositoryID: Int64(1), 6771 Emoji: String("emoji"), 6772 Name: String("name"), 6773 Description: String("description"), 6774 CreatedAt: &Timestamp{referenceTime}, 6775 UpdatedAt: &Timestamp{referenceTime}, 6776 Slug: String("slug"), 6777 IsAnswerable: Bool(false), 6778 }, 6779 HTMLURL: String("hurl"), 6780 ID: Int64(1), 6781 NodeID: String("nurl"), 6782 Number: Int(1), 6783 Title: String("title"), 6784 User: &User{ 6785 Login: String("l"), 6786 ID: Int64(1), 6787 NodeID: String("n"), 6788 URL: String("u"), 6789 ReposURL: String("r"), 6790 EventsURL: String("e"), 6791 AvatarURL: String("a"), 6792 }, 6793 State: String("st"), 6794 Locked: Bool(false), 6795 Comments: Int(1), 6796 CreatedAt: &Timestamp{referenceTime}, 6797 UpdatedAt: &Timestamp{referenceTime}, 6798 AuthorAssociation: String("aa"), 6799 Body: String("bo"), 6800 }, 6801 Repo: &Repository{ 6802 ID: Int64(1), 6803 URL: String("s"), 6804 Name: String("n"), 6805 }, 6806 Org: &Organization{ 6807 BillingEmail: String("be"), 6808 Blog: String("b"), 6809 Company: String("c"), 6810 Email: String("e"), 6811 TwitterUsername: String("tu"), 6812 Location: String("loc"), 6813 Name: String("n"), 6814 Description: String("d"), 6815 IsVerified: Bool(true), 6816 HasOrganizationProjects: Bool(true), 6817 HasRepositoryProjects: Bool(true), 6818 DefaultRepoPermission: String("drp"), 6819 MembersCanCreateRepos: Bool(true), 6820 MembersCanCreateInternalRepos: Bool(true), 6821 MembersCanCreatePrivateRepos: Bool(true), 6822 MembersCanCreatePublicRepos: Bool(false), 6823 MembersAllowedRepositoryCreationType: String("marct"), 6824 MembersCanCreatePages: Bool(true), 6825 MembersCanCreatePublicPages: Bool(false), 6826 MembersCanCreatePrivatePages: Bool(true), 6827 }, 6828 Sender: &User{ 6829 Login: String("l"), 6830 ID: Int64(1), 6831 NodeID: String("n"), 6832 URL: String("u"), 6833 ReposURL: String("r"), 6834 EventsURL: String("e"), 6835 AvatarURL: String("a"), 6836 }, 6837 Installation: &Installation{ 6838 ID: Int64(1), 6839 NodeID: String("nid"), 6840 AppID: Int64(1), 6841 AppSlug: String("as"), 6842 TargetID: Int64(1), 6843 Account: &User{ 6844 Login: String("l"), 6845 ID: Int64(1), 6846 URL: String("u"), 6847 AvatarURL: String("a"), 6848 GravatarID: String("g"), 6849 Name: String("n"), 6850 Company: String("c"), 6851 Blog: String("b"), 6852 Location: String("l"), 6853 Email: String("e"), 6854 Hireable: Bool(true), 6855 Bio: String("b"), 6856 TwitterUsername: String("t"), 6857 PublicRepos: Int(1), 6858 Followers: Int(1), 6859 Following: Int(1), 6860 CreatedAt: &Timestamp{referenceTime}, 6861 SuspendedAt: &Timestamp{referenceTime}, 6862 }, 6863 AccessTokensURL: String("atu"), 6864 RepositoriesURL: String("ru"), 6865 HTMLURL: String("hu"), 6866 TargetType: String("tt"), 6867 SingleFileName: String("sfn"), 6868 RepositorySelection: String("rs"), 6869 Events: []string{"e"}, 6870 SingleFilePaths: []string{"s"}, 6871 Permissions: &InstallationPermissions{ 6872 Actions: String("a"), 6873 Administration: String("ad"), 6874 Checks: String("c"), 6875 Contents: String("co"), 6876 ContentReferences: String("cr"), 6877 Deployments: String("d"), 6878 Environments: String("e"), 6879 Issues: String("i"), 6880 Metadata: String("md"), 6881 Members: String("m"), 6882 OrganizationAdministration: String("oa"), 6883 OrganizationHooks: String("oh"), 6884 OrganizationPlan: String("op"), 6885 OrganizationPreReceiveHooks: String("opr"), 6886 OrganizationProjects: String("op"), 6887 OrganizationSecrets: String("os"), 6888 OrganizationSelfHostedRunners: String("osh"), 6889 OrganizationUserBlocking: String("oub"), 6890 Packages: String("pkg"), 6891 Pages: String("pg"), 6892 PullRequests: String("pr"), 6893 RepositoryHooks: String("rh"), 6894 RepositoryProjects: String("rp"), 6895 RepositoryPreReceiveHooks: String("rprh"), 6896 Secrets: String("s"), 6897 SecretScanningAlerts: String("ssa"), 6898 SecurityEvents: String("se"), 6899 SingleFile: String("sf"), 6900 Statuses: String("s"), 6901 TeamDiscussions: String("td"), 6902 VulnerabilityAlerts: String("va"), 6903 Workflows: String("w"), 6904 }, 6905 CreatedAt: &Timestamp{referenceTime}, 6906 UpdatedAt: &Timestamp{referenceTime}, 6907 HasMultipleSingleFiles: Bool(false), 6908 SuspendedBy: &User{ 6909 Login: String("l"), 6910 ID: Int64(1), 6911 URL: String("u"), 6912 AvatarURL: String("a"), 6913 GravatarID: String("g"), 6914 Name: String("n"), 6915 Company: String("c"), 6916 Blog: String("b"), 6917 Location: String("l"), 6918 Email: String("e"), 6919 Hireable: Bool(true), 6920 Bio: String("b"), 6921 TwitterUsername: String("t"), 6922 PublicRepos: Int(1), 6923 Followers: Int(1), 6924 Following: Int(1), 6925 CreatedAt: &Timestamp{referenceTime}, 6926 SuspendedAt: &Timestamp{referenceTime}, 6927 }, 6928 SuspendedAt: &Timestamp{referenceTime}, 6929 }, 6930 } 6931 6932 want := `{ 6933 "comment": { 6934 "author_association": "aa", 6935 "body": "bo", 6936 "child_comment_count": 1, 6937 "created_at": ` + referenceTimeStr + `, 6938 "discussion_id": 1, 6939 "html_url": "hurl", 6940 "id": 1, 6941 "node_id": "nid", 6942 "parent_id": 1, 6943 "reactions": { 6944 "total_count": 1, 6945 "+1": 1, 6946 "-1": 1, 6947 "laugh": 1, 6948 "confused": 1, 6949 "heart": 1, 6950 "hooray": 1, 6951 "rocket": 1, 6952 "eyes": 1, 6953 "url": "url" 6954 }, 6955 "repository_url": "rurl", 6956 "updated_at": ` + referenceTimeStr + `, 6957 "user": { 6958 "login": "l", 6959 "id": 1, 6960 "node_id": "n", 6961 "avatar_url": "a", 6962 "url": "u", 6963 "events_url": "e", 6964 "repos_url": "r" 6965 } 6966 }, 6967 "discussion": { 6968 "repository_url": "rurl", 6969 "category": { 6970 "id": 1, 6971 "node_id": "nid", 6972 "repository_id": 1, 6973 "emoji": "emoji", 6974 "name": "name", 6975 "description": "description", 6976 "created_at": ` + referenceTimeStr + `, 6977 "updated_at": ` + referenceTimeStr + `, 6978 "slug": "slug", 6979 "is_answerable": false 6980 }, 6981 "html_url": "hurl", 6982 "id": 1, 6983 "node_id": "nurl", 6984 "number": 1, 6985 "title": "title", 6986 "user": { 6987 "login": "l", 6988 "id": 1, 6989 "node_id": "n", 6990 "avatar_url": "a", 6991 "url": "u", 6992 "events_url": "e", 6993 "repos_url": "r" 6994 }, 6995 "state": "st", 6996 "locked": false, 6997 "comments": 1, 6998 "created_at": ` + referenceTimeStr + `, 6999 "updated_at": ` + referenceTimeStr + `, 7000 "author_association": "aa", 7001 "body": "bo" 7002 }, 7003 "repository": { 7004 "id": 1, 7005 "name": "n", 7006 "url": "s" 7007 }, 7008 "organization": { 7009 "name": "n", 7010 "company": "c", 7011 "blog": "b", 7012 "location": "loc", 7013 "email": "e", 7014 "twitter_username": "tu", 7015 "description": "d", 7016 "billing_email": "be", 7017 "is_verified": true, 7018 "has_organization_projects": true, 7019 "has_repository_projects": true, 7020 "default_repository_permission": "drp", 7021 "members_can_create_repositories": true, 7022 "members_can_create_public_repositories": false, 7023 "members_can_create_private_repositories": true, 7024 "members_can_create_internal_repositories": true, 7025 "members_allowed_repository_creation_type": "marct", 7026 "members_can_create_pages": true, 7027 "members_can_create_public_pages": false, 7028 "members_can_create_private_pages": true 7029 }, 7030 "sender": { 7031 "login": "l", 7032 "id": 1, 7033 "node_id": "n", 7034 "avatar_url": "a", 7035 "url": "u", 7036 "events_url": "e", 7037 "repos_url": "r" 7038 }, 7039 "installation": { 7040 "id": 1, 7041 "node_id": "nid", 7042 "app_id": 1, 7043 "app_slug": "as", 7044 "target_id": 1, 7045 "account": { 7046 "login": "l", 7047 "id": 1, 7048 "avatar_url": "a", 7049 "gravatar_id": "g", 7050 "name": "n", 7051 "company": "c", 7052 "blog": "b", 7053 "location": "l", 7054 "email": "e", 7055 "hireable": true, 7056 "bio": "b", 7057 "twitter_username": "t", 7058 "public_repos": 1, 7059 "followers": 1, 7060 "following": 1, 7061 "created_at": ` + referenceTimeStr + `, 7062 "suspended_at": ` + referenceTimeStr + `, 7063 "url": "u" 7064 }, 7065 "access_tokens_url": "atu", 7066 "repositories_url": "ru", 7067 "html_url": "hu", 7068 "target_type": "tt", 7069 "single_file_name": "sfn", 7070 "repository_selection": "rs", 7071 "events": [ 7072 "e" 7073 ], 7074 "single_file_paths": [ 7075 "s" 7076 ], 7077 "permissions": { 7078 "actions": "a", 7079 "administration": "ad", 7080 "checks": "c", 7081 "contents": "co", 7082 "content_references": "cr", 7083 "deployments": "d", 7084 "environments": "e", 7085 "issues": "i", 7086 "metadata": "md", 7087 "members": "m", 7088 "organization_administration": "oa", 7089 "organization_hooks": "oh", 7090 "organization_plan": "op", 7091 "organization_pre_receive_hooks": "opr", 7092 "organization_projects": "op", 7093 "organization_secrets": "os", 7094 "organization_self_hosted_runners": "osh", 7095 "organization_user_blocking": "oub", 7096 "packages": "pkg", 7097 "pages": "pg", 7098 "pull_requests": "pr", 7099 "repository_hooks": "rh", 7100 "repository_projects": "rp", 7101 "repository_pre_receive_hooks": "rprh", 7102 "secrets": "s", 7103 "secret_scanning_alerts": "ssa", 7104 "security_events": "se", 7105 "single_file": "sf", 7106 "statuses": "s", 7107 "team_discussions": "td", 7108 "vulnerability_alerts": "va", 7109 "workflows": "w" 7110 }, 7111 "created_at": ` + referenceTimeStr + `, 7112 "updated_at": ` + referenceTimeStr + `, 7113 "has_multiple_single_files": false, 7114 "suspended_by": { 7115 "login": "l", 7116 "id": 1, 7117 "avatar_url": "a", 7118 "gravatar_id": "g", 7119 "name": "n", 7120 "company": "c", 7121 "blog": "b", 7122 "location": "l", 7123 "email": "e", 7124 "hireable": true, 7125 "bio": "b", 7126 "twitter_username": "t", 7127 "public_repos": 1, 7128 "followers": 1, 7129 "following": 1, 7130 "created_at": ` + referenceTimeStr + `, 7131 "suspended_at": ` + referenceTimeStr + `, 7132 "url": "u" 7133 }, 7134 "suspended_at": ` + referenceTimeStr + ` 7135 } 7136 }` 7137 7138 testJSONMarshal(t, u, want) 7139 } 7140 7141 func TestDiscussionEvent_Marshal(t *testing.T) { 7142 testJSONMarshal(t, &DiscussionEvent{}, "{}") 7143 7144 u := &DiscussionEvent{ 7145 Discussion: &Discussion{ 7146 RepositoryURL: String("rurl"), 7147 DiscussionCategory: &DiscussionCategory{ 7148 ID: Int64(1), 7149 NodeID: String("nid"), 7150 RepositoryID: Int64(1), 7151 Emoji: String("emoji"), 7152 Name: String("name"), 7153 Description: String("description"), 7154 CreatedAt: &Timestamp{referenceTime}, 7155 UpdatedAt: &Timestamp{referenceTime}, 7156 Slug: String("slug"), 7157 IsAnswerable: Bool(false), 7158 }, 7159 HTMLURL: String("hurl"), 7160 ID: Int64(1), 7161 NodeID: String("nurl"), 7162 Number: Int(1), 7163 Title: String("title"), 7164 User: &User{ 7165 Login: String("l"), 7166 ID: Int64(1), 7167 NodeID: String("n"), 7168 URL: String("u"), 7169 ReposURL: String("r"), 7170 EventsURL: String("e"), 7171 AvatarURL: String("a"), 7172 }, 7173 State: String("st"), 7174 Locked: Bool(false), 7175 Comments: Int(1), 7176 CreatedAt: &Timestamp{referenceTime}, 7177 UpdatedAt: &Timestamp{referenceTime}, 7178 AuthorAssociation: String("aa"), 7179 Body: String("bo"), 7180 }, 7181 Repo: &Repository{ 7182 ID: Int64(1), 7183 URL: String("s"), 7184 Name: String("n"), 7185 }, 7186 Org: &Organization{ 7187 BillingEmail: String("be"), 7188 Blog: String("b"), 7189 Company: String("c"), 7190 Email: String("e"), 7191 TwitterUsername: String("tu"), 7192 Location: String("loc"), 7193 Name: String("n"), 7194 Description: String("d"), 7195 IsVerified: Bool(true), 7196 HasOrganizationProjects: Bool(true), 7197 HasRepositoryProjects: Bool(true), 7198 DefaultRepoPermission: String("drp"), 7199 MembersCanCreateRepos: Bool(true), 7200 MembersCanCreateInternalRepos: Bool(true), 7201 MembersCanCreatePrivateRepos: Bool(true), 7202 MembersCanCreatePublicRepos: Bool(false), 7203 MembersAllowedRepositoryCreationType: String("marct"), 7204 MembersCanCreatePages: Bool(true), 7205 MembersCanCreatePublicPages: Bool(false), 7206 MembersCanCreatePrivatePages: Bool(true), 7207 }, 7208 Sender: &User{ 7209 Login: String("l"), 7210 ID: Int64(1), 7211 NodeID: String("n"), 7212 URL: String("u"), 7213 ReposURL: String("r"), 7214 EventsURL: String("e"), 7215 AvatarURL: String("a"), 7216 }, 7217 Installation: &Installation{ 7218 ID: Int64(1), 7219 NodeID: String("nid"), 7220 AppID: Int64(1), 7221 AppSlug: String("as"), 7222 TargetID: Int64(1), 7223 Account: &User{ 7224 Login: String("l"), 7225 ID: Int64(1), 7226 URL: String("u"), 7227 AvatarURL: String("a"), 7228 GravatarID: String("g"), 7229 Name: String("n"), 7230 Company: String("c"), 7231 Blog: String("b"), 7232 Location: String("l"), 7233 Email: String("e"), 7234 Hireable: Bool(true), 7235 Bio: String("b"), 7236 TwitterUsername: String("t"), 7237 PublicRepos: Int(1), 7238 Followers: Int(1), 7239 Following: Int(1), 7240 CreatedAt: &Timestamp{referenceTime}, 7241 SuspendedAt: &Timestamp{referenceTime}, 7242 }, 7243 AccessTokensURL: String("atu"), 7244 RepositoriesURL: String("ru"), 7245 HTMLURL: String("hu"), 7246 TargetType: String("tt"), 7247 SingleFileName: String("sfn"), 7248 RepositorySelection: String("rs"), 7249 Events: []string{"e"}, 7250 SingleFilePaths: []string{"s"}, 7251 Permissions: &InstallationPermissions{ 7252 Actions: String("a"), 7253 Administration: String("ad"), 7254 Checks: String("c"), 7255 Contents: String("co"), 7256 ContentReferences: String("cr"), 7257 Deployments: String("d"), 7258 Environments: String("e"), 7259 Issues: String("i"), 7260 Metadata: String("md"), 7261 Members: String("m"), 7262 OrganizationAdministration: String("oa"), 7263 OrganizationHooks: String("oh"), 7264 OrganizationPlan: String("op"), 7265 OrganizationPreReceiveHooks: String("opr"), 7266 OrganizationProjects: String("op"), 7267 OrganizationSecrets: String("os"), 7268 OrganizationSelfHostedRunners: String("osh"), 7269 OrganizationUserBlocking: String("oub"), 7270 Packages: String("pkg"), 7271 Pages: String("pg"), 7272 PullRequests: String("pr"), 7273 RepositoryHooks: String("rh"), 7274 RepositoryProjects: String("rp"), 7275 RepositoryPreReceiveHooks: String("rprh"), 7276 Secrets: String("s"), 7277 SecretScanningAlerts: String("ssa"), 7278 SecurityEvents: String("se"), 7279 SingleFile: String("sf"), 7280 Statuses: String("s"), 7281 TeamDiscussions: String("td"), 7282 VulnerabilityAlerts: String("va"), 7283 Workflows: String("w"), 7284 }, 7285 CreatedAt: &Timestamp{referenceTime}, 7286 UpdatedAt: &Timestamp{referenceTime}, 7287 HasMultipleSingleFiles: Bool(false), 7288 SuspendedBy: &User{ 7289 Login: String("l"), 7290 ID: Int64(1), 7291 URL: String("u"), 7292 AvatarURL: String("a"), 7293 GravatarID: String("g"), 7294 Name: String("n"), 7295 Company: String("c"), 7296 Blog: String("b"), 7297 Location: String("l"), 7298 Email: String("e"), 7299 Hireable: Bool(true), 7300 Bio: String("b"), 7301 TwitterUsername: String("t"), 7302 PublicRepos: Int(1), 7303 Followers: Int(1), 7304 Following: Int(1), 7305 CreatedAt: &Timestamp{referenceTime}, 7306 SuspendedAt: &Timestamp{referenceTime}, 7307 }, 7308 SuspendedAt: &Timestamp{referenceTime}, 7309 }, 7310 } 7311 7312 want := `{ 7313 "discussion": { 7314 "repository_url": "rurl", 7315 "category": { 7316 "id": 1, 7317 "node_id": "nid", 7318 "repository_id": 1, 7319 "emoji": "emoji", 7320 "name": "name", 7321 "description": "description", 7322 "created_at": ` + referenceTimeStr + `, 7323 "updated_at": ` + referenceTimeStr + `, 7324 "slug": "slug", 7325 "is_answerable": false 7326 }, 7327 "html_url": "hurl", 7328 "id": 1, 7329 "node_id": "nurl", 7330 "number": 1, 7331 "title": "title", 7332 "user": { 7333 "login": "l", 7334 "id": 1, 7335 "node_id": "n", 7336 "avatar_url": "a", 7337 "url": "u", 7338 "events_url": "e", 7339 "repos_url": "r" 7340 }, 7341 "state": "st", 7342 "locked": false, 7343 "comments": 1, 7344 "created_at": ` + referenceTimeStr + `, 7345 "updated_at": ` + referenceTimeStr + `, 7346 "author_association": "aa", 7347 "body": "bo" 7348 }, 7349 "repository": { 7350 "id": 1, 7351 "name": "n", 7352 "url": "s" 7353 }, 7354 "organization": { 7355 "name": "n", 7356 "company": "c", 7357 "blog": "b", 7358 "location": "loc", 7359 "email": "e", 7360 "twitter_username": "tu", 7361 "description": "d", 7362 "billing_email": "be", 7363 "is_verified": true, 7364 "has_organization_projects": true, 7365 "has_repository_projects": true, 7366 "default_repository_permission": "drp", 7367 "members_can_create_repositories": true, 7368 "members_can_create_public_repositories": false, 7369 "members_can_create_private_repositories": true, 7370 "members_can_create_internal_repositories": true, 7371 "members_allowed_repository_creation_type": "marct", 7372 "members_can_create_pages": true, 7373 "members_can_create_public_pages": false, 7374 "members_can_create_private_pages": true 7375 }, 7376 "sender": { 7377 "login": "l", 7378 "id": 1, 7379 "node_id": "n", 7380 "avatar_url": "a", 7381 "url": "u", 7382 "events_url": "e", 7383 "repos_url": "r" 7384 }, 7385 "installation": { 7386 "id": 1, 7387 "node_id": "nid", 7388 "app_id": 1, 7389 "app_slug": "as", 7390 "target_id": 1, 7391 "account": { 7392 "login": "l", 7393 "id": 1, 7394 "avatar_url": "a", 7395 "gravatar_id": "g", 7396 "name": "n", 7397 "company": "c", 7398 "blog": "b", 7399 "location": "l", 7400 "email": "e", 7401 "hireable": true, 7402 "bio": "b", 7403 "twitter_username": "t", 7404 "public_repos": 1, 7405 "followers": 1, 7406 "following": 1, 7407 "created_at": ` + referenceTimeStr + `, 7408 "suspended_at": ` + referenceTimeStr + `, 7409 "url": "u" 7410 }, 7411 "access_tokens_url": "atu", 7412 "repositories_url": "ru", 7413 "html_url": "hu", 7414 "target_type": "tt", 7415 "single_file_name": "sfn", 7416 "repository_selection": "rs", 7417 "events": [ 7418 "e" 7419 ], 7420 "single_file_paths": [ 7421 "s" 7422 ], 7423 "permissions": { 7424 "actions": "a", 7425 "administration": "ad", 7426 "checks": "c", 7427 "contents": "co", 7428 "content_references": "cr", 7429 "deployments": "d", 7430 "environments": "e", 7431 "issues": "i", 7432 "metadata": "md", 7433 "members": "m", 7434 "organization_administration": "oa", 7435 "organization_hooks": "oh", 7436 "organization_plan": "op", 7437 "organization_pre_receive_hooks": "opr", 7438 "organization_projects": "op", 7439 "organization_secrets": "os", 7440 "organization_self_hosted_runners": "osh", 7441 "organization_user_blocking": "oub", 7442 "packages": "pkg", 7443 "pages": "pg", 7444 "pull_requests": "pr", 7445 "repository_hooks": "rh", 7446 "repository_projects": "rp", 7447 "repository_pre_receive_hooks": "rprh", 7448 "secrets": "s", 7449 "secret_scanning_alerts": "ssa", 7450 "security_events": "se", 7451 "single_file": "sf", 7452 "statuses": "s", 7453 "team_discussions": "td", 7454 "vulnerability_alerts": "va", 7455 "workflows": "w" 7456 }, 7457 "created_at": ` + referenceTimeStr + `, 7458 "updated_at": ` + referenceTimeStr + `, 7459 "has_multiple_single_files": false, 7460 "suspended_by": { 7461 "login": "l", 7462 "id": 1, 7463 "avatar_url": "a", 7464 "gravatar_id": "g", 7465 "name": "n", 7466 "company": "c", 7467 "blog": "b", 7468 "location": "l", 7469 "email": "e", 7470 "hireable": true, 7471 "bio": "b", 7472 "twitter_username": "t", 7473 "public_repos": 1, 7474 "followers": 1, 7475 "following": 1, 7476 "created_at": ` + referenceTimeStr + `, 7477 "suspended_at": ` + referenceTimeStr + `, 7478 "url": "u" 7479 }, 7480 "suspended_at": ` + referenceTimeStr + ` 7481 } 7482 }` 7483 7484 testJSONMarshal(t, u, want) 7485 } 7486 7487 func TestPackageEvent_Marshal(t *testing.T) { 7488 testJSONMarshal(t, &PackageEvent{}, "{}") 7489 7490 u := &PackageEvent{ 7491 Action: String("a"), 7492 Package: &Package{ 7493 ID: Int64(1), 7494 Name: String("n"), 7495 PackageType: String("pt"), 7496 HTMLURL: String("hurl"), 7497 CreatedAt: &Timestamp{referenceTime}, 7498 UpdatedAt: &Timestamp{referenceTime}, 7499 Owner: &User{ 7500 Login: String("l"), 7501 ID: Int64(1), 7502 NodeID: String("n"), 7503 URL: String("u"), 7504 ReposURL: String("r"), 7505 EventsURL: String("e"), 7506 AvatarURL: String("a"), 7507 }, 7508 PackageVersion: &PackageVersion{ID: Int64(1)}, 7509 Registry: &PackageRegistry{Name: String("n")}, 7510 }, 7511 Repo: &Repository{ 7512 ID: Int64(1), 7513 URL: String("s"), 7514 Name: String("n"), 7515 }, 7516 Org: &Organization{ 7517 BillingEmail: String("be"), 7518 Blog: String("b"), 7519 Company: String("c"), 7520 Email: String("e"), 7521 TwitterUsername: String("tu"), 7522 Location: String("loc"), 7523 Name: String("n"), 7524 Description: String("d"), 7525 IsVerified: Bool(true), 7526 HasOrganizationProjects: Bool(true), 7527 HasRepositoryProjects: Bool(true), 7528 DefaultRepoPermission: String("drp"), 7529 MembersCanCreateRepos: Bool(true), 7530 MembersCanCreateInternalRepos: Bool(true), 7531 MembersCanCreatePrivateRepos: Bool(true), 7532 MembersCanCreatePublicRepos: Bool(false), 7533 MembersAllowedRepositoryCreationType: String("marct"), 7534 MembersCanCreatePages: Bool(true), 7535 MembersCanCreatePublicPages: Bool(false), 7536 MembersCanCreatePrivatePages: Bool(true), 7537 }, 7538 Sender: &User{ 7539 Login: String("l"), 7540 ID: Int64(1), 7541 NodeID: String("n"), 7542 URL: String("u"), 7543 ReposURL: String("r"), 7544 EventsURL: String("e"), 7545 AvatarURL: String("a"), 7546 }, 7547 } 7548 7549 want := `{ 7550 "action": "a", 7551 "package": { 7552 "id": 1, 7553 "name": "n", 7554 "package_type": "pt", 7555 "html_url": "hurl", 7556 "created_at": ` + referenceTimeStr + `, 7557 "updated_at": ` + referenceTimeStr + `, 7558 "owner": { 7559 "login": "l", 7560 "id": 1, 7561 "node_id": "n", 7562 "avatar_url": "a", 7563 "url": "u", 7564 "events_url": "e", 7565 "repos_url": "r" 7566 }, 7567 "package_version": { 7568 "id": 1 7569 }, 7570 "registry": { 7571 "name": "n" 7572 } 7573 }, 7574 "repository": { 7575 "id": 1, 7576 "name": "n", 7577 "url": "s" 7578 }, 7579 "organization": { 7580 "name": "n", 7581 "company": "c", 7582 "blog": "b", 7583 "location": "loc", 7584 "email": "e", 7585 "twitter_username": "tu", 7586 "description": "d", 7587 "billing_email": "be", 7588 "is_verified": true, 7589 "has_organization_projects": true, 7590 "has_repository_projects": true, 7591 "default_repository_permission": "drp", 7592 "members_can_create_repositories": true, 7593 "members_can_create_public_repositories": false, 7594 "members_can_create_private_repositories": true, 7595 "members_can_create_internal_repositories": true, 7596 "members_allowed_repository_creation_type": "marct", 7597 "members_can_create_pages": true, 7598 "members_can_create_public_pages": false, 7599 "members_can_create_private_pages": true 7600 }, 7601 "sender": { 7602 "login": "l", 7603 "id": 1, 7604 "node_id": "n", 7605 "avatar_url": "a", 7606 "url": "u", 7607 "events_url": "e", 7608 "repos_url": "r" 7609 } 7610 }` 7611 7612 testJSONMarshal(t, u, want) 7613 } 7614 7615 func TestPersonalAccessTokenRequestEvent_Marshal(t *testing.T) { 7616 testJSONMarshal(t, &PersonalAccessTokenRequestEvent{}, "{}") 7617 7618 event := &PersonalAccessTokenRequestEvent{ 7619 Action: String("a"), 7620 PersonalAccessTokenRequest: &PersonalAccessTokenRequest{ 7621 ID: Int64(1), 7622 Owner: &User{Login: String("l")}, 7623 PermissionsAdded: &PersonalAccessTokenPermissions{ 7624 Org: map[string]string{"organization_events": "read"}, 7625 Repo: map[string]string{"security_events": "write"}, 7626 }, 7627 CreatedAt: &Timestamp{referenceTime}, 7628 TokenExpired: Bool(false), 7629 TokenExpiresAt: &Timestamp{referenceTime}, 7630 TokenLastUsedAt: &Timestamp{referenceTime}, 7631 RepositoryCount: Int64(1), 7632 RepositorySelection: String("rs"), 7633 Repositories: []*Repository{ 7634 { 7635 Name: String("n"), 7636 }, 7637 }, 7638 }, 7639 Org: &Organization{Name: String("n")}, 7640 Sender: &User{ 7641 Login: String("l"), 7642 }, 7643 Installation: &Installation{ 7644 ID: Int64(1), 7645 }, 7646 } 7647 7648 want := `{ 7649 "action": "a", 7650 "personal_access_token_request": { 7651 "id": 1, 7652 "owner": { 7653 "login": "l" 7654 }, 7655 "permissions_added": { 7656 "organization": { 7657 "organization_events": "read" 7658 }, 7659 "repository": { 7660 "security_events": "write" 7661 } 7662 }, 7663 "created_at": ` + referenceTimeStr + `, 7664 "token_expired": false, 7665 "token_expires_at": ` + referenceTimeStr + `, 7666 "token_last_used_at": ` + referenceTimeStr + `, 7667 "repository_count": 1, 7668 "repository_selection": "rs", 7669 "repositories": [ 7670 { 7671 "name": "n" 7672 } 7673 ] 7674 }, 7675 "organization": { 7676 "name": "n" 7677 }, 7678 "sender": { 7679 "login": "l" 7680 }, 7681 "installation": { 7682 "id": 1 7683 } 7684 }` 7685 7686 testJSONMarshal(t, event, want) 7687 } 7688 7689 func TestPingEvent_Marshal(t *testing.T) { 7690 testJSONMarshal(t, &PingEvent{}, "{}") 7691 7692 l := make(map[string]interface{}) 7693 l["key"] = "value" 7694 hookConfig := new(HookConfig) 7695 7696 u := &PingEvent{ 7697 Zen: String("z"), 7698 HookID: Int64(1), 7699 Hook: &Hook{ 7700 CreatedAt: &Timestamp{referenceTime}, 7701 UpdatedAt: &Timestamp{referenceTime}, 7702 URL: String("url"), 7703 ID: Int64(1), 7704 Type: String("t"), 7705 Name: String("n"), 7706 TestURL: String("tu"), 7707 PingURL: String("pu"), 7708 LastResponse: l, 7709 Config: hookConfig, 7710 Events: []string{"a"}, 7711 Active: Bool(true), 7712 }, 7713 Installation: &Installation{ 7714 ID: Int64(1), 7715 NodeID: String("nid"), 7716 AppID: Int64(1), 7717 AppSlug: String("as"), 7718 TargetID: Int64(1), 7719 Account: &User{ 7720 Login: String("l"), 7721 ID: Int64(1), 7722 URL: String("u"), 7723 AvatarURL: String("a"), 7724 GravatarID: String("g"), 7725 Name: String("n"), 7726 Company: String("c"), 7727 Blog: String("b"), 7728 Location: String("l"), 7729 Email: String("e"), 7730 Hireable: Bool(true), 7731 Bio: String("b"), 7732 TwitterUsername: String("t"), 7733 PublicRepos: Int(1), 7734 Followers: Int(1), 7735 Following: Int(1), 7736 CreatedAt: &Timestamp{referenceTime}, 7737 SuspendedAt: &Timestamp{referenceTime}, 7738 }, 7739 AccessTokensURL: String("atu"), 7740 RepositoriesURL: String("ru"), 7741 HTMLURL: String("hu"), 7742 TargetType: String("tt"), 7743 SingleFileName: String("sfn"), 7744 RepositorySelection: String("rs"), 7745 Events: []string{"e"}, 7746 SingleFilePaths: []string{"s"}, 7747 Permissions: &InstallationPermissions{ 7748 Actions: String("a"), 7749 Administration: String("ad"), 7750 Checks: String("c"), 7751 Contents: String("co"), 7752 ContentReferences: String("cr"), 7753 Deployments: String("d"), 7754 Environments: String("e"), 7755 Issues: String("i"), 7756 Metadata: String("md"), 7757 Members: String("m"), 7758 OrganizationAdministration: String("oa"), 7759 OrganizationHooks: String("oh"), 7760 OrganizationPlan: String("op"), 7761 OrganizationPreReceiveHooks: String("opr"), 7762 OrganizationProjects: String("op"), 7763 OrganizationSecrets: String("os"), 7764 OrganizationSelfHostedRunners: String("osh"), 7765 OrganizationUserBlocking: String("oub"), 7766 Packages: String("pkg"), 7767 Pages: String("pg"), 7768 PullRequests: String("pr"), 7769 RepositoryHooks: String("rh"), 7770 RepositoryProjects: String("rp"), 7771 RepositoryPreReceiveHooks: String("rprh"), 7772 Secrets: String("s"), 7773 SecretScanningAlerts: String("ssa"), 7774 SecurityEvents: String("se"), 7775 SingleFile: String("sf"), 7776 Statuses: String("s"), 7777 TeamDiscussions: String("td"), 7778 VulnerabilityAlerts: String("va"), 7779 Workflows: String("w"), 7780 }, 7781 CreatedAt: &Timestamp{referenceTime}, 7782 UpdatedAt: &Timestamp{referenceTime}, 7783 HasMultipleSingleFiles: Bool(false), 7784 SuspendedBy: &User{ 7785 Login: String("l"), 7786 ID: Int64(1), 7787 URL: String("u"), 7788 AvatarURL: String("a"), 7789 GravatarID: String("g"), 7790 Name: String("n"), 7791 Company: String("c"), 7792 Blog: String("b"), 7793 Location: String("l"), 7794 Email: String("e"), 7795 Hireable: Bool(true), 7796 Bio: String("b"), 7797 TwitterUsername: String("t"), 7798 PublicRepos: Int(1), 7799 Followers: Int(1), 7800 Following: Int(1), 7801 CreatedAt: &Timestamp{referenceTime}, 7802 SuspendedAt: &Timestamp{referenceTime}, 7803 }, 7804 SuspendedAt: &Timestamp{referenceTime}, 7805 }, 7806 } 7807 7808 want := `{ 7809 "zen": "z", 7810 "hook_id": 1, 7811 "hook": { 7812 "created_at": ` + referenceTimeStr + `, 7813 "updated_at": ` + referenceTimeStr + `, 7814 "url": "url", 7815 "id": 1, 7816 "type": "t", 7817 "name": "n", 7818 "test_url": "tu", 7819 "ping_url": "pu", 7820 "last_response": { 7821 "key": "value" 7822 }, 7823 "config": { 7824 "key": "value" 7825 }, 7826 "events": [ 7827 "a" 7828 ], 7829 "active": true 7830 }, 7831 "installation": { 7832 "id": 1, 7833 "node_id": "nid", 7834 "app_id": 1, 7835 "app_slug": "as", 7836 "target_id": 1, 7837 "account": { 7838 "login": "l", 7839 "id": 1, 7840 "avatar_url": "a", 7841 "gravatar_id": "g", 7842 "name": "n", 7843 "company": "c", 7844 "blog": "b", 7845 "location": "l", 7846 "email": "e", 7847 "hireable": true, 7848 "bio": "b", 7849 "twitter_username": "t", 7850 "public_repos": 1, 7851 "followers": 1, 7852 "following": 1, 7853 "created_at": ` + referenceTimeStr + `, 7854 "suspended_at": ` + referenceTimeStr + `, 7855 "url": "u" 7856 }, 7857 "access_tokens_url": "atu", 7858 "repositories_url": "ru", 7859 "html_url": "hu", 7860 "target_type": "tt", 7861 "single_file_name": "sfn", 7862 "repository_selection": "rs", 7863 "events": [ 7864 "e" 7865 ], 7866 "single_file_paths": [ 7867 "s" 7868 ], 7869 "permissions": { 7870 "actions": "a", 7871 "administration": "ad", 7872 "checks": "c", 7873 "contents": "co", 7874 "content_references": "cr", 7875 "deployments": "d", 7876 "environments": "e", 7877 "issues": "i", 7878 "metadata": "md", 7879 "members": "m", 7880 "organization_administration": "oa", 7881 "organization_hooks": "oh", 7882 "organization_plan": "op", 7883 "organization_pre_receive_hooks": "opr", 7884 "organization_projects": "op", 7885 "organization_secrets": "os", 7886 "organization_self_hosted_runners": "osh", 7887 "organization_user_blocking": "oub", 7888 "packages": "pkg", 7889 "pages": "pg", 7890 "pull_requests": "pr", 7891 "repository_hooks": "rh", 7892 "repository_projects": "rp", 7893 "repository_pre_receive_hooks": "rprh", 7894 "secrets": "s", 7895 "secret_scanning_alerts": "ssa", 7896 "security_events": "se", 7897 "single_file": "sf", 7898 "statuses": "s", 7899 "team_discussions": "td", 7900 "vulnerability_alerts": "va", 7901 "workflows": "w" 7902 }, 7903 "created_at": ` + referenceTimeStr + `, 7904 "updated_at": ` + referenceTimeStr + `, 7905 "has_multiple_single_files": false, 7906 "suspended_by": { 7907 "login": "l", 7908 "id": 1, 7909 "avatar_url": "a", 7910 "gravatar_id": "g", 7911 "name": "n", 7912 "company": "c", 7913 "blog": "b", 7914 "location": "l", 7915 "email": "e", 7916 "hireable": true, 7917 "bio": "b", 7918 "twitter_username": "t", 7919 "public_repos": 1, 7920 "followers": 1, 7921 "following": 1, 7922 "created_at": ` + referenceTimeStr + `, 7923 "suspended_at": ` + referenceTimeStr + `, 7924 "url": "u" 7925 }, 7926 "suspended_at": ` + referenceTimeStr + ` 7927 } 7928 }` 7929 7930 testJSONMarshal(t, u, want) 7931 } 7932 7933 func TestRepositoryDispatchEvent_Marshal(t *testing.T) { 7934 testJSONMarshal(t, &RepositoryDispatchEvent{}, "{}") 7935 7936 l := make(map[string]interface{}) 7937 l["key"] = "value" 7938 7939 jsonMsg, _ := json.Marshal(&l) 7940 7941 u := &RepositoryDispatchEvent{ 7942 Action: String("a"), 7943 Branch: String("b"), 7944 ClientPayload: jsonMsg, 7945 Repo: &Repository{ 7946 7947 ID: Int64(1), 7948 URL: String("s"), 7949 Name: String("n"), 7950 }, 7951 Org: &Organization{ 7952 BillingEmail: String("be"), 7953 Blog: String("b"), 7954 Company: String("c"), 7955 Email: String("e"), 7956 TwitterUsername: String("tu"), 7957 Location: String("loc"), 7958 Name: String("n"), 7959 Description: String("d"), 7960 IsVerified: Bool(true), 7961 HasOrganizationProjects: Bool(true), 7962 HasRepositoryProjects: Bool(true), 7963 DefaultRepoPermission: String("drp"), 7964 MembersCanCreateRepos: Bool(true), 7965 MembersCanCreateInternalRepos: Bool(true), 7966 MembersCanCreatePrivateRepos: Bool(true), 7967 MembersCanCreatePublicRepos: Bool(false), 7968 MembersAllowedRepositoryCreationType: String("marct"), 7969 MembersCanCreatePages: Bool(true), 7970 MembersCanCreatePublicPages: Bool(false), 7971 MembersCanCreatePrivatePages: Bool(true), 7972 }, 7973 Sender: &User{ 7974 Login: String("l"), 7975 ID: Int64(1), 7976 NodeID: String("n"), 7977 URL: String("u"), 7978 ReposURL: String("r"), 7979 EventsURL: String("e"), 7980 AvatarURL: String("a"), 7981 }, 7982 Installation: &Installation{ 7983 ID: Int64(1), 7984 NodeID: String("nid"), 7985 AppID: Int64(1), 7986 AppSlug: String("as"), 7987 TargetID: Int64(1), 7988 Account: &User{ 7989 Login: String("l"), 7990 ID: Int64(1), 7991 URL: String("u"), 7992 AvatarURL: String("a"), 7993 GravatarID: String("g"), 7994 Name: String("n"), 7995 Company: String("c"), 7996 Blog: String("b"), 7997 Location: String("l"), 7998 Email: String("e"), 7999 Hireable: Bool(true), 8000 Bio: String("b"), 8001 TwitterUsername: String("t"), 8002 PublicRepos: Int(1), 8003 Followers: Int(1), 8004 Following: Int(1), 8005 CreatedAt: &Timestamp{referenceTime}, 8006 SuspendedAt: &Timestamp{referenceTime}, 8007 }, 8008 AccessTokensURL: String("atu"), 8009 RepositoriesURL: String("ru"), 8010 HTMLURL: String("hu"), 8011 TargetType: String("tt"), 8012 SingleFileName: String("sfn"), 8013 RepositorySelection: String("rs"), 8014 Events: []string{"e"}, 8015 SingleFilePaths: []string{"s"}, 8016 Permissions: &InstallationPermissions{ 8017 Actions: String("a"), 8018 Administration: String("ad"), 8019 Checks: String("c"), 8020 Contents: String("co"), 8021 ContentReferences: String("cr"), 8022 Deployments: String("d"), 8023 Environments: String("e"), 8024 Issues: String("i"), 8025 Metadata: String("md"), 8026 Members: String("m"), 8027 OrganizationAdministration: String("oa"), 8028 OrganizationHooks: String("oh"), 8029 OrganizationPlan: String("op"), 8030 OrganizationPreReceiveHooks: String("opr"), 8031 OrganizationProjects: String("op"), 8032 OrganizationSecrets: String("os"), 8033 OrganizationSelfHostedRunners: String("osh"), 8034 OrganizationUserBlocking: String("oub"), 8035 Packages: String("pkg"), 8036 Pages: String("pg"), 8037 PullRequests: String("pr"), 8038 RepositoryHooks: String("rh"), 8039 RepositoryProjects: String("rp"), 8040 RepositoryPreReceiveHooks: String("rprh"), 8041 Secrets: String("s"), 8042 SecretScanningAlerts: String("ssa"), 8043 SecurityEvents: String("se"), 8044 SingleFile: String("sf"), 8045 Statuses: String("s"), 8046 TeamDiscussions: String("td"), 8047 VulnerabilityAlerts: String("va"), 8048 Workflows: String("w"), 8049 }, 8050 CreatedAt: &Timestamp{referenceTime}, 8051 UpdatedAt: &Timestamp{referenceTime}, 8052 HasMultipleSingleFiles: Bool(false), 8053 SuspendedBy: &User{ 8054 Login: String("l"), 8055 ID: Int64(1), 8056 URL: String("u"), 8057 AvatarURL: String("a"), 8058 GravatarID: String("g"), 8059 Name: String("n"), 8060 Company: String("c"), 8061 Blog: String("b"), 8062 Location: String("l"), 8063 Email: String("e"), 8064 Hireable: Bool(true), 8065 Bio: String("b"), 8066 TwitterUsername: String("t"), 8067 PublicRepos: Int(1), 8068 Followers: Int(1), 8069 Following: Int(1), 8070 CreatedAt: &Timestamp{referenceTime}, 8071 SuspendedAt: &Timestamp{referenceTime}, 8072 }, 8073 SuspendedAt: &Timestamp{referenceTime}, 8074 }, 8075 } 8076 8077 want := `{ 8078 "action": "a", 8079 "branch": "b", 8080 "client_payload": { 8081 "key": "value" 8082 }, 8083 "repository": { 8084 "id": 1, 8085 "name": "n", 8086 "url": "s" 8087 }, 8088 "organization": { 8089 "name": "n", 8090 "company": "c", 8091 "blog": "b", 8092 "location": "loc", 8093 "email": "e", 8094 "twitter_username": "tu", 8095 "description": "d", 8096 "billing_email": "be", 8097 "is_verified": true, 8098 "has_organization_projects": true, 8099 "has_repository_projects": true, 8100 "default_repository_permission": "drp", 8101 "members_can_create_repositories": true, 8102 "members_can_create_public_repositories": false, 8103 "members_can_create_private_repositories": true, 8104 "members_can_create_internal_repositories": true, 8105 "members_allowed_repository_creation_type": "marct", 8106 "members_can_create_pages": true, 8107 "members_can_create_public_pages": false, 8108 "members_can_create_private_pages": true 8109 }, 8110 "sender": { 8111 "login": "l", 8112 "id": 1, 8113 "node_id": "n", 8114 "avatar_url": "a", 8115 "url": "u", 8116 "events_url": "e", 8117 "repos_url": "r" 8118 }, 8119 "installation": { 8120 "id": 1, 8121 "node_id": "nid", 8122 "app_id": 1, 8123 "app_slug": "as", 8124 "target_id": 1, 8125 "account": { 8126 "login": "l", 8127 "id": 1, 8128 "avatar_url": "a", 8129 "gravatar_id": "g", 8130 "name": "n", 8131 "company": "c", 8132 "blog": "b", 8133 "location": "l", 8134 "email": "e", 8135 "hireable": true, 8136 "bio": "b", 8137 "twitter_username": "t", 8138 "public_repos": 1, 8139 "followers": 1, 8140 "following": 1, 8141 "created_at": ` + referenceTimeStr + `, 8142 "suspended_at": ` + referenceTimeStr + `, 8143 "url": "u" 8144 }, 8145 "access_tokens_url": "atu", 8146 "repositories_url": "ru", 8147 "html_url": "hu", 8148 "target_type": "tt", 8149 "single_file_name": "sfn", 8150 "repository_selection": "rs", 8151 "events": [ 8152 "e" 8153 ], 8154 "single_file_paths": [ 8155 "s" 8156 ], 8157 "permissions": { 8158 "actions": "a", 8159 "administration": "ad", 8160 "checks": "c", 8161 "contents": "co", 8162 "content_references": "cr", 8163 "deployments": "d", 8164 "environments": "e", 8165 "issues": "i", 8166 "metadata": "md", 8167 "members": "m", 8168 "organization_administration": "oa", 8169 "organization_hooks": "oh", 8170 "organization_plan": "op", 8171 "organization_pre_receive_hooks": "opr", 8172 "organization_projects": "op", 8173 "organization_secrets": "os", 8174 "organization_self_hosted_runners": "osh", 8175 "organization_user_blocking": "oub", 8176 "packages": "pkg", 8177 "pages": "pg", 8178 "pull_requests": "pr", 8179 "repository_hooks": "rh", 8180 "repository_projects": "rp", 8181 "repository_pre_receive_hooks": "rprh", 8182 "secrets": "s", 8183 "secret_scanning_alerts": "ssa", 8184 "security_events": "se", 8185 "single_file": "sf", 8186 "statuses": "s", 8187 "team_discussions": "td", 8188 "vulnerability_alerts": "va", 8189 "workflows": "w" 8190 }, 8191 "created_at": ` + referenceTimeStr + `, 8192 "updated_at": ` + referenceTimeStr + `, 8193 "has_multiple_single_files": false, 8194 "suspended_by": { 8195 "login": "l", 8196 "id": 1, 8197 "avatar_url": "a", 8198 "gravatar_id": "g", 8199 "name": "n", 8200 "company": "c", 8201 "blog": "b", 8202 "location": "l", 8203 "email": "e", 8204 "hireable": true, 8205 "bio": "b", 8206 "twitter_username": "t", 8207 "public_repos": 1, 8208 "followers": 1, 8209 "following": 1, 8210 "created_at": ` + referenceTimeStr + `, 8211 "suspended_at": ` + referenceTimeStr + `, 8212 "url": "u" 8213 }, 8214 "suspended_at": ` + referenceTimeStr + ` 8215 } 8216 }` 8217 8218 testJSONMarshal(t, u, want) 8219 } 8220 8221 func TestRepositoryImportEvent_Marshal(t *testing.T) { 8222 testJSONMarshal(t, &RepositoryImportEvent{}, "{}") 8223 8224 u := &RepositoryImportEvent{ 8225 Status: String("success"), 8226 Repo: &Repository{ 8227 ID: Int64(1), 8228 URL: String("s"), 8229 Name: String("n"), 8230 }, 8231 Org: &Organization{ 8232 BillingEmail: String("be"), 8233 Blog: String("b"), 8234 Company: String("c"), 8235 Email: String("e"), 8236 TwitterUsername: String("tu"), 8237 Location: String("loc"), 8238 Name: String("n"), 8239 Description: String("d"), 8240 IsVerified: Bool(true), 8241 HasOrganizationProjects: Bool(true), 8242 HasRepositoryProjects: Bool(true), 8243 DefaultRepoPermission: String("drp"), 8244 MembersCanCreateRepos: Bool(true), 8245 MembersCanCreateInternalRepos: Bool(true), 8246 MembersCanCreatePrivateRepos: Bool(true), 8247 MembersCanCreatePublicRepos: Bool(false), 8248 MembersAllowedRepositoryCreationType: String("marct"), 8249 MembersCanCreatePages: Bool(true), 8250 MembersCanCreatePublicPages: Bool(false), 8251 MembersCanCreatePrivatePages: Bool(true), 8252 }, 8253 Sender: &User{ 8254 Login: String("l"), 8255 ID: Int64(1), 8256 NodeID: String("n"), 8257 URL: String("u"), 8258 ReposURL: String("r"), 8259 EventsURL: String("e"), 8260 AvatarURL: String("a"), 8261 }, 8262 } 8263 8264 want := `{ 8265 "status": "success", 8266 "repository": { 8267 "id": 1, 8268 "name": "n", 8269 "url": "s" 8270 }, 8271 "organization": { 8272 "name": "n", 8273 "company": "c", 8274 "blog": "b", 8275 "location": "loc", 8276 "email": "e", 8277 "twitter_username": "tu", 8278 "description": "d", 8279 "billing_email": "be", 8280 "is_verified": true, 8281 "has_organization_projects": true, 8282 "has_repository_projects": true, 8283 "default_repository_permission": "drp", 8284 "members_can_create_repositories": true, 8285 "members_can_create_public_repositories": false, 8286 "members_can_create_private_repositories": true, 8287 "members_can_create_internal_repositories": true, 8288 "members_allowed_repository_creation_type": "marct", 8289 "members_can_create_pages": true, 8290 "members_can_create_public_pages": false, 8291 "members_can_create_private_pages": true 8292 }, 8293 "sender": { 8294 "login": "l", 8295 "id": 1, 8296 "node_id": "n", 8297 "avatar_url": "a", 8298 "url": "u", 8299 "events_url": "e", 8300 "repos_url": "r" 8301 } 8302 }` 8303 8304 testJSONMarshal(t, u, want) 8305 } 8306 8307 func TestRepositoryEvent_Marshal(t *testing.T) { 8308 testJSONMarshal(t, &RepositoryEvent{}, "{}") 8309 8310 u := &RepositoryEvent{ 8311 Action: String("a"), 8312 Repo: &Repository{ 8313 ID: Int64(1), 8314 URL: String("s"), 8315 Name: String("n"), 8316 }, 8317 Org: &Organization{ 8318 BillingEmail: String("be"), 8319 Blog: String("b"), 8320 Company: String("c"), 8321 Email: String("e"), 8322 TwitterUsername: String("tu"), 8323 Location: String("loc"), 8324 Name: String("n"), 8325 Description: String("d"), 8326 IsVerified: Bool(true), 8327 HasOrganizationProjects: Bool(true), 8328 HasRepositoryProjects: Bool(true), 8329 DefaultRepoPermission: String("drp"), 8330 MembersCanCreateRepos: Bool(true), 8331 MembersCanCreateInternalRepos: Bool(true), 8332 MembersCanCreatePrivateRepos: Bool(true), 8333 MembersCanCreatePublicRepos: Bool(false), 8334 MembersAllowedRepositoryCreationType: String("marct"), 8335 MembersCanCreatePages: Bool(true), 8336 MembersCanCreatePublicPages: Bool(false), 8337 MembersCanCreatePrivatePages: Bool(true), 8338 }, 8339 Sender: &User{ 8340 Login: String("l"), 8341 ID: Int64(1), 8342 NodeID: String("n"), 8343 URL: String("u"), 8344 ReposURL: String("r"), 8345 EventsURL: String("e"), 8346 AvatarURL: String("a"), 8347 }, 8348 Installation: &Installation{ 8349 ID: Int64(1), 8350 NodeID: String("nid"), 8351 AppID: Int64(1), 8352 AppSlug: String("as"), 8353 TargetID: Int64(1), 8354 Account: &User{ 8355 Login: String("l"), 8356 ID: Int64(1), 8357 URL: String("u"), 8358 AvatarURL: String("a"), 8359 GravatarID: String("g"), 8360 Name: String("n"), 8361 Company: String("c"), 8362 Blog: String("b"), 8363 Location: String("l"), 8364 Email: String("e"), 8365 Hireable: Bool(true), 8366 Bio: String("b"), 8367 TwitterUsername: String("t"), 8368 PublicRepos: Int(1), 8369 Followers: Int(1), 8370 Following: Int(1), 8371 CreatedAt: &Timestamp{referenceTime}, 8372 SuspendedAt: &Timestamp{referenceTime}, 8373 }, 8374 AccessTokensURL: String("atu"), 8375 RepositoriesURL: String("ru"), 8376 HTMLURL: String("hu"), 8377 TargetType: String("tt"), 8378 SingleFileName: String("sfn"), 8379 RepositorySelection: String("rs"), 8380 Events: []string{"e"}, 8381 SingleFilePaths: []string{"s"}, 8382 Permissions: &InstallationPermissions{ 8383 Actions: String("a"), 8384 Administration: String("ad"), 8385 Checks: String("c"), 8386 Contents: String("co"), 8387 ContentReferences: String("cr"), 8388 Deployments: String("d"), 8389 Environments: String("e"), 8390 Issues: String("i"), 8391 Metadata: String("md"), 8392 Members: String("m"), 8393 OrganizationAdministration: String("oa"), 8394 OrganizationHooks: String("oh"), 8395 OrganizationPlan: String("op"), 8396 OrganizationPreReceiveHooks: String("opr"), 8397 OrganizationProjects: String("op"), 8398 OrganizationSecrets: String("os"), 8399 OrganizationSelfHostedRunners: String("osh"), 8400 OrganizationUserBlocking: String("oub"), 8401 Packages: String("pkg"), 8402 Pages: String("pg"), 8403 PullRequests: String("pr"), 8404 RepositoryHooks: String("rh"), 8405 RepositoryProjects: String("rp"), 8406 RepositoryPreReceiveHooks: String("rprh"), 8407 Secrets: String("s"), 8408 SecretScanningAlerts: String("ssa"), 8409 SecurityEvents: String("se"), 8410 SingleFile: String("sf"), 8411 Statuses: String("s"), 8412 TeamDiscussions: String("td"), 8413 VulnerabilityAlerts: String("va"), 8414 Workflows: String("w"), 8415 }, 8416 CreatedAt: &Timestamp{referenceTime}, 8417 UpdatedAt: &Timestamp{referenceTime}, 8418 HasMultipleSingleFiles: Bool(false), 8419 SuspendedBy: &User{ 8420 Login: String("l"), 8421 ID: Int64(1), 8422 URL: String("u"), 8423 AvatarURL: String("a"), 8424 GravatarID: String("g"), 8425 Name: String("n"), 8426 Company: String("c"), 8427 Blog: String("b"), 8428 Location: String("l"), 8429 Email: String("e"), 8430 Hireable: Bool(true), 8431 Bio: String("b"), 8432 TwitterUsername: String("t"), 8433 PublicRepos: Int(1), 8434 Followers: Int(1), 8435 Following: Int(1), 8436 CreatedAt: &Timestamp{referenceTime}, 8437 SuspendedAt: &Timestamp{referenceTime}, 8438 }, 8439 SuspendedAt: &Timestamp{referenceTime}, 8440 }, 8441 } 8442 8443 want := `{ 8444 "action": "a", 8445 "repository": { 8446 "id": 1, 8447 "name": "n", 8448 "url": "s" 8449 }, 8450 "organization": { 8451 "name": "n", 8452 "company": "c", 8453 "blog": "b", 8454 "location": "loc", 8455 "email": "e", 8456 "twitter_username": "tu", 8457 "description": "d", 8458 "billing_email": "be", 8459 "is_verified": true, 8460 "has_organization_projects": true, 8461 "has_repository_projects": true, 8462 "default_repository_permission": "drp", 8463 "members_can_create_repositories": true, 8464 "members_can_create_public_repositories": false, 8465 "members_can_create_private_repositories": true, 8466 "members_can_create_internal_repositories": true, 8467 "members_allowed_repository_creation_type": "marct", 8468 "members_can_create_pages": true, 8469 "members_can_create_public_pages": false, 8470 "members_can_create_private_pages": true 8471 }, 8472 "sender": { 8473 "login": "l", 8474 "id": 1, 8475 "node_id": "n", 8476 "avatar_url": "a", 8477 "url": "u", 8478 "events_url": "e", 8479 "repos_url": "r" 8480 }, 8481 "installation": { 8482 "id": 1, 8483 "node_id": "nid", 8484 "app_id": 1, 8485 "app_slug": "as", 8486 "target_id": 1, 8487 "account": { 8488 "login": "l", 8489 "id": 1, 8490 "avatar_url": "a", 8491 "gravatar_id": "g", 8492 "name": "n", 8493 "company": "c", 8494 "blog": "b", 8495 "location": "l", 8496 "email": "e", 8497 "hireable": true, 8498 "bio": "b", 8499 "twitter_username": "t", 8500 "public_repos": 1, 8501 "followers": 1, 8502 "following": 1, 8503 "created_at": ` + referenceTimeStr + `, 8504 "suspended_at": ` + referenceTimeStr + `, 8505 "url": "u" 8506 }, 8507 "access_tokens_url": "atu", 8508 "repositories_url": "ru", 8509 "html_url": "hu", 8510 "target_type": "tt", 8511 "single_file_name": "sfn", 8512 "repository_selection": "rs", 8513 "events": [ 8514 "e" 8515 ], 8516 "single_file_paths": [ 8517 "s" 8518 ], 8519 "permissions": { 8520 "actions": "a", 8521 "administration": "ad", 8522 "checks": "c", 8523 "contents": "co", 8524 "content_references": "cr", 8525 "deployments": "d", 8526 "environments": "e", 8527 "issues": "i", 8528 "metadata": "md", 8529 "members": "m", 8530 "organization_administration": "oa", 8531 "organization_hooks": "oh", 8532 "organization_plan": "op", 8533 "organization_pre_receive_hooks": "opr", 8534 "organization_projects": "op", 8535 "organization_secrets": "os", 8536 "organization_self_hosted_runners": "osh", 8537 "organization_user_blocking": "oub", 8538 "packages": "pkg", 8539 "pages": "pg", 8540 "pull_requests": "pr", 8541 "repository_hooks": "rh", 8542 "repository_projects": "rp", 8543 "repository_pre_receive_hooks": "rprh", 8544 "secrets": "s", 8545 "secret_scanning_alerts": "ssa", 8546 "security_events": "se", 8547 "single_file": "sf", 8548 "statuses": "s", 8549 "team_discussions": "td", 8550 "vulnerability_alerts": "va", 8551 "workflows": "w" 8552 }, 8553 "created_at": ` + referenceTimeStr + `, 8554 "updated_at": ` + referenceTimeStr + `, 8555 "has_multiple_single_files": false, 8556 "suspended_by": { 8557 "login": "l", 8558 "id": 1, 8559 "avatar_url": "a", 8560 "gravatar_id": "g", 8561 "name": "n", 8562 "company": "c", 8563 "blog": "b", 8564 "location": "l", 8565 "email": "e", 8566 "hireable": true, 8567 "bio": "b", 8568 "twitter_username": "t", 8569 "public_repos": 1, 8570 "followers": 1, 8571 "following": 1, 8572 "created_at": ` + referenceTimeStr + `, 8573 "suspended_at": ` + referenceTimeStr + `, 8574 "url": "u" 8575 }, 8576 "suspended_at": ` + referenceTimeStr + ` 8577 } 8578 }` 8579 8580 testJSONMarshal(t, u, want) 8581 } 8582 8583 func TestReleaseEvent_Marshal(t *testing.T) { 8584 testJSONMarshal(t, &ReleaseEvent{}, "{}") 8585 8586 u := &ReleaseEvent{ 8587 Action: String("a"), 8588 Release: &RepositoryRelease{ 8589 Name: String("n"), 8590 DiscussionCategoryName: String("dcn"), 8591 ID: Int64(2), 8592 CreatedAt: &Timestamp{referenceTime}, 8593 PublishedAt: &Timestamp{referenceTime}, 8594 URL: String("url"), 8595 HTMLURL: String("htmlurl"), 8596 AssetsURL: String("assetsurl"), 8597 Assets: []*ReleaseAsset{{ID: Int64(1)}}, 8598 UploadURL: String("uploadurl"), 8599 ZipballURL: String("zipballurl"), 8600 TarballURL: String("tarballurl"), 8601 Author: &User{Name: String("octocat")}, 8602 NodeID: String("nid"), 8603 }, 8604 Repo: &Repository{ 8605 ID: Int64(1), 8606 URL: String("s"), 8607 Name: String("n"), 8608 }, 8609 Sender: &User{ 8610 Login: String("l"), 8611 ID: Int64(1), 8612 NodeID: String("n"), 8613 URL: String("u"), 8614 ReposURL: String("r"), 8615 EventsURL: String("e"), 8616 AvatarURL: String("a"), 8617 }, 8618 Installation: &Installation{ 8619 ID: Int64(1), 8620 NodeID: String("nid"), 8621 AppID: Int64(1), 8622 AppSlug: String("as"), 8623 TargetID: Int64(1), 8624 Account: &User{ 8625 Login: String("l"), 8626 ID: Int64(1), 8627 URL: String("u"), 8628 AvatarURL: String("a"), 8629 GravatarID: String("g"), 8630 Name: String("n"), 8631 Company: String("c"), 8632 Blog: String("b"), 8633 Location: String("l"), 8634 Email: String("e"), 8635 Hireable: Bool(true), 8636 Bio: String("b"), 8637 TwitterUsername: String("t"), 8638 PublicRepos: Int(1), 8639 Followers: Int(1), 8640 Following: Int(1), 8641 CreatedAt: &Timestamp{referenceTime}, 8642 SuspendedAt: &Timestamp{referenceTime}, 8643 }, 8644 AccessTokensURL: String("atu"), 8645 RepositoriesURL: String("ru"), 8646 HTMLURL: String("hu"), 8647 TargetType: String("tt"), 8648 SingleFileName: String("sfn"), 8649 RepositorySelection: String("rs"), 8650 Events: []string{"e"}, 8651 SingleFilePaths: []string{"s"}, 8652 Permissions: &InstallationPermissions{ 8653 Actions: String("a"), 8654 Administration: String("ad"), 8655 Checks: String("c"), 8656 Contents: String("co"), 8657 ContentReferences: String("cr"), 8658 Deployments: String("d"), 8659 Environments: String("e"), 8660 Issues: String("i"), 8661 Metadata: String("md"), 8662 Members: String("m"), 8663 OrganizationAdministration: String("oa"), 8664 OrganizationHooks: String("oh"), 8665 OrganizationPlan: String("op"), 8666 OrganizationPreReceiveHooks: String("opr"), 8667 OrganizationProjects: String("op"), 8668 OrganizationSecrets: String("os"), 8669 OrganizationSelfHostedRunners: String("osh"), 8670 OrganizationUserBlocking: String("oub"), 8671 Packages: String("pkg"), 8672 Pages: String("pg"), 8673 PullRequests: String("pr"), 8674 RepositoryHooks: String("rh"), 8675 RepositoryProjects: String("rp"), 8676 RepositoryPreReceiveHooks: String("rprh"), 8677 Secrets: String("s"), 8678 SecretScanningAlerts: String("ssa"), 8679 SecurityEvents: String("se"), 8680 SingleFile: String("sf"), 8681 Statuses: String("s"), 8682 TeamDiscussions: String("td"), 8683 VulnerabilityAlerts: String("va"), 8684 Workflows: String("w"), 8685 }, 8686 CreatedAt: &Timestamp{referenceTime}, 8687 UpdatedAt: &Timestamp{referenceTime}, 8688 HasMultipleSingleFiles: Bool(false), 8689 SuspendedBy: &User{ 8690 Login: String("l"), 8691 ID: Int64(1), 8692 URL: String("u"), 8693 AvatarURL: String("a"), 8694 GravatarID: String("g"), 8695 Name: String("n"), 8696 Company: String("c"), 8697 Blog: String("b"), 8698 Location: String("l"), 8699 Email: String("e"), 8700 Hireable: Bool(true), 8701 Bio: String("b"), 8702 TwitterUsername: String("t"), 8703 PublicRepos: Int(1), 8704 Followers: Int(1), 8705 Following: Int(1), 8706 CreatedAt: &Timestamp{referenceTime}, 8707 SuspendedAt: &Timestamp{referenceTime}, 8708 }, 8709 SuspendedAt: &Timestamp{referenceTime}, 8710 }, 8711 } 8712 8713 want := `{ 8714 "action": "a", 8715 "release": { 8716 "name": "n", 8717 "discussion_category_name": "dcn", 8718 "id": 2, 8719 "created_at": ` + referenceTimeStr + `, 8720 "published_at": ` + referenceTimeStr + `, 8721 "url": "url", 8722 "html_url": "htmlurl", 8723 "assets_url": "assetsurl", 8724 "assets": [ 8725 { 8726 "id": 1 8727 } 8728 ], 8729 "upload_url": "uploadurl", 8730 "zipball_url": "zipballurl", 8731 "tarball_url": "tarballurl", 8732 "author": { 8733 "name": "octocat" 8734 }, 8735 "node_id": "nid" 8736 }, 8737 "repository": { 8738 "id": 1, 8739 "name": "n", 8740 "url": "s" 8741 }, 8742 "sender": { 8743 "login": "l", 8744 "id": 1, 8745 "node_id": "n", 8746 "avatar_url": "a", 8747 "url": "u", 8748 "events_url": "e", 8749 "repos_url": "r" 8750 }, 8751 "installation": { 8752 "id": 1, 8753 "node_id": "nid", 8754 "app_id": 1, 8755 "app_slug": "as", 8756 "target_id": 1, 8757 "account": { 8758 "login": "l", 8759 "id": 1, 8760 "avatar_url": "a", 8761 "gravatar_id": "g", 8762 "name": "n", 8763 "company": "c", 8764 "blog": "b", 8765 "location": "l", 8766 "email": "e", 8767 "hireable": true, 8768 "bio": "b", 8769 "twitter_username": "t", 8770 "public_repos": 1, 8771 "followers": 1, 8772 "following": 1, 8773 "created_at": ` + referenceTimeStr + `, 8774 "suspended_at": ` + referenceTimeStr + `, 8775 "url": "u" 8776 }, 8777 "access_tokens_url": "atu", 8778 "repositories_url": "ru", 8779 "html_url": "hu", 8780 "target_type": "tt", 8781 "single_file_name": "sfn", 8782 "repository_selection": "rs", 8783 "events": [ 8784 "e" 8785 ], 8786 "single_file_paths": [ 8787 "s" 8788 ], 8789 "permissions": { 8790 "actions": "a", 8791 "administration": "ad", 8792 "checks": "c", 8793 "contents": "co", 8794 "content_references": "cr", 8795 "deployments": "d", 8796 "environments": "e", 8797 "issues": "i", 8798 "metadata": "md", 8799 "members": "m", 8800 "organization_administration": "oa", 8801 "organization_hooks": "oh", 8802 "organization_plan": "op", 8803 "organization_pre_receive_hooks": "opr", 8804 "organization_projects": "op", 8805 "organization_secrets": "os", 8806 "organization_self_hosted_runners": "osh", 8807 "organization_user_blocking": "oub", 8808 "packages": "pkg", 8809 "pages": "pg", 8810 "pull_requests": "pr", 8811 "repository_hooks": "rh", 8812 "repository_projects": "rp", 8813 "repository_pre_receive_hooks": "rprh", 8814 "secrets": "s", 8815 "secret_scanning_alerts": "ssa", 8816 "security_events": "se", 8817 "single_file": "sf", 8818 "statuses": "s", 8819 "team_discussions": "td", 8820 "vulnerability_alerts": "va", 8821 "workflows": "w" 8822 }, 8823 "created_at": ` + referenceTimeStr + `, 8824 "updated_at": ` + referenceTimeStr + `, 8825 "has_multiple_single_files": false, 8826 "suspended_by": { 8827 "login": "l", 8828 "id": 1, 8829 "avatar_url": "a", 8830 "gravatar_id": "g", 8831 "name": "n", 8832 "company": "c", 8833 "blog": "b", 8834 "location": "l", 8835 "email": "e", 8836 "hireable": true, 8837 "bio": "b", 8838 "twitter_username": "t", 8839 "public_repos": 1, 8840 "followers": 1, 8841 "following": 1, 8842 "created_at": ` + referenceTimeStr + `, 8843 "suspended_at": ` + referenceTimeStr + `, 8844 "url": "u" 8845 }, 8846 "suspended_at": ` + referenceTimeStr + ` 8847 } 8848 }` 8849 8850 testJSONMarshal(t, u, want) 8851 } 8852 8853 func TestContentReferenceEvent_Marshal(t *testing.T) { 8854 testJSONMarshal(t, &ContentReferenceEvent{}, "{}") 8855 8856 u := &ContentReferenceEvent{ 8857 Action: String("a"), 8858 ContentReference: &ContentReference{ 8859 ID: Int64(1), 8860 NodeID: String("nid"), 8861 Reference: String("ref"), 8862 }, 8863 Repo: &Repository{ 8864 ID: Int64(1), 8865 URL: String("s"), 8866 Name: String("n"), 8867 }, 8868 Sender: &User{ 8869 Login: String("l"), 8870 ID: Int64(1), 8871 NodeID: String("n"), 8872 URL: String("u"), 8873 ReposURL: String("r"), 8874 EventsURL: String("e"), 8875 AvatarURL: String("a"), 8876 }, 8877 Installation: &Installation{ 8878 ID: Int64(1), 8879 NodeID: String("nid"), 8880 AppID: Int64(1), 8881 AppSlug: String("as"), 8882 TargetID: Int64(1), 8883 Account: &User{ 8884 Login: String("l"), 8885 ID: Int64(1), 8886 URL: String("u"), 8887 AvatarURL: String("a"), 8888 GravatarID: String("g"), 8889 Name: String("n"), 8890 Company: String("c"), 8891 Blog: String("b"), 8892 Location: String("l"), 8893 Email: String("e"), 8894 Hireable: Bool(true), 8895 Bio: String("b"), 8896 TwitterUsername: String("t"), 8897 PublicRepos: Int(1), 8898 Followers: Int(1), 8899 Following: Int(1), 8900 CreatedAt: &Timestamp{referenceTime}, 8901 SuspendedAt: &Timestamp{referenceTime}, 8902 }, 8903 AccessTokensURL: String("atu"), 8904 RepositoriesURL: String("ru"), 8905 HTMLURL: String("hu"), 8906 TargetType: String("tt"), 8907 SingleFileName: String("sfn"), 8908 RepositorySelection: String("rs"), 8909 Events: []string{"e"}, 8910 SingleFilePaths: []string{"s"}, 8911 Permissions: &InstallationPermissions{ 8912 Actions: String("a"), 8913 Administration: String("ad"), 8914 Checks: String("c"), 8915 Contents: String("co"), 8916 ContentReferences: String("cr"), 8917 Deployments: String("d"), 8918 Environments: String("e"), 8919 Issues: String("i"), 8920 Metadata: String("md"), 8921 Members: String("m"), 8922 OrganizationAdministration: String("oa"), 8923 OrganizationHooks: String("oh"), 8924 OrganizationPlan: String("op"), 8925 OrganizationPreReceiveHooks: String("opr"), 8926 OrganizationProjects: String("op"), 8927 OrganizationSecrets: String("os"), 8928 OrganizationSelfHostedRunners: String("osh"), 8929 OrganizationUserBlocking: String("oub"), 8930 Packages: String("pkg"), 8931 Pages: String("pg"), 8932 PullRequests: String("pr"), 8933 RepositoryHooks: String("rh"), 8934 RepositoryProjects: String("rp"), 8935 RepositoryPreReceiveHooks: String("rprh"), 8936 Secrets: String("s"), 8937 SecretScanningAlerts: String("ssa"), 8938 SecurityEvents: String("se"), 8939 SingleFile: String("sf"), 8940 Statuses: String("s"), 8941 TeamDiscussions: String("td"), 8942 VulnerabilityAlerts: String("va"), 8943 Workflows: String("w"), 8944 }, 8945 CreatedAt: &Timestamp{referenceTime}, 8946 UpdatedAt: &Timestamp{referenceTime}, 8947 HasMultipleSingleFiles: Bool(false), 8948 SuspendedBy: &User{ 8949 Login: String("l"), 8950 ID: Int64(1), 8951 URL: String("u"), 8952 AvatarURL: String("a"), 8953 GravatarID: String("g"), 8954 Name: String("n"), 8955 Company: String("c"), 8956 Blog: String("b"), 8957 Location: String("l"), 8958 Email: String("e"), 8959 Hireable: Bool(true), 8960 Bio: String("b"), 8961 TwitterUsername: String("t"), 8962 PublicRepos: Int(1), 8963 Followers: Int(1), 8964 Following: Int(1), 8965 CreatedAt: &Timestamp{referenceTime}, 8966 SuspendedAt: &Timestamp{referenceTime}, 8967 }, 8968 SuspendedAt: &Timestamp{referenceTime}, 8969 }, 8970 } 8971 8972 want := `{ 8973 "action": "a", 8974 "content_reference": { 8975 "id": 1, 8976 "node_id": "nid", 8977 "reference": "ref" 8978 }, 8979 "repository": { 8980 "id": 1, 8981 "name": "n", 8982 "url": "s" 8983 }, 8984 "sender": { 8985 "login": "l", 8986 "id": 1, 8987 "node_id": "n", 8988 "avatar_url": "a", 8989 "url": "u", 8990 "events_url": "e", 8991 "repos_url": "r" 8992 }, 8993 "installation": { 8994 "id": 1, 8995 "node_id": "nid", 8996 "app_id": 1, 8997 "app_slug": "as", 8998 "target_id": 1, 8999 "account": { 9000 "login": "l", 9001 "id": 1, 9002 "avatar_url": "a", 9003 "gravatar_id": "g", 9004 "name": "n", 9005 "company": "c", 9006 "blog": "b", 9007 "location": "l", 9008 "email": "e", 9009 "hireable": true, 9010 "bio": "b", 9011 "twitter_username": "t", 9012 "public_repos": 1, 9013 "followers": 1, 9014 "following": 1, 9015 "created_at": ` + referenceTimeStr + `, 9016 "suspended_at": ` + referenceTimeStr + `, 9017 "url": "u" 9018 }, 9019 "access_tokens_url": "atu", 9020 "repositories_url": "ru", 9021 "html_url": "hu", 9022 "target_type": "tt", 9023 "single_file_name": "sfn", 9024 "repository_selection": "rs", 9025 "events": [ 9026 "e" 9027 ], 9028 "single_file_paths": [ 9029 "s" 9030 ], 9031 "permissions": { 9032 "actions": "a", 9033 "administration": "ad", 9034 "checks": "c", 9035 "contents": "co", 9036 "content_references": "cr", 9037 "deployments": "d", 9038 "environments": "e", 9039 "issues": "i", 9040 "metadata": "md", 9041 "members": "m", 9042 "organization_administration": "oa", 9043 "organization_hooks": "oh", 9044 "organization_plan": "op", 9045 "organization_pre_receive_hooks": "opr", 9046 "organization_projects": "op", 9047 "organization_secrets": "os", 9048 "organization_self_hosted_runners": "osh", 9049 "organization_user_blocking": "oub", 9050 "packages": "pkg", 9051 "pages": "pg", 9052 "pull_requests": "pr", 9053 "repository_hooks": "rh", 9054 "repository_projects": "rp", 9055 "repository_pre_receive_hooks": "rprh", 9056 "secrets": "s", 9057 "secret_scanning_alerts": "ssa", 9058 "security_events": "se", 9059 "single_file": "sf", 9060 "statuses": "s", 9061 "team_discussions": "td", 9062 "vulnerability_alerts": "va", 9063 "workflows": "w" 9064 }, 9065 "created_at": ` + referenceTimeStr + `, 9066 "updated_at": ` + referenceTimeStr + `, 9067 "has_multiple_single_files": false, 9068 "suspended_by": { 9069 "login": "l", 9070 "id": 1, 9071 "avatar_url": "a", 9072 "gravatar_id": "g", 9073 "name": "n", 9074 "company": "c", 9075 "blog": "b", 9076 "location": "l", 9077 "email": "e", 9078 "hireable": true, 9079 "bio": "b", 9080 "twitter_username": "t", 9081 "public_repos": 1, 9082 "followers": 1, 9083 "following": 1, 9084 "created_at": ` + referenceTimeStr + `, 9085 "suspended_at": ` + referenceTimeStr + `, 9086 "url": "u" 9087 }, 9088 "suspended_at": ` + referenceTimeStr + ` 9089 } 9090 }` 9091 9092 testJSONMarshal(t, u, want) 9093 } 9094 9095 func TestMemberEvent_Marshal(t *testing.T) { 9096 testJSONMarshal(t, &MemberEvent{}, "{}") 9097 9098 u := &MemberEvent{ 9099 Action: String("a"), 9100 Member: &User{ 9101 Login: String("l"), 9102 ID: Int64(1), 9103 NodeID: String("n"), 9104 URL: String("u"), 9105 ReposURL: String("r"), 9106 EventsURL: String("e"), 9107 AvatarURL: String("a"), 9108 }, 9109 Repo: &Repository{ 9110 ID: Int64(1), 9111 URL: String("s"), 9112 Name: String("n"), 9113 }, 9114 Sender: &User{ 9115 Login: String("l"), 9116 ID: Int64(1), 9117 NodeID: String("n"), 9118 URL: String("u"), 9119 ReposURL: String("r"), 9120 EventsURL: String("e"), 9121 AvatarURL: String("a"), 9122 }, 9123 Installation: &Installation{ 9124 ID: Int64(1), 9125 NodeID: String("nid"), 9126 AppID: Int64(1), 9127 AppSlug: String("as"), 9128 TargetID: Int64(1), 9129 Account: &User{ 9130 Login: String("l"), 9131 ID: Int64(1), 9132 URL: String("u"), 9133 AvatarURL: String("a"), 9134 GravatarID: String("g"), 9135 Name: String("n"), 9136 Company: String("c"), 9137 Blog: String("b"), 9138 Location: String("l"), 9139 Email: String("e"), 9140 Hireable: Bool(true), 9141 Bio: String("b"), 9142 TwitterUsername: String("t"), 9143 PublicRepos: Int(1), 9144 Followers: Int(1), 9145 Following: Int(1), 9146 CreatedAt: &Timestamp{referenceTime}, 9147 SuspendedAt: &Timestamp{referenceTime}, 9148 }, 9149 AccessTokensURL: String("atu"), 9150 RepositoriesURL: String("ru"), 9151 HTMLURL: String("hu"), 9152 TargetType: String("tt"), 9153 SingleFileName: String("sfn"), 9154 RepositorySelection: String("rs"), 9155 Events: []string{"e"}, 9156 SingleFilePaths: []string{"s"}, 9157 Permissions: &InstallationPermissions{ 9158 Actions: String("a"), 9159 Administration: String("ad"), 9160 Checks: String("c"), 9161 Contents: String("co"), 9162 ContentReferences: String("cr"), 9163 Deployments: String("d"), 9164 Environments: String("e"), 9165 Issues: String("i"), 9166 Metadata: String("md"), 9167 Members: String("m"), 9168 OrganizationAdministration: String("oa"), 9169 OrganizationHooks: String("oh"), 9170 OrganizationPlan: String("op"), 9171 OrganizationPreReceiveHooks: String("opr"), 9172 OrganizationProjects: String("op"), 9173 OrganizationSecrets: String("os"), 9174 OrganizationSelfHostedRunners: String("osh"), 9175 OrganizationUserBlocking: String("oub"), 9176 Packages: String("pkg"), 9177 Pages: String("pg"), 9178 PullRequests: String("pr"), 9179 RepositoryHooks: String("rh"), 9180 RepositoryProjects: String("rp"), 9181 RepositoryPreReceiveHooks: String("rprh"), 9182 Secrets: String("s"), 9183 SecretScanningAlerts: String("ssa"), 9184 SecurityEvents: String("se"), 9185 SingleFile: String("sf"), 9186 Statuses: String("s"), 9187 TeamDiscussions: String("td"), 9188 VulnerabilityAlerts: String("va"), 9189 Workflows: String("w"), 9190 }, 9191 CreatedAt: &Timestamp{referenceTime}, 9192 UpdatedAt: &Timestamp{referenceTime}, 9193 HasMultipleSingleFiles: Bool(false), 9194 SuspendedBy: &User{ 9195 Login: String("l"), 9196 ID: Int64(1), 9197 URL: String("u"), 9198 AvatarURL: String("a"), 9199 GravatarID: String("g"), 9200 Name: String("n"), 9201 Company: String("c"), 9202 Blog: String("b"), 9203 Location: String("l"), 9204 Email: String("e"), 9205 Hireable: Bool(true), 9206 Bio: String("b"), 9207 TwitterUsername: String("t"), 9208 PublicRepos: Int(1), 9209 Followers: Int(1), 9210 Following: Int(1), 9211 CreatedAt: &Timestamp{referenceTime}, 9212 SuspendedAt: &Timestamp{referenceTime}, 9213 }, 9214 SuspendedAt: &Timestamp{referenceTime}, 9215 }, 9216 } 9217 9218 want := `{ 9219 "action": "a", 9220 "member": { 9221 "login": "l", 9222 "id": 1, 9223 "node_id": "n", 9224 "avatar_url": "a", 9225 "url": "u", 9226 "events_url": "e", 9227 "repos_url": "r" 9228 }, 9229 "repository": { 9230 "id": 1, 9231 "name": "n", 9232 "url": "s" 9233 }, 9234 "sender": { 9235 "login": "l", 9236 "id": 1, 9237 "node_id": "n", 9238 "avatar_url": "a", 9239 "url": "u", 9240 "events_url": "e", 9241 "repos_url": "r" 9242 }, 9243 "installation": { 9244 "id": 1, 9245 "node_id": "nid", 9246 "app_id": 1, 9247 "app_slug": "as", 9248 "target_id": 1, 9249 "account": { 9250 "login": "l", 9251 "id": 1, 9252 "avatar_url": "a", 9253 "gravatar_id": "g", 9254 "name": "n", 9255 "company": "c", 9256 "blog": "b", 9257 "location": "l", 9258 "email": "e", 9259 "hireable": true, 9260 "bio": "b", 9261 "twitter_username": "t", 9262 "public_repos": 1, 9263 "followers": 1, 9264 "following": 1, 9265 "created_at": ` + referenceTimeStr + `, 9266 "suspended_at": ` + referenceTimeStr + `, 9267 "url": "u" 9268 }, 9269 "access_tokens_url": "atu", 9270 "repositories_url": "ru", 9271 "html_url": "hu", 9272 "target_type": "tt", 9273 "single_file_name": "sfn", 9274 "repository_selection": "rs", 9275 "events": [ 9276 "e" 9277 ], 9278 "single_file_paths": [ 9279 "s" 9280 ], 9281 "permissions": { 9282 "actions": "a", 9283 "administration": "ad", 9284 "checks": "c", 9285 "contents": "co", 9286 "content_references": "cr", 9287 "deployments": "d", 9288 "environments": "e", 9289 "issues": "i", 9290 "metadata": "md", 9291 "members": "m", 9292 "organization_administration": "oa", 9293 "organization_hooks": "oh", 9294 "organization_plan": "op", 9295 "organization_pre_receive_hooks": "opr", 9296 "organization_projects": "op", 9297 "organization_secrets": "os", 9298 "organization_self_hosted_runners": "osh", 9299 "organization_user_blocking": "oub", 9300 "packages": "pkg", 9301 "pages": "pg", 9302 "pull_requests": "pr", 9303 "repository_hooks": "rh", 9304 "repository_projects": "rp", 9305 "repository_pre_receive_hooks": "rprh", 9306 "secrets": "s", 9307 "secret_scanning_alerts": "ssa", 9308 "security_events": "se", 9309 "single_file": "sf", 9310 "statuses": "s", 9311 "team_discussions": "td", 9312 "vulnerability_alerts": "va", 9313 "workflows": "w" 9314 }, 9315 "created_at": ` + referenceTimeStr + `, 9316 "updated_at": ` + referenceTimeStr + `, 9317 "has_multiple_single_files": false, 9318 "suspended_by": { 9319 "login": "l", 9320 "id": 1, 9321 "avatar_url": "a", 9322 "gravatar_id": "g", 9323 "name": "n", 9324 "company": "c", 9325 "blog": "b", 9326 "location": "l", 9327 "email": "e", 9328 "hireable": true, 9329 "bio": "b", 9330 "twitter_username": "t", 9331 "public_repos": 1, 9332 "followers": 1, 9333 "following": 1, 9334 "created_at": ` + referenceTimeStr + `, 9335 "suspended_at": ` + referenceTimeStr + `, 9336 "url": "u" 9337 }, 9338 "suspended_at": ` + referenceTimeStr + ` 9339 } 9340 }` 9341 9342 testJSONMarshal(t, u, want) 9343 } 9344 9345 func TestMembershipEvent_Marshal(t *testing.T) { 9346 testJSONMarshal(t, &MembershipEvent{}, "{}") 9347 9348 u := &MembershipEvent{ 9349 Action: String("a"), 9350 Scope: String("s"), 9351 Member: &User{ 9352 Login: String("l"), 9353 ID: Int64(1), 9354 NodeID: String("n"), 9355 URL: String("u"), 9356 ReposURL: String("r"), 9357 EventsURL: String("e"), 9358 AvatarURL: String("a"), 9359 }, 9360 Team: &Team{ 9361 ID: Int64(1), 9362 NodeID: String("n"), 9363 Name: String("n"), 9364 Description: String("d"), 9365 URL: String("u"), 9366 Slug: String("s"), 9367 Permission: String("p"), 9368 Privacy: String("p"), 9369 MembersCount: Int(1), 9370 ReposCount: Int(1), 9371 MembersURL: String("m"), 9372 RepositoriesURL: String("r"), 9373 Organization: &Organization{ 9374 Login: String("l"), 9375 ID: Int64(1), 9376 NodeID: String("n"), 9377 AvatarURL: String("a"), 9378 HTMLURL: String("h"), 9379 Name: String("n"), 9380 Company: String("c"), 9381 Blog: String("b"), 9382 Location: String("l"), 9383 Email: String("e"), 9384 }, 9385 Parent: &Team{ 9386 ID: Int64(1), 9387 NodeID: String("n"), 9388 Name: String("n"), 9389 Description: String("d"), 9390 URL: String("u"), 9391 Slug: String("s"), 9392 Permission: String("p"), 9393 Privacy: String("p"), 9394 MembersCount: Int(1), 9395 ReposCount: Int(1), 9396 }, 9397 LDAPDN: String("l"), 9398 }, 9399 Org: &Organization{ 9400 BillingEmail: String("be"), 9401 Blog: String("b"), 9402 Company: String("c"), 9403 Email: String("e"), 9404 TwitterUsername: String("tu"), 9405 Location: String("loc"), 9406 Name: String("n"), 9407 Description: String("d"), 9408 IsVerified: Bool(true), 9409 HasOrganizationProjects: Bool(true), 9410 HasRepositoryProjects: Bool(true), 9411 DefaultRepoPermission: String("drp"), 9412 MembersCanCreateRepos: Bool(true), 9413 MembersCanCreateInternalRepos: Bool(true), 9414 MembersCanCreatePrivateRepos: Bool(true), 9415 MembersCanCreatePublicRepos: Bool(false), 9416 MembersAllowedRepositoryCreationType: String("marct"), 9417 MembersCanCreatePages: Bool(true), 9418 MembersCanCreatePublicPages: Bool(false), 9419 MembersCanCreatePrivatePages: Bool(true), 9420 }, 9421 Sender: &User{ 9422 Login: String("l"), 9423 ID: Int64(1), 9424 NodeID: String("n"), 9425 URL: String("u"), 9426 ReposURL: String("r"), 9427 EventsURL: String("e"), 9428 AvatarURL: String("a"), 9429 }, 9430 Installation: &Installation{ 9431 ID: Int64(1), 9432 NodeID: String("nid"), 9433 AppID: Int64(1), 9434 AppSlug: String("as"), 9435 TargetID: Int64(1), 9436 Account: &User{ 9437 Login: String("l"), 9438 ID: Int64(1), 9439 URL: String("u"), 9440 AvatarURL: String("a"), 9441 GravatarID: String("g"), 9442 Name: String("n"), 9443 Company: String("c"), 9444 Blog: String("b"), 9445 Location: String("l"), 9446 Email: String("e"), 9447 Hireable: Bool(true), 9448 Bio: String("b"), 9449 TwitterUsername: String("t"), 9450 PublicRepos: Int(1), 9451 Followers: Int(1), 9452 Following: Int(1), 9453 CreatedAt: &Timestamp{referenceTime}, 9454 SuspendedAt: &Timestamp{referenceTime}, 9455 }, 9456 AccessTokensURL: String("atu"), 9457 RepositoriesURL: String("ru"), 9458 HTMLURL: String("hu"), 9459 TargetType: String("tt"), 9460 SingleFileName: String("sfn"), 9461 RepositorySelection: String("rs"), 9462 Events: []string{"e"}, 9463 SingleFilePaths: []string{"s"}, 9464 Permissions: &InstallationPermissions{ 9465 Actions: String("a"), 9466 Administration: String("ad"), 9467 Checks: String("c"), 9468 Contents: String("co"), 9469 ContentReferences: String("cr"), 9470 Deployments: String("d"), 9471 Environments: String("e"), 9472 Issues: String("i"), 9473 Metadata: String("md"), 9474 Members: String("m"), 9475 OrganizationAdministration: String("oa"), 9476 OrganizationHooks: String("oh"), 9477 OrganizationPlan: String("op"), 9478 OrganizationPreReceiveHooks: String("opr"), 9479 OrganizationProjects: String("op"), 9480 OrganizationSecrets: String("os"), 9481 OrganizationSelfHostedRunners: String("osh"), 9482 OrganizationUserBlocking: String("oub"), 9483 Packages: String("pkg"), 9484 Pages: String("pg"), 9485 PullRequests: String("pr"), 9486 RepositoryHooks: String("rh"), 9487 RepositoryProjects: String("rp"), 9488 RepositoryPreReceiveHooks: String("rprh"), 9489 Secrets: String("s"), 9490 SecretScanningAlerts: String("ssa"), 9491 SecurityEvents: String("se"), 9492 SingleFile: String("sf"), 9493 Statuses: String("s"), 9494 TeamDiscussions: String("td"), 9495 VulnerabilityAlerts: String("va"), 9496 Workflows: String("w"), 9497 }, 9498 CreatedAt: &Timestamp{referenceTime}, 9499 UpdatedAt: &Timestamp{referenceTime}, 9500 HasMultipleSingleFiles: Bool(false), 9501 SuspendedBy: &User{ 9502 Login: String("l"), 9503 ID: Int64(1), 9504 URL: String("u"), 9505 AvatarURL: String("a"), 9506 GravatarID: String("g"), 9507 Name: String("n"), 9508 Company: String("c"), 9509 Blog: String("b"), 9510 Location: String("l"), 9511 Email: String("e"), 9512 Hireable: Bool(true), 9513 Bio: String("b"), 9514 TwitterUsername: String("t"), 9515 PublicRepos: Int(1), 9516 Followers: Int(1), 9517 Following: Int(1), 9518 CreatedAt: &Timestamp{referenceTime}, 9519 SuspendedAt: &Timestamp{referenceTime}, 9520 }, 9521 SuspendedAt: &Timestamp{referenceTime}, 9522 }, 9523 } 9524 9525 want := `{ 9526 "action": "a", 9527 "scope": "s", 9528 "member": { 9529 "login": "l", 9530 "id": 1, 9531 "node_id": "n", 9532 "avatar_url": "a", 9533 "url": "u", 9534 "events_url": "e", 9535 "repos_url": "r" 9536 }, 9537 "team": { 9538 "id": 1, 9539 "node_id": "n", 9540 "name": "n", 9541 "description": "d", 9542 "url": "u", 9543 "slug": "s", 9544 "permission": "p", 9545 "privacy": "p", 9546 "members_count": 1, 9547 "repos_count": 1, 9548 "organization": { 9549 "login": "l", 9550 "id": 1, 9551 "node_id": "n", 9552 "avatar_url": "a", 9553 "html_url": "h", 9554 "name": "n", 9555 "company": "c", 9556 "blog": "b", 9557 "location": "l", 9558 "email": "e" 9559 }, 9560 "members_url": "m", 9561 "repositories_url": "r", 9562 "parent": { 9563 "id": 1, 9564 "node_id": "n", 9565 "name": "n", 9566 "description": "d", 9567 "url": "u", 9568 "slug": "s", 9569 "permission": "p", 9570 "privacy": "p", 9571 "members_count": 1, 9572 "repos_count": 1 9573 }, 9574 "ldap_dn": "l" 9575 }, 9576 "organization": { 9577 "name": "n", 9578 "company": "c", 9579 "blog": "b", 9580 "location": "loc", 9581 "email": "e", 9582 "twitter_username": "tu", 9583 "description": "d", 9584 "billing_email": "be", 9585 "is_verified": true, 9586 "has_organization_projects": true, 9587 "has_repository_projects": true, 9588 "default_repository_permission": "drp", 9589 "members_can_create_repositories": true, 9590 "members_can_create_public_repositories": false, 9591 "members_can_create_private_repositories": true, 9592 "members_can_create_internal_repositories": true, 9593 "members_allowed_repository_creation_type": "marct", 9594 "members_can_create_pages": true, 9595 "members_can_create_public_pages": false, 9596 "members_can_create_private_pages": true 9597 }, 9598 "sender": { 9599 "login": "l", 9600 "id": 1, 9601 "node_id": "n", 9602 "avatar_url": "a", 9603 "url": "u", 9604 "events_url": "e", 9605 "repos_url": "r" 9606 }, 9607 "installation": { 9608 "id": 1, 9609 "node_id": "nid", 9610 "app_id": 1, 9611 "app_slug": "as", 9612 "target_id": 1, 9613 "account": { 9614 "login": "l", 9615 "id": 1, 9616 "avatar_url": "a", 9617 "gravatar_id": "g", 9618 "name": "n", 9619 "company": "c", 9620 "blog": "b", 9621 "location": "l", 9622 "email": "e", 9623 "hireable": true, 9624 "bio": "b", 9625 "twitter_username": "t", 9626 "public_repos": 1, 9627 "followers": 1, 9628 "following": 1, 9629 "created_at": ` + referenceTimeStr + `, 9630 "suspended_at": ` + referenceTimeStr + `, 9631 "url": "u" 9632 }, 9633 "access_tokens_url": "atu", 9634 "repositories_url": "ru", 9635 "html_url": "hu", 9636 "target_type": "tt", 9637 "single_file_name": "sfn", 9638 "repository_selection": "rs", 9639 "events": [ 9640 "e" 9641 ], 9642 "single_file_paths": [ 9643 "s" 9644 ], 9645 "permissions": { 9646 "actions": "a", 9647 "administration": "ad", 9648 "checks": "c", 9649 "contents": "co", 9650 "content_references": "cr", 9651 "deployments": "d", 9652 "environments": "e", 9653 "issues": "i", 9654 "metadata": "md", 9655 "members": "m", 9656 "organization_administration": "oa", 9657 "organization_hooks": "oh", 9658 "organization_plan": "op", 9659 "organization_pre_receive_hooks": "opr", 9660 "organization_projects": "op", 9661 "organization_secrets": "os", 9662 "organization_self_hosted_runners": "osh", 9663 "organization_user_blocking": "oub", 9664 "packages": "pkg", 9665 "pages": "pg", 9666 "pull_requests": "pr", 9667 "repository_hooks": "rh", 9668 "repository_projects": "rp", 9669 "repository_pre_receive_hooks": "rprh", 9670 "secrets": "s", 9671 "secret_scanning_alerts": "ssa", 9672 "security_events": "se", 9673 "single_file": "sf", 9674 "statuses": "s", 9675 "team_discussions": "td", 9676 "vulnerability_alerts": "va", 9677 "workflows": "w" 9678 }, 9679 "created_at": ` + referenceTimeStr + `, 9680 "updated_at": ` + referenceTimeStr + `, 9681 "has_multiple_single_files": false, 9682 "suspended_by": { 9683 "login": "l", 9684 "id": 1, 9685 "avatar_url": "a", 9686 "gravatar_id": "g", 9687 "name": "n", 9688 "company": "c", 9689 "blog": "b", 9690 "location": "l", 9691 "email": "e", 9692 "hireable": true, 9693 "bio": "b", 9694 "twitter_username": "t", 9695 "public_repos": 1, 9696 "followers": 1, 9697 "following": 1, 9698 "created_at": ` + referenceTimeStr + `, 9699 "suspended_at": ` + referenceTimeStr + `, 9700 "url": "u" 9701 }, 9702 "suspended_at": ` + referenceTimeStr + ` 9703 } 9704 }` 9705 9706 testJSONMarshal(t, u, want) 9707 } 9708 9709 func TestMergeGroupEvent_Marshal(t *testing.T) { 9710 testJSONMarshal(t, &MergeGroupEvent{}, "{}") 9711 9712 u := &MergeGroupEvent{ 9713 Action: String("a"), 9714 MergeGroup: &MergeGroup{ 9715 HeadSHA: String("hs"), 9716 HeadRef: String("hr"), 9717 BaseSHA: String("bs"), 9718 BaseRef: String("br"), 9719 HeadCommit: &Commit{NodeID: String("nid")}, 9720 }, 9721 Repo: &Repository{ 9722 ID: Int64(1), 9723 URL: String("s"), 9724 Name: String("n"), 9725 }, 9726 Org: &Organization{ 9727 BillingEmail: String("be"), 9728 Blog: String("b"), 9729 Company: String("c"), 9730 Email: String("e"), 9731 TwitterUsername: String("tu"), 9732 Location: String("loc"), 9733 Name: String("n"), 9734 Description: String("d"), 9735 IsVerified: Bool(true), 9736 HasOrganizationProjects: Bool(true), 9737 HasRepositoryProjects: Bool(true), 9738 DefaultRepoPermission: String("drp"), 9739 MembersCanCreateRepos: Bool(true), 9740 MembersCanCreateInternalRepos: Bool(true), 9741 MembersCanCreatePrivateRepos: Bool(true), 9742 MembersCanCreatePublicRepos: Bool(false), 9743 MembersAllowedRepositoryCreationType: String("marct"), 9744 MembersCanCreatePages: Bool(true), 9745 MembersCanCreatePublicPages: Bool(false), 9746 MembersCanCreatePrivatePages: Bool(true), 9747 }, 9748 Sender: &User{ 9749 Login: String("l"), 9750 ID: Int64(1), 9751 NodeID: String("n"), 9752 URL: String("u"), 9753 ReposURL: String("r"), 9754 EventsURL: String("e"), 9755 AvatarURL: String("a"), 9756 }, 9757 Installation: &Installation{ 9758 ID: Int64(1), 9759 NodeID: String("nid"), 9760 AppID: Int64(1), 9761 AppSlug: String("as"), 9762 TargetID: Int64(1), 9763 Account: &User{ 9764 Login: String("l"), 9765 ID: Int64(1), 9766 URL: String("u"), 9767 AvatarURL: String("a"), 9768 GravatarID: String("g"), 9769 Name: String("n"), 9770 Company: String("c"), 9771 Blog: String("b"), 9772 Location: String("l"), 9773 Email: String("e"), 9774 Hireable: Bool(true), 9775 Bio: String("b"), 9776 TwitterUsername: String("t"), 9777 PublicRepos: Int(1), 9778 Followers: Int(1), 9779 Following: Int(1), 9780 CreatedAt: &Timestamp{referenceTime}, 9781 SuspendedAt: &Timestamp{referenceTime}, 9782 }, 9783 AccessTokensURL: String("atu"), 9784 RepositoriesURL: String("ru"), 9785 HTMLURL: String("hu"), 9786 TargetType: String("tt"), 9787 SingleFileName: String("sfn"), 9788 RepositorySelection: String("rs"), 9789 Events: []string{"e"}, 9790 SingleFilePaths: []string{"s"}, 9791 Permissions: &InstallationPermissions{ 9792 Actions: String("a"), 9793 Administration: String("ad"), 9794 Checks: String("c"), 9795 Contents: String("co"), 9796 ContentReferences: String("cr"), 9797 Deployments: String("d"), 9798 Environments: String("e"), 9799 Issues: String("i"), 9800 Metadata: String("md"), 9801 Members: String("m"), 9802 OrganizationAdministration: String("oa"), 9803 OrganizationHooks: String("oh"), 9804 OrganizationPlan: String("op"), 9805 OrganizationPreReceiveHooks: String("opr"), 9806 OrganizationProjects: String("op"), 9807 OrganizationSecrets: String("os"), 9808 OrganizationSelfHostedRunners: String("osh"), 9809 OrganizationUserBlocking: String("oub"), 9810 Packages: String("pkg"), 9811 Pages: String("pg"), 9812 PullRequests: String("pr"), 9813 RepositoryHooks: String("rh"), 9814 RepositoryProjects: String("rp"), 9815 RepositoryPreReceiveHooks: String("rprh"), 9816 Secrets: String("s"), 9817 SecretScanningAlerts: String("ssa"), 9818 SecurityEvents: String("se"), 9819 SingleFile: String("sf"), 9820 Statuses: String("s"), 9821 TeamDiscussions: String("td"), 9822 VulnerabilityAlerts: String("va"), 9823 Workflows: String("w"), 9824 }, 9825 CreatedAt: &Timestamp{referenceTime}, 9826 UpdatedAt: &Timestamp{referenceTime}, 9827 HasMultipleSingleFiles: Bool(false), 9828 SuspendedBy: &User{ 9829 Login: String("l"), 9830 ID: Int64(1), 9831 URL: String("u"), 9832 AvatarURL: String("a"), 9833 GravatarID: String("g"), 9834 Name: String("n"), 9835 Company: String("c"), 9836 Blog: String("b"), 9837 Location: String("l"), 9838 Email: String("e"), 9839 Hireable: Bool(true), 9840 Bio: String("b"), 9841 TwitterUsername: String("t"), 9842 PublicRepos: Int(1), 9843 Followers: Int(1), 9844 Following: Int(1), 9845 CreatedAt: &Timestamp{referenceTime}, 9846 SuspendedAt: &Timestamp{referenceTime}, 9847 }, 9848 SuspendedAt: &Timestamp{referenceTime}, 9849 }, 9850 } 9851 9852 want := `{ 9853 "action": "a", 9854 "merge_group": { 9855 "head_sha": "hs", 9856 "head_ref": "hr", 9857 "base_sha": "bs", 9858 "base_ref": "br", 9859 "head_commit": { 9860 "node_id": "nid" 9861 } 9862 }, 9863 "repository": { 9864 "id": 1, 9865 "name": "n", 9866 "url": "s" 9867 }, 9868 "organization": { 9869 "name": "n", 9870 "company": "c", 9871 "blog": "b", 9872 "location": "loc", 9873 "email": "e", 9874 "twitter_username": "tu", 9875 "description": "d", 9876 "billing_email": "be", 9877 "is_verified": true, 9878 "has_organization_projects": true, 9879 "has_repository_projects": true, 9880 "default_repository_permission": "drp", 9881 "members_can_create_repositories": true, 9882 "members_can_create_public_repositories": false, 9883 "members_can_create_private_repositories": true, 9884 "members_can_create_internal_repositories": true, 9885 "members_allowed_repository_creation_type": "marct", 9886 "members_can_create_pages": true, 9887 "members_can_create_public_pages": false, 9888 "members_can_create_private_pages": true 9889 }, 9890 "sender": { 9891 "login": "l", 9892 "id": 1, 9893 "node_id": "n", 9894 "avatar_url": "a", 9895 "url": "u", 9896 "events_url": "e", 9897 "repos_url": "r" 9898 }, 9899 "installation": { 9900 "id": 1, 9901 "node_id": "nid", 9902 "app_id": 1, 9903 "app_slug": "as", 9904 "target_id": 1, 9905 "account": { 9906 "login": "l", 9907 "id": 1, 9908 "avatar_url": "a", 9909 "gravatar_id": "g", 9910 "name": "n", 9911 "company": "c", 9912 "blog": "b", 9913 "location": "l", 9914 "email": "e", 9915 "hireable": true, 9916 "bio": "b", 9917 "twitter_username": "t", 9918 "public_repos": 1, 9919 "followers": 1, 9920 "following": 1, 9921 "created_at": ` + referenceTimeStr + `, 9922 "suspended_at": ` + referenceTimeStr + `, 9923 "url": "u" 9924 }, 9925 "access_tokens_url": "atu", 9926 "repositories_url": "ru", 9927 "html_url": "hu", 9928 "target_type": "tt", 9929 "single_file_name": "sfn", 9930 "repository_selection": "rs", 9931 "events": [ 9932 "e" 9933 ], 9934 "single_file_paths": [ 9935 "s" 9936 ], 9937 "permissions": { 9938 "actions": "a", 9939 "administration": "ad", 9940 "checks": "c", 9941 "contents": "co", 9942 "content_references": "cr", 9943 "deployments": "d", 9944 "environments": "e", 9945 "issues": "i", 9946 "metadata": "md", 9947 "members": "m", 9948 "organization_administration": "oa", 9949 "organization_hooks": "oh", 9950 "organization_plan": "op", 9951 "organization_pre_receive_hooks": "opr", 9952 "organization_projects": "op", 9953 "organization_secrets": "os", 9954 "organization_self_hosted_runners": "osh", 9955 "organization_user_blocking": "oub", 9956 "packages": "pkg", 9957 "pages": "pg", 9958 "pull_requests": "pr", 9959 "repository_hooks": "rh", 9960 "repository_projects": "rp", 9961 "repository_pre_receive_hooks": "rprh", 9962 "secrets": "s", 9963 "secret_scanning_alerts": "ssa", 9964 "security_events": "se", 9965 "single_file": "sf", 9966 "statuses": "s", 9967 "team_discussions": "td", 9968 "vulnerability_alerts": "va", 9969 "workflows": "w" 9970 }, 9971 "created_at": ` + referenceTimeStr + `, 9972 "updated_at": ` + referenceTimeStr + `, 9973 "has_multiple_single_files": false, 9974 "suspended_by": { 9975 "login": "l", 9976 "id": 1, 9977 "avatar_url": "a", 9978 "gravatar_id": "g", 9979 "name": "n", 9980 "company": "c", 9981 "blog": "b", 9982 "location": "l", 9983 "email": "e", 9984 "hireable": true, 9985 "bio": "b", 9986 "twitter_username": "t", 9987 "public_repos": 1, 9988 "followers": 1, 9989 "following": 1, 9990 "created_at": ` + referenceTimeStr + `, 9991 "suspended_at": ` + referenceTimeStr + `, 9992 "url": "u" 9993 }, 9994 "suspended_at": ` + referenceTimeStr + ` 9995 } 9996 }` 9997 9998 testJSONMarshal(t, u, want) 9999 } 10000 10001 func TestOrgBlockEvent_Marshal(t *testing.T) { 10002 testJSONMarshal(t, &OrgBlockEvent{}, "{}") 10003 10004 u := &OrgBlockEvent{ 10005 Action: String("a"), 10006 BlockedUser: &User{ 10007 Login: String("l"), 10008 ID: Int64(1), 10009 NodeID: String("n"), 10010 URL: String("u"), 10011 ReposURL: String("r"), 10012 EventsURL: String("e"), 10013 AvatarURL: String("a"), 10014 }, 10015 Organization: &Organization{ 10016 BillingEmail: String("be"), 10017 Blog: String("b"), 10018 Company: String("c"), 10019 Email: String("e"), 10020 TwitterUsername: String("tu"), 10021 Location: String("loc"), 10022 Name: String("n"), 10023 Description: String("d"), 10024 IsVerified: Bool(true), 10025 HasOrganizationProjects: Bool(true), 10026 HasRepositoryProjects: Bool(true), 10027 DefaultRepoPermission: String("drp"), 10028 MembersCanCreateRepos: Bool(true), 10029 MembersCanCreateInternalRepos: Bool(true), 10030 MembersCanCreatePrivateRepos: Bool(true), 10031 MembersCanCreatePublicRepos: Bool(false), 10032 MembersAllowedRepositoryCreationType: String("marct"), 10033 MembersCanCreatePages: Bool(true), 10034 MembersCanCreatePublicPages: Bool(false), 10035 MembersCanCreatePrivatePages: Bool(true), 10036 }, 10037 Sender: &User{ 10038 Login: String("l"), 10039 ID: Int64(1), 10040 NodeID: String("n"), 10041 URL: String("u"), 10042 ReposURL: String("r"), 10043 EventsURL: String("e"), 10044 AvatarURL: String("a"), 10045 }, 10046 Installation: &Installation{ 10047 ID: Int64(1), 10048 NodeID: String("nid"), 10049 AppID: Int64(1), 10050 AppSlug: String("as"), 10051 TargetID: Int64(1), 10052 Account: &User{ 10053 Login: String("l"), 10054 ID: Int64(1), 10055 URL: String("u"), 10056 AvatarURL: String("a"), 10057 GravatarID: String("g"), 10058 Name: String("n"), 10059 Company: String("c"), 10060 Blog: String("b"), 10061 Location: String("l"), 10062 Email: String("e"), 10063 Hireable: Bool(true), 10064 Bio: String("b"), 10065 TwitterUsername: String("t"), 10066 PublicRepos: Int(1), 10067 Followers: Int(1), 10068 Following: Int(1), 10069 CreatedAt: &Timestamp{referenceTime}, 10070 SuspendedAt: &Timestamp{referenceTime}, 10071 }, 10072 AccessTokensURL: String("atu"), 10073 RepositoriesURL: String("ru"), 10074 HTMLURL: String("hu"), 10075 TargetType: String("tt"), 10076 SingleFileName: String("sfn"), 10077 RepositorySelection: String("rs"), 10078 Events: []string{"e"}, 10079 SingleFilePaths: []string{"s"}, 10080 Permissions: &InstallationPermissions{ 10081 Actions: String("a"), 10082 Administration: String("ad"), 10083 Checks: String("c"), 10084 Contents: String("co"), 10085 ContentReferences: String("cr"), 10086 Deployments: String("d"), 10087 Environments: String("e"), 10088 Issues: String("i"), 10089 Metadata: String("md"), 10090 Members: String("m"), 10091 OrganizationAdministration: String("oa"), 10092 OrganizationHooks: String("oh"), 10093 OrganizationPlan: String("op"), 10094 OrganizationPreReceiveHooks: String("opr"), 10095 OrganizationProjects: String("op"), 10096 OrganizationSecrets: String("os"), 10097 OrganizationSelfHostedRunners: String("osh"), 10098 OrganizationUserBlocking: String("oub"), 10099 Packages: String("pkg"), 10100 Pages: String("pg"), 10101 PullRequests: String("pr"), 10102 RepositoryHooks: String("rh"), 10103 RepositoryProjects: String("rp"), 10104 RepositoryPreReceiveHooks: String("rprh"), 10105 Secrets: String("s"), 10106 SecretScanningAlerts: String("ssa"), 10107 SecurityEvents: String("se"), 10108 SingleFile: String("sf"), 10109 Statuses: String("s"), 10110 TeamDiscussions: String("td"), 10111 VulnerabilityAlerts: String("va"), 10112 Workflows: String("w"), 10113 }, 10114 CreatedAt: &Timestamp{referenceTime}, 10115 UpdatedAt: &Timestamp{referenceTime}, 10116 HasMultipleSingleFiles: Bool(false), 10117 SuspendedBy: &User{ 10118 Login: String("l"), 10119 ID: Int64(1), 10120 URL: String("u"), 10121 AvatarURL: String("a"), 10122 GravatarID: String("g"), 10123 Name: String("n"), 10124 Company: String("c"), 10125 Blog: String("b"), 10126 Location: String("l"), 10127 Email: String("e"), 10128 Hireable: Bool(true), 10129 Bio: String("b"), 10130 TwitterUsername: String("t"), 10131 PublicRepos: Int(1), 10132 Followers: Int(1), 10133 Following: Int(1), 10134 CreatedAt: &Timestamp{referenceTime}, 10135 SuspendedAt: &Timestamp{referenceTime}, 10136 }, 10137 SuspendedAt: &Timestamp{referenceTime}, 10138 }, 10139 } 10140 10141 want := `{ 10142 "action": "a", 10143 "blocked_user": { 10144 "login": "l", 10145 "id": 1, 10146 "node_id": "n", 10147 "avatar_url": "a", 10148 "url": "u", 10149 "events_url": "e", 10150 "repos_url": "r" 10151 }, 10152 "organization": { 10153 "name": "n", 10154 "company": "c", 10155 "blog": "b", 10156 "location": "loc", 10157 "email": "e", 10158 "twitter_username": "tu", 10159 "description": "d", 10160 "billing_email": "be", 10161 "is_verified": true, 10162 "has_organization_projects": true, 10163 "has_repository_projects": true, 10164 "default_repository_permission": "drp", 10165 "members_can_create_repositories": true, 10166 "members_can_create_public_repositories": false, 10167 "members_can_create_private_repositories": true, 10168 "members_can_create_internal_repositories": true, 10169 "members_allowed_repository_creation_type": "marct", 10170 "members_can_create_pages": true, 10171 "members_can_create_public_pages": false, 10172 "members_can_create_private_pages": true 10173 }, 10174 "sender": { 10175 "login": "l", 10176 "id": 1, 10177 "node_id": "n", 10178 "avatar_url": "a", 10179 "url": "u", 10180 "events_url": "e", 10181 "repos_url": "r" 10182 }, 10183 "installation": { 10184 "id": 1, 10185 "node_id": "nid", 10186 "app_id": 1, 10187 "app_slug": "as", 10188 "target_id": 1, 10189 "account": { 10190 "login": "l", 10191 "id": 1, 10192 "avatar_url": "a", 10193 "gravatar_id": "g", 10194 "name": "n", 10195 "company": "c", 10196 "blog": "b", 10197 "location": "l", 10198 "email": "e", 10199 "hireable": true, 10200 "bio": "b", 10201 "twitter_username": "t", 10202 "public_repos": 1, 10203 "followers": 1, 10204 "following": 1, 10205 "created_at": ` + referenceTimeStr + `, 10206 "suspended_at": ` + referenceTimeStr + `, 10207 "url": "u" 10208 }, 10209 "access_tokens_url": "atu", 10210 "repositories_url": "ru", 10211 "html_url": "hu", 10212 "target_type": "tt", 10213 "single_file_name": "sfn", 10214 "repository_selection": "rs", 10215 "events": [ 10216 "e" 10217 ], 10218 "single_file_paths": [ 10219 "s" 10220 ], 10221 "permissions": { 10222 "actions": "a", 10223 "administration": "ad", 10224 "checks": "c", 10225 "contents": "co", 10226 "content_references": "cr", 10227 "deployments": "d", 10228 "environments": "e", 10229 "issues": "i", 10230 "metadata": "md", 10231 "members": "m", 10232 "organization_administration": "oa", 10233 "organization_hooks": "oh", 10234 "organization_plan": "op", 10235 "organization_pre_receive_hooks": "opr", 10236 "organization_projects": "op", 10237 "organization_secrets": "os", 10238 "organization_self_hosted_runners": "osh", 10239 "organization_user_blocking": "oub", 10240 "packages": "pkg", 10241 "pages": "pg", 10242 "pull_requests": "pr", 10243 "repository_hooks": "rh", 10244 "repository_projects": "rp", 10245 "repository_pre_receive_hooks": "rprh", 10246 "secrets": "s", 10247 "secret_scanning_alerts": "ssa", 10248 "security_events": "se", 10249 "single_file": "sf", 10250 "statuses": "s", 10251 "team_discussions": "td", 10252 "vulnerability_alerts": "va", 10253 "workflows": "w" 10254 }, 10255 "created_at": ` + referenceTimeStr + `, 10256 "updated_at": ` + referenceTimeStr + `, 10257 "has_multiple_single_files": false, 10258 "suspended_by": { 10259 "login": "l", 10260 "id": 1, 10261 "avatar_url": "a", 10262 "gravatar_id": "g", 10263 "name": "n", 10264 "company": "c", 10265 "blog": "b", 10266 "location": "l", 10267 "email": "e", 10268 "hireable": true, 10269 "bio": "b", 10270 "twitter_username": "t", 10271 "public_repos": 1, 10272 "followers": 1, 10273 "following": 1, 10274 "created_at": ` + referenceTimeStr + `, 10275 "suspended_at": ` + referenceTimeStr + `, 10276 "url": "u" 10277 }, 10278 "suspended_at": ` + referenceTimeStr + ` 10279 } 10280 }` 10281 10282 testJSONMarshal(t, u, want) 10283 } 10284 10285 func TestGollumEvent_Marshal(t *testing.T) { 10286 testJSONMarshal(t, &GollumEvent{}, "{}") 10287 10288 u := &GollumEvent{ 10289 Pages: []*Page{ 10290 { 10291 PageName: String("pn"), 10292 Title: String("t"), 10293 Summary: String("s"), 10294 Action: String("a"), 10295 SHA: String("sha"), 10296 HTMLURL: String("hu"), 10297 }, 10298 }, 10299 Repo: &Repository{ 10300 ID: Int64(1), 10301 URL: String("s"), 10302 Name: String("n"), 10303 }, 10304 Sender: &User{ 10305 Login: String("l"), 10306 ID: Int64(1), 10307 NodeID: String("n"), 10308 URL: String("u"), 10309 ReposURL: String("r"), 10310 EventsURL: String("e"), 10311 AvatarURL: String("a"), 10312 }, 10313 Installation: &Installation{ 10314 ID: Int64(1), 10315 NodeID: String("nid"), 10316 AppID: Int64(1), 10317 AppSlug: String("as"), 10318 TargetID: Int64(1), 10319 Account: &User{ 10320 Login: String("l"), 10321 ID: Int64(1), 10322 URL: String("u"), 10323 AvatarURL: String("a"), 10324 GravatarID: String("g"), 10325 Name: String("n"), 10326 Company: String("c"), 10327 Blog: String("b"), 10328 Location: String("l"), 10329 Email: String("e"), 10330 Hireable: Bool(true), 10331 Bio: String("b"), 10332 TwitterUsername: String("t"), 10333 PublicRepos: Int(1), 10334 Followers: Int(1), 10335 Following: Int(1), 10336 CreatedAt: &Timestamp{referenceTime}, 10337 SuspendedAt: &Timestamp{referenceTime}, 10338 }, 10339 AccessTokensURL: String("atu"), 10340 RepositoriesURL: String("ru"), 10341 HTMLURL: String("hu"), 10342 TargetType: String("tt"), 10343 SingleFileName: String("sfn"), 10344 RepositorySelection: String("rs"), 10345 Events: []string{"e"}, 10346 SingleFilePaths: []string{"s"}, 10347 Permissions: &InstallationPermissions{ 10348 Actions: String("a"), 10349 Administration: String("ad"), 10350 Checks: String("c"), 10351 Contents: String("co"), 10352 ContentReferences: String("cr"), 10353 Deployments: String("d"), 10354 Environments: String("e"), 10355 Issues: String("i"), 10356 Metadata: String("md"), 10357 Members: String("m"), 10358 OrganizationAdministration: String("oa"), 10359 OrganizationHooks: String("oh"), 10360 OrganizationPlan: String("op"), 10361 OrganizationPreReceiveHooks: String("opr"), 10362 OrganizationProjects: String("op"), 10363 OrganizationSecrets: String("os"), 10364 OrganizationSelfHostedRunners: String("osh"), 10365 OrganizationUserBlocking: String("oub"), 10366 Packages: String("pkg"), 10367 Pages: String("pg"), 10368 PullRequests: String("pr"), 10369 RepositoryHooks: String("rh"), 10370 RepositoryProjects: String("rp"), 10371 RepositoryPreReceiveHooks: String("rprh"), 10372 Secrets: String("s"), 10373 SecretScanningAlerts: String("ssa"), 10374 SecurityEvents: String("se"), 10375 SingleFile: String("sf"), 10376 Statuses: String("s"), 10377 TeamDiscussions: String("td"), 10378 VulnerabilityAlerts: String("va"), 10379 Workflows: String("w"), 10380 }, 10381 CreatedAt: &Timestamp{referenceTime}, 10382 UpdatedAt: &Timestamp{referenceTime}, 10383 HasMultipleSingleFiles: Bool(false), 10384 SuspendedBy: &User{ 10385 Login: String("l"), 10386 ID: Int64(1), 10387 URL: String("u"), 10388 AvatarURL: String("a"), 10389 GravatarID: String("g"), 10390 Name: String("n"), 10391 Company: String("c"), 10392 Blog: String("b"), 10393 Location: String("l"), 10394 Email: String("e"), 10395 Hireable: Bool(true), 10396 Bio: String("b"), 10397 TwitterUsername: String("t"), 10398 PublicRepos: Int(1), 10399 Followers: Int(1), 10400 Following: Int(1), 10401 CreatedAt: &Timestamp{referenceTime}, 10402 SuspendedAt: &Timestamp{referenceTime}, 10403 }, 10404 SuspendedAt: &Timestamp{referenceTime}, 10405 }, 10406 } 10407 10408 want := `{ 10409 "pages": [ 10410 { 10411 "page_name": "pn", 10412 "title": "t", 10413 "summary": "s", 10414 "action": "a", 10415 "sha": "sha", 10416 "html_url": "hu" 10417 } 10418 ], 10419 "repository": { 10420 "id": 1, 10421 "name": "n", 10422 "url": "s" 10423 }, 10424 "sender": { 10425 "login": "l", 10426 "id": 1, 10427 "node_id": "n", 10428 "avatar_url": "a", 10429 "url": "u", 10430 "events_url": "e", 10431 "repos_url": "r" 10432 }, 10433 "installation": { 10434 "id": 1, 10435 "node_id": "nid", 10436 "app_id": 1, 10437 "app_slug": "as", 10438 "target_id": 1, 10439 "account": { 10440 "login": "l", 10441 "id": 1, 10442 "avatar_url": "a", 10443 "gravatar_id": "g", 10444 "name": "n", 10445 "company": "c", 10446 "blog": "b", 10447 "location": "l", 10448 "email": "e", 10449 "hireable": true, 10450 "bio": "b", 10451 "twitter_username": "t", 10452 "public_repos": 1, 10453 "followers": 1, 10454 "following": 1, 10455 "created_at": ` + referenceTimeStr + `, 10456 "suspended_at": ` + referenceTimeStr + `, 10457 "url": "u" 10458 }, 10459 "access_tokens_url": "atu", 10460 "repositories_url": "ru", 10461 "html_url": "hu", 10462 "target_type": "tt", 10463 "single_file_name": "sfn", 10464 "repository_selection": "rs", 10465 "events": [ 10466 "e" 10467 ], 10468 "single_file_paths": [ 10469 "s" 10470 ], 10471 "permissions": { 10472 "actions": "a", 10473 "administration": "ad", 10474 "checks": "c", 10475 "contents": "co", 10476 "content_references": "cr", 10477 "deployments": "d", 10478 "environments": "e", 10479 "issues": "i", 10480 "metadata": "md", 10481 "members": "m", 10482 "organization_administration": "oa", 10483 "organization_hooks": "oh", 10484 "organization_plan": "op", 10485 "organization_pre_receive_hooks": "opr", 10486 "organization_projects": "op", 10487 "organization_secrets": "os", 10488 "organization_self_hosted_runners": "osh", 10489 "organization_user_blocking": "oub", 10490 "packages": "pkg", 10491 "pages": "pg", 10492 "pull_requests": "pr", 10493 "repository_hooks": "rh", 10494 "repository_projects": "rp", 10495 "repository_pre_receive_hooks": "rprh", 10496 "secrets": "s", 10497 "secret_scanning_alerts": "ssa", 10498 "security_events": "se", 10499 "single_file": "sf", 10500 "statuses": "s", 10501 "team_discussions": "td", 10502 "vulnerability_alerts": "va", 10503 "workflows": "w" 10504 }, 10505 "created_at": ` + referenceTimeStr + `, 10506 "updated_at": ` + referenceTimeStr + `, 10507 "has_multiple_single_files": false, 10508 "suspended_by": { 10509 "login": "l", 10510 "id": 1, 10511 "avatar_url": "a", 10512 "gravatar_id": "g", 10513 "name": "n", 10514 "company": "c", 10515 "blog": "b", 10516 "location": "l", 10517 "email": "e", 10518 "hireable": true, 10519 "bio": "b", 10520 "twitter_username": "t", 10521 "public_repos": 1, 10522 "followers": 1, 10523 "following": 1, 10524 "created_at": ` + referenceTimeStr + `, 10525 "suspended_at": ` + referenceTimeStr + `, 10526 "url": "u" 10527 }, 10528 "suspended_at": ` + referenceTimeStr + ` 10529 } 10530 }` 10531 10532 testJSONMarshal(t, u, want) 10533 } 10534 10535 func TestWorkflowRunEvent_Marshal(t *testing.T) { 10536 testJSONMarshal(t, &WorkflowRunEvent{}, "{}") 10537 10538 u := &WorkflowRunEvent{ 10539 Action: String("a"), 10540 Workflow: &Workflow{ 10541 ID: Int64(1), 10542 NodeID: String("nid"), 10543 Name: String("n"), 10544 Path: String("p"), 10545 State: String("s"), 10546 CreatedAt: &Timestamp{referenceTime}, 10547 UpdatedAt: &Timestamp{referenceTime}, 10548 URL: String("u"), 10549 HTMLURL: String("h"), 10550 BadgeURL: String("b"), 10551 }, 10552 WorkflowRun: &WorkflowRun{ 10553 ID: Int64(1), 10554 Name: String("n"), 10555 NodeID: String("nid"), 10556 HeadBranch: String("hb"), 10557 HeadSHA: String("hs"), 10558 RunNumber: Int(1), 10559 RunAttempt: Int(1), 10560 Event: String("e"), 10561 Status: String("s"), 10562 Conclusion: String("c"), 10563 WorkflowID: Int64(1), 10564 URL: String("u"), 10565 HTMLURL: String("h"), 10566 PullRequests: []*PullRequest{ 10567 { 10568 URL: String("u"), 10569 ID: Int64(1), 10570 Number: Int(1), 10571 Head: &PullRequestBranch{ 10572 Ref: String("r"), 10573 SHA: String("s"), 10574 Repo: &Repository{ 10575 ID: Int64(1), 10576 URL: String("s"), 10577 Name: String("n"), 10578 }, 10579 }, 10580 Base: &PullRequestBranch{ 10581 Ref: String("r"), 10582 SHA: String("s"), 10583 Repo: &Repository{ 10584 ID: Int64(1), 10585 URL: String("u"), 10586 Name: String("n"), 10587 }, 10588 }, 10589 }, 10590 }, 10591 CreatedAt: &Timestamp{referenceTime}, 10592 UpdatedAt: &Timestamp{referenceTime}, 10593 RunStartedAt: &Timestamp{referenceTime}, 10594 JobsURL: String("j"), 10595 LogsURL: String("l"), 10596 CheckSuiteURL: String("c"), 10597 ArtifactsURL: String("a"), 10598 CancelURL: String("c"), 10599 RerunURL: String("r"), 10600 PreviousAttemptURL: String("p"), 10601 HeadCommit: &HeadCommit{ 10602 Message: String("m"), 10603 Author: &CommitAuthor{ 10604 Name: String("n"), 10605 Email: String("e"), 10606 Login: String("l"), 10607 }, 10608 URL: String("u"), 10609 Distinct: Bool(false), 10610 SHA: String("s"), 10611 ID: String("i"), 10612 TreeID: String("tid"), 10613 Timestamp: &Timestamp{referenceTime}, 10614 Committer: &CommitAuthor{ 10615 Name: String("n"), 10616 Email: String("e"), 10617 Login: String("l"), 10618 }, 10619 }, 10620 WorkflowURL: String("w"), 10621 Repository: &Repository{ 10622 ID: Int64(1), 10623 URL: String("u"), 10624 Name: String("n"), 10625 }, 10626 HeadRepository: &Repository{ 10627 ID: Int64(1), 10628 URL: String("u"), 10629 Name: String("n"), 10630 }, 10631 }, 10632 Org: &Organization{ 10633 BillingEmail: String("be"), 10634 Blog: String("b"), 10635 Company: String("c"), 10636 Email: String("e"), 10637 TwitterUsername: String("tu"), 10638 Location: String("loc"), 10639 Name: String("n"), 10640 Description: String("d"), 10641 IsVerified: Bool(true), 10642 HasOrganizationProjects: Bool(true), 10643 HasRepositoryProjects: Bool(true), 10644 DefaultRepoPermission: String("drp"), 10645 MembersCanCreateRepos: Bool(true), 10646 MembersCanCreateInternalRepos: Bool(true), 10647 MembersCanCreatePrivateRepos: Bool(true), 10648 MembersCanCreatePublicRepos: Bool(false), 10649 MembersAllowedRepositoryCreationType: String("marct"), 10650 MembersCanCreatePages: Bool(true), 10651 MembersCanCreatePublicPages: Bool(false), 10652 MembersCanCreatePrivatePages: Bool(true), 10653 }, 10654 Repo: &Repository{ 10655 ID: Int64(1), 10656 URL: String("s"), 10657 Name: String("n"), 10658 }, 10659 Sender: &User{ 10660 Login: String("l"), 10661 ID: Int64(1), 10662 NodeID: String("n"), 10663 URL: String("u"), 10664 ReposURL: String("r"), 10665 EventsURL: String("e"), 10666 AvatarURL: String("a"), 10667 }, 10668 } 10669 10670 want := `{ 10671 "action": "a", 10672 "workflow": { 10673 "id": 1, 10674 "node_id": "nid", 10675 "name": "n", 10676 "path": "p", 10677 "state": "s", 10678 "created_at": ` + referenceTimeStr + `, 10679 "updated_at": ` + referenceTimeStr + `, 10680 "url": "u", 10681 "html_url": "h", 10682 "badge_url": "b" 10683 }, 10684 "workflow_run": { 10685 "id": 1, 10686 "name": "n", 10687 "node_id": "nid", 10688 "head_branch": "hb", 10689 "head_sha": "hs", 10690 "run_number": 1, 10691 "run_attempt": 1, 10692 "event": "e", 10693 "status": "s", 10694 "conclusion": "c", 10695 "workflow_id": 1, 10696 "url": "u", 10697 "html_url": "h", 10698 "pull_requests": [ 10699 { 10700 "id": 1, 10701 "number": 1, 10702 "url": "u", 10703 "head": { 10704 "ref": "r", 10705 "sha": "s", 10706 "repo": { 10707 "id": 1, 10708 "name": "n", 10709 "url": "s" 10710 } 10711 }, 10712 "base": { 10713 "ref": "r", 10714 "sha": "s", 10715 "repo": { 10716 "id": 1, 10717 "name": "n", 10718 "url": "u" 10719 } 10720 } 10721 } 10722 ], 10723 "created_at": ` + referenceTimeStr + `, 10724 "updated_at": ` + referenceTimeStr + `, 10725 "run_started_at": ` + referenceTimeStr + `, 10726 "jobs_url": "j", 10727 "logs_url": "l", 10728 "check_suite_url": "c", 10729 "artifacts_url": "a", 10730 "cancel_url": "c", 10731 "rerun_url": "r", 10732 "previous_attempt_url": "p", 10733 "head_commit": { 10734 "message": "m", 10735 "author": { 10736 "name": "n", 10737 "email": "e", 10738 "username": "l" 10739 }, 10740 "url": "u", 10741 "distinct": false, 10742 "sha": "s", 10743 "id": "i", 10744 "tree_id": "tid", 10745 "timestamp": ` + referenceTimeStr + `, 10746 "committer": { 10747 "name": "n", 10748 "email": "e", 10749 "username": "l" 10750 } 10751 }, 10752 "workflow_url": "w", 10753 "repository": { 10754 "id": 1, 10755 "name": "n", 10756 "url": "u" 10757 }, 10758 "head_repository": { 10759 "id": 1, 10760 "name": "n", 10761 "url": "u" 10762 } 10763 }, 10764 "organization": { 10765 "name": "n", 10766 "company": "c", 10767 "blog": "b", 10768 "location": "loc", 10769 "email": "e", 10770 "twitter_username": "tu", 10771 "description": "d", 10772 "billing_email": "be", 10773 "is_verified": true, 10774 "has_organization_projects": true, 10775 "has_repository_projects": true, 10776 "default_repository_permission": "drp", 10777 "members_can_create_repositories": true, 10778 "members_can_create_public_repositories": false, 10779 "members_can_create_private_repositories": true, 10780 "members_can_create_internal_repositories": true, 10781 "members_allowed_repository_creation_type": "marct", 10782 "members_can_create_pages": true, 10783 "members_can_create_public_pages": false, 10784 "members_can_create_private_pages": true 10785 }, 10786 "repository": { 10787 "id": 1, 10788 "name": "n", 10789 "url": "s" 10790 }, 10791 "sender": { 10792 "login": "l", 10793 "id": 1, 10794 "node_id": "n", 10795 "avatar_url": "a", 10796 "url": "u", 10797 "events_url": "e", 10798 "repos_url": "r" 10799 } 10800 }` 10801 10802 testJSONMarshal(t, u, want) 10803 } 10804 10805 func TestWorkflowDispatchEvent_Marshal(t *testing.T) { 10806 testJSONMarshal(t, &WorkflowDispatchEvent{}, "{}") 10807 10808 i := make(map[string]interface{}) 10809 i["key"] = "value" 10810 10811 jsonMsg, _ := json.Marshal(i) 10812 u := &WorkflowDispatchEvent{ 10813 Inputs: jsonMsg, 10814 Ref: String("r"), 10815 Workflow: String("w"), 10816 Repo: &Repository{ 10817 ID: Int64(1), 10818 URL: String("s"), 10819 Name: String("n"), 10820 }, 10821 Org: &Organization{ 10822 BillingEmail: String("be"), 10823 Blog: String("b"), 10824 Company: String("c"), 10825 Email: String("e"), 10826 TwitterUsername: String("tu"), 10827 Location: String("loc"), 10828 Name: String("n"), 10829 Description: String("d"), 10830 IsVerified: Bool(true), 10831 HasOrganizationProjects: Bool(true), 10832 HasRepositoryProjects: Bool(true), 10833 DefaultRepoPermission: String("drp"), 10834 MembersCanCreateRepos: Bool(true), 10835 MembersCanCreateInternalRepos: Bool(true), 10836 MembersCanCreatePrivateRepos: Bool(true), 10837 MembersCanCreatePublicRepos: Bool(false), 10838 MembersAllowedRepositoryCreationType: String("marct"), 10839 MembersCanCreatePages: Bool(true), 10840 MembersCanCreatePublicPages: Bool(false), 10841 MembersCanCreatePrivatePages: Bool(true), 10842 }, 10843 Sender: &User{ 10844 Login: String("l"), 10845 ID: Int64(1), 10846 NodeID: String("n"), 10847 URL: String("u"), 10848 ReposURL: String("r"), 10849 EventsURL: String("e"), 10850 AvatarURL: String("a"), 10851 }, 10852 } 10853 10854 want := `{ 10855 "inputs": { 10856 "key": "value" 10857 }, 10858 "ref": "r", 10859 "workflow": "w", 10860 "repository": { 10861 "id": 1, 10862 "name": "n", 10863 "url": "s" 10864 }, 10865 "organization": { 10866 "name": "n", 10867 "company": "c", 10868 "blog": "b", 10869 "location": "loc", 10870 "email": "e", 10871 "twitter_username": "tu", 10872 "description": "d", 10873 "billing_email": "be", 10874 "is_verified": true, 10875 "has_organization_projects": true, 10876 "has_repository_projects": true, 10877 "default_repository_permission": "drp", 10878 "members_can_create_repositories": true, 10879 "members_can_create_public_repositories": false, 10880 "members_can_create_private_repositories": true, 10881 "members_can_create_internal_repositories": true, 10882 "members_allowed_repository_creation_type": "marct", 10883 "members_can_create_pages": true, 10884 "members_can_create_public_pages": false, 10885 "members_can_create_private_pages": true 10886 }, 10887 "sender": { 10888 "login": "l", 10889 "id": 1, 10890 "node_id": "n", 10891 "avatar_url": "a", 10892 "url": "u", 10893 "events_url": "e", 10894 "repos_url": "r" 10895 } 10896 }` 10897 10898 testJSONMarshal(t, u, want) 10899 } 10900 10901 func TestWatchEvent_Marshal(t *testing.T) { 10902 testJSONMarshal(t, &WatchEvent{}, "{}") 10903 10904 u := &WatchEvent{ 10905 Action: String("a"), 10906 Repo: &Repository{ 10907 ID: Int64(1), 10908 URL: String("s"), 10909 Name: String("n"), 10910 }, 10911 Sender: &User{ 10912 Login: String("l"), 10913 ID: Int64(1), 10914 NodeID: String("n"), 10915 URL: String("u"), 10916 ReposURL: String("r"), 10917 EventsURL: String("e"), 10918 AvatarURL: String("a"), 10919 }, 10920 Installation: &Installation{ 10921 ID: Int64(1), 10922 NodeID: String("nid"), 10923 AppID: Int64(1), 10924 AppSlug: String("as"), 10925 TargetID: Int64(1), 10926 Account: &User{ 10927 Login: String("l"), 10928 ID: Int64(1), 10929 URL: String("u"), 10930 AvatarURL: String("a"), 10931 GravatarID: String("g"), 10932 Name: String("n"), 10933 Company: String("c"), 10934 Blog: String("b"), 10935 Location: String("l"), 10936 Email: String("e"), 10937 Hireable: Bool(true), 10938 Bio: String("b"), 10939 TwitterUsername: String("t"), 10940 PublicRepos: Int(1), 10941 Followers: Int(1), 10942 Following: Int(1), 10943 CreatedAt: &Timestamp{referenceTime}, 10944 SuspendedAt: &Timestamp{referenceTime}, 10945 }, 10946 AccessTokensURL: String("atu"), 10947 RepositoriesURL: String("ru"), 10948 HTMLURL: String("hu"), 10949 TargetType: String("tt"), 10950 SingleFileName: String("sfn"), 10951 RepositorySelection: String("rs"), 10952 Events: []string{"e"}, 10953 SingleFilePaths: []string{"s"}, 10954 Permissions: &InstallationPermissions{ 10955 Actions: String("a"), 10956 Administration: String("ad"), 10957 Checks: String("c"), 10958 Contents: String("co"), 10959 ContentReferences: String("cr"), 10960 Deployments: String("d"), 10961 Environments: String("e"), 10962 Issues: String("i"), 10963 Metadata: String("md"), 10964 Members: String("m"), 10965 OrganizationAdministration: String("oa"), 10966 OrganizationHooks: String("oh"), 10967 OrganizationPlan: String("op"), 10968 OrganizationPreReceiveHooks: String("opr"), 10969 OrganizationProjects: String("op"), 10970 OrganizationSecrets: String("os"), 10971 OrganizationSelfHostedRunners: String("osh"), 10972 OrganizationUserBlocking: String("oub"), 10973 Packages: String("pkg"), 10974 Pages: String("pg"), 10975 PullRequests: String("pr"), 10976 RepositoryHooks: String("rh"), 10977 RepositoryProjects: String("rp"), 10978 RepositoryPreReceiveHooks: String("rprh"), 10979 Secrets: String("s"), 10980 SecretScanningAlerts: String("ssa"), 10981 SecurityEvents: String("se"), 10982 SingleFile: String("sf"), 10983 Statuses: String("s"), 10984 TeamDiscussions: String("td"), 10985 VulnerabilityAlerts: String("va"), 10986 Workflows: String("w"), 10987 }, 10988 CreatedAt: &Timestamp{referenceTime}, 10989 UpdatedAt: &Timestamp{referenceTime}, 10990 HasMultipleSingleFiles: Bool(false), 10991 SuspendedBy: &User{ 10992 Login: String("l"), 10993 ID: Int64(1), 10994 URL: String("u"), 10995 AvatarURL: String("a"), 10996 GravatarID: String("g"), 10997 Name: String("n"), 10998 Company: String("c"), 10999 Blog: String("b"), 11000 Location: String("l"), 11001 Email: String("e"), 11002 Hireable: Bool(true), 11003 Bio: String("b"), 11004 TwitterUsername: String("t"), 11005 PublicRepos: Int(1), 11006 Followers: Int(1), 11007 Following: Int(1), 11008 CreatedAt: &Timestamp{referenceTime}, 11009 SuspendedAt: &Timestamp{referenceTime}, 11010 }, 11011 SuspendedAt: &Timestamp{referenceTime}, 11012 }, 11013 } 11014 11015 want := `{ 11016 "action": "a", 11017 "repository": { 11018 "id": 1, 11019 "name": "n", 11020 "url": "s" 11021 }, 11022 "sender": { 11023 "login": "l", 11024 "id": 1, 11025 "node_id": "n", 11026 "avatar_url": "a", 11027 "url": "u", 11028 "events_url": "e", 11029 "repos_url": "r" 11030 }, 11031 "installation": { 11032 "id": 1, 11033 "node_id": "nid", 11034 "app_id": 1, 11035 "app_slug": "as", 11036 "target_id": 1, 11037 "account": { 11038 "login": "l", 11039 "id": 1, 11040 "avatar_url": "a", 11041 "gravatar_id": "g", 11042 "name": "n", 11043 "company": "c", 11044 "blog": "b", 11045 "location": "l", 11046 "email": "e", 11047 "hireable": true, 11048 "bio": "b", 11049 "twitter_username": "t", 11050 "public_repos": 1, 11051 "followers": 1, 11052 "following": 1, 11053 "created_at": ` + referenceTimeStr + `, 11054 "suspended_at": ` + referenceTimeStr + `, 11055 "url": "u" 11056 }, 11057 "access_tokens_url": "atu", 11058 "repositories_url": "ru", 11059 "html_url": "hu", 11060 "target_type": "tt", 11061 "single_file_name": "sfn", 11062 "repository_selection": "rs", 11063 "events": [ 11064 "e" 11065 ], 11066 "single_file_paths": [ 11067 "s" 11068 ], 11069 "permissions": { 11070 "actions": "a", 11071 "administration": "ad", 11072 "checks": "c", 11073 "contents": "co", 11074 "content_references": "cr", 11075 "deployments": "d", 11076 "environments": "e", 11077 "issues": "i", 11078 "metadata": "md", 11079 "members": "m", 11080 "organization_administration": "oa", 11081 "organization_hooks": "oh", 11082 "organization_plan": "op", 11083 "organization_pre_receive_hooks": "opr", 11084 "organization_projects": "op", 11085 "organization_secrets": "os", 11086 "organization_self_hosted_runners": "osh", 11087 "organization_user_blocking": "oub", 11088 "packages": "pkg", 11089 "pages": "pg", 11090 "pull_requests": "pr", 11091 "repository_hooks": "rh", 11092 "repository_projects": "rp", 11093 "repository_pre_receive_hooks": "rprh", 11094 "secrets": "s", 11095 "secret_scanning_alerts": "ssa", 11096 "security_events": "se", 11097 "single_file": "sf", 11098 "statuses": "s", 11099 "team_discussions": "td", 11100 "vulnerability_alerts": "va", 11101 "workflows": "w" 11102 }, 11103 "created_at": ` + referenceTimeStr + `, 11104 "updated_at": ` + referenceTimeStr + `, 11105 "has_multiple_single_files": false, 11106 "suspended_by": { 11107 "login": "l", 11108 "id": 1, 11109 "avatar_url": "a", 11110 "gravatar_id": "g", 11111 "name": "n", 11112 "company": "c", 11113 "blog": "b", 11114 "location": "l", 11115 "email": "e", 11116 "hireable": true, 11117 "bio": "b", 11118 "twitter_username": "t", 11119 "public_repos": 1, 11120 "followers": 1, 11121 "following": 1, 11122 "created_at": ` + referenceTimeStr + `, 11123 "suspended_at": ` + referenceTimeStr + `, 11124 "url": "u" 11125 }, 11126 "suspended_at": ` + referenceTimeStr + ` 11127 } 11128 }` 11129 11130 testJSONMarshal(t, u, want) 11131 } 11132 11133 func TestUserEvent_Marshal(t *testing.T) { 11134 testJSONMarshal(t, &UserEvent{}, "{}") 11135 11136 u := &UserEvent{ 11137 User: &User{ 11138 Login: String("l"), 11139 ID: Int64(1), 11140 NodeID: String("n"), 11141 URL: String("u"), 11142 ReposURL: String("r"), 11143 EventsURL: String("e"), 11144 AvatarURL: String("a"), 11145 }, 11146 // The action performed. Possible values are: "created" or "deleted". 11147 Action: String("a"), 11148 Enterprise: &Enterprise{ 11149 ID: Int(1), 11150 Slug: String("s"), 11151 Name: String("n"), 11152 NodeID: String("nid"), 11153 AvatarURL: String("au"), 11154 Description: String("d"), 11155 WebsiteURL: String("wu"), 11156 HTMLURL: String("hu"), 11157 CreatedAt: &Timestamp{referenceTime}, 11158 UpdatedAt: &Timestamp{referenceTime}, 11159 }, 11160 Sender: &User{ 11161 Login: String("l"), 11162 ID: Int64(1), 11163 NodeID: String("n"), 11164 URL: String("u"), 11165 ReposURL: String("r"), 11166 EventsURL: String("e"), 11167 AvatarURL: String("a"), 11168 }, 11169 } 11170 11171 want := `{ 11172 "user": { 11173 "login": "l", 11174 "id": 1, 11175 "node_id": "n", 11176 "avatar_url": "a", 11177 "url": "u", 11178 "events_url": "e", 11179 "repos_url": "r" 11180 }, 11181 "action": "a", 11182 "enterprise": { 11183 "id": 1, 11184 "slug": "s", 11185 "name": "n", 11186 "node_id": "nid", 11187 "avatar_url": "au", 11188 "description": "d", 11189 "website_url": "wu", 11190 "html_url": "hu", 11191 "created_at": ` + referenceTimeStr + `, 11192 "updated_at": ` + referenceTimeStr + ` 11193 }, 11194 "sender": { 11195 "login": "l", 11196 "id": 1, 11197 "node_id": "n", 11198 "avatar_url": "a", 11199 "url": "u", 11200 "events_url": "e", 11201 "repos_url": "r" 11202 } 11203 }` 11204 11205 testJSONMarshal(t, u, want) 11206 } 11207 11208 func TestCheckRunEvent_Marshal(t *testing.T) { 11209 testJSONMarshal(t, &CheckRunEvent{}, "{}") 11210 11211 r := &CheckRunEvent{ 11212 CheckRun: &CheckRun{ 11213 ID: Int64(1), 11214 NodeID: String("n"), 11215 HeadSHA: String("h"), 11216 ExternalID: String("1"), 11217 URL: String("u"), 11218 HTMLURL: String("u"), 11219 DetailsURL: String("u"), 11220 Status: String("s"), 11221 Conclusion: String("c"), 11222 StartedAt: &Timestamp{referenceTime}, 11223 CompletedAt: &Timestamp{referenceTime}, 11224 Output: &CheckRunOutput{ 11225 Annotations: []*CheckRunAnnotation{ 11226 { 11227 AnnotationLevel: String("a"), 11228 EndLine: Int(1), 11229 Message: String("m"), 11230 Path: String("p"), 11231 RawDetails: String("r"), 11232 StartLine: Int(1), 11233 Title: String("t"), 11234 }, 11235 }, 11236 AnnotationsCount: Int(1), 11237 AnnotationsURL: String("a"), 11238 Images: []*CheckRunImage{ 11239 { 11240 Alt: String("a"), 11241 ImageURL: String("i"), 11242 Caption: String("c"), 11243 }, 11244 }, 11245 Title: String("t"), 11246 Summary: String("s"), 11247 Text: String("t"), 11248 }, 11249 Name: String("n"), 11250 CheckSuite: &CheckSuite{ 11251 ID: Int64(1), 11252 }, 11253 App: &App{ 11254 ID: Int64(1), 11255 NodeID: String("n"), 11256 Owner: &User{ 11257 Login: String("l"), 11258 ID: Int64(1), 11259 NodeID: String("n"), 11260 URL: String("u"), 11261 ReposURL: String("r"), 11262 EventsURL: String("e"), 11263 AvatarURL: String("a"), 11264 }, 11265 Name: String("n"), 11266 Description: String("d"), 11267 HTMLURL: String("h"), 11268 ExternalURL: String("u"), 11269 CreatedAt: &Timestamp{referenceTime}, 11270 UpdatedAt: &Timestamp{referenceTime}, 11271 }, 11272 PullRequests: []*PullRequest{ 11273 { 11274 URL: String("u"), 11275 ID: Int64(1), 11276 Number: Int(1), 11277 Head: &PullRequestBranch{ 11278 Ref: String("r"), 11279 SHA: String("s"), 11280 Repo: &Repository{ 11281 ID: Int64(1), 11282 URL: String("s"), 11283 Name: String("n"), 11284 }, 11285 }, 11286 Base: &PullRequestBranch{ 11287 Ref: String("r"), 11288 SHA: String("s"), 11289 Repo: &Repository{ 11290 ID: Int64(1), 11291 URL: String("u"), 11292 Name: String("n"), 11293 }, 11294 }, 11295 }, 11296 }, 11297 }, 11298 Action: String("a"), 11299 Repo: &Repository{ 11300 ID: Int64(1), 11301 URL: String("s"), 11302 Name: String("n"), 11303 }, 11304 Org: &Organization{ 11305 BillingEmail: String("be"), 11306 Blog: String("b"), 11307 Company: String("c"), 11308 Email: String("e"), 11309 TwitterUsername: String("tu"), 11310 Location: String("loc"), 11311 Name: String("n"), 11312 Description: String("d"), 11313 IsVerified: Bool(true), 11314 HasOrganizationProjects: Bool(true), 11315 HasRepositoryProjects: Bool(true), 11316 DefaultRepoPermission: String("drp"), 11317 MembersCanCreateRepos: Bool(true), 11318 MembersCanCreateInternalRepos: Bool(true), 11319 MembersCanCreatePrivateRepos: Bool(true), 11320 MembersCanCreatePublicRepos: Bool(false), 11321 MembersAllowedRepositoryCreationType: String("marct"), 11322 MembersCanCreatePages: Bool(true), 11323 MembersCanCreatePublicPages: Bool(false), 11324 MembersCanCreatePrivatePages: Bool(true), 11325 }, 11326 Sender: &User{ 11327 Login: String("l"), 11328 ID: Int64(1), 11329 NodeID: String("n"), 11330 URL: String("u"), 11331 ReposURL: String("r"), 11332 EventsURL: String("e"), 11333 AvatarURL: String("a"), 11334 }, 11335 Installation: &Installation{ 11336 ID: Int64(1), 11337 NodeID: String("nid"), 11338 AppID: Int64(1), 11339 AppSlug: String("as"), 11340 TargetID: Int64(1), 11341 Account: &User{ 11342 Login: String("l"), 11343 ID: Int64(1), 11344 URL: String("u"), 11345 AvatarURL: String("a"), 11346 GravatarID: String("g"), 11347 Name: String("n"), 11348 Company: String("c"), 11349 Blog: String("b"), 11350 Location: String("l"), 11351 Email: String("e"), 11352 Hireable: Bool(true), 11353 Bio: String("b"), 11354 TwitterUsername: String("t"), 11355 PublicRepos: Int(1), 11356 Followers: Int(1), 11357 Following: Int(1), 11358 CreatedAt: &Timestamp{referenceTime}, 11359 SuspendedAt: &Timestamp{referenceTime}, 11360 }, 11361 AccessTokensURL: String("atu"), 11362 RepositoriesURL: String("ru"), 11363 HTMLURL: String("hu"), 11364 TargetType: String("tt"), 11365 SingleFileName: String("sfn"), 11366 RepositorySelection: String("rs"), 11367 Events: []string{"e"}, 11368 SingleFilePaths: []string{"s"}, 11369 Permissions: &InstallationPermissions{ 11370 Actions: String("a"), 11371 Administration: String("ad"), 11372 Checks: String("c"), 11373 Contents: String("co"), 11374 ContentReferences: String("cr"), 11375 Deployments: String("d"), 11376 Environments: String("e"), 11377 Issues: String("i"), 11378 Metadata: String("md"), 11379 Members: String("m"), 11380 OrganizationAdministration: String("oa"), 11381 OrganizationHooks: String("oh"), 11382 OrganizationPlan: String("op"), 11383 OrganizationPreReceiveHooks: String("opr"), 11384 OrganizationProjects: String("op"), 11385 OrganizationSecrets: String("os"), 11386 OrganizationSelfHostedRunners: String("osh"), 11387 OrganizationUserBlocking: String("oub"), 11388 Packages: String("pkg"), 11389 Pages: String("pg"), 11390 PullRequests: String("pr"), 11391 RepositoryHooks: String("rh"), 11392 RepositoryProjects: String("rp"), 11393 RepositoryPreReceiveHooks: String("rprh"), 11394 Secrets: String("s"), 11395 SecretScanningAlerts: String("ssa"), 11396 SecurityEvents: String("se"), 11397 SingleFile: String("sf"), 11398 Statuses: String("s"), 11399 TeamDiscussions: String("td"), 11400 VulnerabilityAlerts: String("va"), 11401 Workflows: String("w"), 11402 }, 11403 CreatedAt: &Timestamp{referenceTime}, 11404 UpdatedAt: &Timestamp{referenceTime}, 11405 HasMultipleSingleFiles: Bool(false), 11406 SuspendedBy: &User{ 11407 Login: String("l"), 11408 ID: Int64(1), 11409 URL: String("u"), 11410 AvatarURL: String("a"), 11411 GravatarID: String("g"), 11412 Name: String("n"), 11413 Company: String("c"), 11414 Blog: String("b"), 11415 Location: String("l"), 11416 Email: String("e"), 11417 Hireable: Bool(true), 11418 Bio: String("b"), 11419 TwitterUsername: String("t"), 11420 PublicRepos: Int(1), 11421 Followers: Int(1), 11422 Following: Int(1), 11423 CreatedAt: &Timestamp{referenceTime}, 11424 SuspendedAt: &Timestamp{referenceTime}, 11425 }, 11426 SuspendedAt: &Timestamp{referenceTime}, 11427 }, 11428 RequestedAction: &RequestedAction{ 11429 Identifier: "i", 11430 }, 11431 } 11432 11433 want := `{ 11434 "check_run": { 11435 "id": 1, 11436 "node_id": "n", 11437 "head_sha": "h", 11438 "external_id": "1", 11439 "url": "u", 11440 "html_url": "u", 11441 "details_url": "u", 11442 "status": "s", 11443 "conclusion": "c", 11444 "started_at": ` + referenceTimeStr + `, 11445 "completed_at": ` + referenceTimeStr + `, 11446 "output": { 11447 "title": "t", 11448 "summary": "s", 11449 "text": "t", 11450 "annotations_count": 1, 11451 "annotations_url": "a", 11452 "annotations": [ 11453 { 11454 "path": "p", 11455 "start_line": 1, 11456 "end_line": 1, 11457 "annotation_level": "a", 11458 "message": "m", 11459 "title": "t", 11460 "raw_details": "r" 11461 } 11462 ], 11463 "images": [ 11464 { 11465 "alt": "a", 11466 "image_url": "i", 11467 "caption": "c" 11468 } 11469 ] 11470 }, 11471 "name": "n", 11472 "check_suite": { 11473 "id": 1 11474 }, 11475 "app": { 11476 "id": 1, 11477 "node_id": "n", 11478 "owner": { 11479 "login": "l", 11480 "id": 1, 11481 "node_id": "n", 11482 "avatar_url": "a", 11483 "url": "u", 11484 "events_url": "e", 11485 "repos_url": "r" 11486 }, 11487 "name": "n", 11488 "description": "d", 11489 "external_url": "u", 11490 "html_url": "h", 11491 "created_at": ` + referenceTimeStr + `, 11492 "updated_at": ` + referenceTimeStr + ` 11493 }, 11494 "pull_requests": [ 11495 { 11496 "id": 1, 11497 "number": 1, 11498 "url": "u", 11499 "head": { 11500 "ref": "r", 11501 "sha": "s", 11502 "repo": { 11503 "id": 1, 11504 "name": "n", 11505 "url": "s" 11506 } 11507 }, 11508 "base": { 11509 "ref": "r", 11510 "sha": "s", 11511 "repo": { 11512 "id": 1, 11513 "name": "n", 11514 "url": "u" 11515 } 11516 } 11517 } 11518 ] 11519 }, 11520 "action": "a", 11521 "repository": { 11522 "id": 1, 11523 "name": "n", 11524 "url": "s" 11525 }, 11526 "organization": { 11527 "name": "n", 11528 "company": "c", 11529 "blog": "b", 11530 "location": "loc", 11531 "email": "e", 11532 "twitter_username": "tu", 11533 "description": "d", 11534 "billing_email": "be", 11535 "is_verified": true, 11536 "has_organization_projects": true, 11537 "has_repository_projects": true, 11538 "default_repository_permission": "drp", 11539 "members_can_create_repositories": true, 11540 "members_can_create_public_repositories": false, 11541 "members_can_create_private_repositories": true, 11542 "members_can_create_internal_repositories": true, 11543 "members_allowed_repository_creation_type": "marct", 11544 "members_can_create_pages": true, 11545 "members_can_create_public_pages": false, 11546 "members_can_create_private_pages": true 11547 }, 11548 "sender": { 11549 "login": "l", 11550 "id": 1, 11551 "node_id": "n", 11552 "avatar_url": "a", 11553 "url": "u", 11554 "events_url": "e", 11555 "repos_url": "r" 11556 }, 11557 "installation": { 11558 "id": 1, 11559 "node_id": "nid", 11560 "app_id": 1, 11561 "app_slug": "as", 11562 "target_id": 1, 11563 "account": { 11564 "login": "l", 11565 "id": 1, 11566 "avatar_url": "a", 11567 "gravatar_id": "g", 11568 "name": "n", 11569 "company": "c", 11570 "blog": "b", 11571 "location": "l", 11572 "email": "e", 11573 "hireable": true, 11574 "bio": "b", 11575 "twitter_username": "t", 11576 "public_repos": 1, 11577 "followers": 1, 11578 "following": 1, 11579 "created_at": ` + referenceTimeStr + `, 11580 "suspended_at": ` + referenceTimeStr + `, 11581 "url": "u" 11582 }, 11583 "access_tokens_url": "atu", 11584 "repositories_url": "ru", 11585 "html_url": "hu", 11586 "target_type": "tt", 11587 "single_file_name": "sfn", 11588 "repository_selection": "rs", 11589 "events": [ 11590 "e" 11591 ], 11592 "single_file_paths": [ 11593 "s" 11594 ], 11595 "permissions": { 11596 "actions": "a", 11597 "administration": "ad", 11598 "checks": "c", 11599 "contents": "co", 11600 "content_references": "cr", 11601 "deployments": "d", 11602 "environments": "e", 11603 "issues": "i", 11604 "metadata": "md", 11605 "members": "m", 11606 "organization_administration": "oa", 11607 "organization_hooks": "oh", 11608 "organization_plan": "op", 11609 "organization_pre_receive_hooks": "opr", 11610 "organization_projects": "op", 11611 "organization_secrets": "os", 11612 "organization_self_hosted_runners": "osh", 11613 "organization_user_blocking": "oub", 11614 "packages": "pkg", 11615 "pages": "pg", 11616 "pull_requests": "pr", 11617 "repository_hooks": "rh", 11618 "repository_projects": "rp", 11619 "repository_pre_receive_hooks": "rprh", 11620 "secrets": "s", 11621 "secret_scanning_alerts": "ssa", 11622 "security_events": "se", 11623 "single_file": "sf", 11624 "statuses": "s", 11625 "team_discussions": "td", 11626 "vulnerability_alerts": "va", 11627 "workflows": "w" 11628 }, 11629 "created_at": ` + referenceTimeStr + `, 11630 "updated_at": ` + referenceTimeStr + `, 11631 "has_multiple_single_files": false, 11632 "suspended_by": { 11633 "login": "l", 11634 "id": 1, 11635 "avatar_url": "a", 11636 "gravatar_id": "g", 11637 "name": "n", 11638 "company": "c", 11639 "blog": "b", 11640 "location": "l", 11641 "email": "e", 11642 "hireable": true, 11643 "bio": "b", 11644 "twitter_username": "t", 11645 "public_repos": 1, 11646 "followers": 1, 11647 "following": 1, 11648 "created_at": ` + referenceTimeStr + `, 11649 "suspended_at": ` + referenceTimeStr + `, 11650 "url": "u" 11651 }, 11652 "suspended_at": ` + referenceTimeStr + ` 11653 }, 11654 "requested_action": { 11655 "identifier": "i" 11656 } 11657 }` 11658 11659 testJSONMarshal(t, r, want) 11660 } 11661 11662 func TestCheckSuiteEvent_Marshal(t *testing.T) { 11663 testJSONMarshal(t, &CheckSuiteEvent{}, "{}") 11664 11665 r := &CheckSuiteEvent{ 11666 CheckSuite: &CheckSuite{ 11667 ID: Int64(1), 11668 NodeID: String("n"), 11669 HeadBranch: String("h"), 11670 HeadSHA: String("h"), 11671 URL: String("u"), 11672 BeforeSHA: String("b"), 11673 AfterSHA: String("a"), 11674 Status: String("s"), 11675 Conclusion: String("c"), 11676 App: &App{ 11677 ID: Int64(1), 11678 NodeID: String("n"), 11679 Owner: &User{ 11680 Login: String("l"), 11681 ID: Int64(1), 11682 NodeID: String("n"), 11683 URL: String("u"), 11684 ReposURL: String("r"), 11685 EventsURL: String("e"), 11686 AvatarURL: String("a"), 11687 }, 11688 Name: String("n"), 11689 Description: String("d"), 11690 HTMLURL: String("h"), 11691 ExternalURL: String("u"), 11692 CreatedAt: &Timestamp{referenceTime}, 11693 UpdatedAt: &Timestamp{referenceTime}, 11694 }, 11695 Repository: &Repository{ 11696 ID: Int64(1), 11697 }, 11698 PullRequests: []*PullRequest{ 11699 { 11700 URL: String("u"), 11701 ID: Int64(1), 11702 Number: Int(1), 11703 Head: &PullRequestBranch{ 11704 Ref: String("r"), 11705 SHA: String("s"), 11706 Repo: &Repository{ 11707 ID: Int64(1), 11708 URL: String("s"), 11709 Name: String("n"), 11710 }, 11711 }, 11712 Base: &PullRequestBranch{ 11713 Ref: String("r"), 11714 SHA: String("s"), 11715 Repo: &Repository{ 11716 ID: Int64(1), 11717 URL: String("u"), 11718 Name: String("n"), 11719 }, 11720 }, 11721 }, 11722 }, 11723 HeadCommit: &Commit{ 11724 SHA: String("s"), 11725 }, 11726 }, 11727 Action: String("a"), 11728 Repo: &Repository{ 11729 ID: Int64(1), 11730 URL: String("s"), 11731 Name: String("n"), 11732 }, 11733 Org: &Organization{ 11734 BillingEmail: String("be"), 11735 Blog: String("b"), 11736 Company: String("c"), 11737 Email: String("e"), 11738 TwitterUsername: String("tu"), 11739 Location: String("loc"), 11740 Name: String("n"), 11741 Description: String("d"), 11742 IsVerified: Bool(true), 11743 HasOrganizationProjects: Bool(true), 11744 HasRepositoryProjects: Bool(true), 11745 DefaultRepoPermission: String("drp"), 11746 MembersCanCreateRepos: Bool(true), 11747 MembersCanCreateInternalRepos: Bool(true), 11748 MembersCanCreatePrivateRepos: Bool(true), 11749 MembersCanCreatePublicRepos: Bool(false), 11750 MembersAllowedRepositoryCreationType: String("marct"), 11751 MembersCanCreatePages: Bool(true), 11752 MembersCanCreatePublicPages: Bool(false), 11753 MembersCanCreatePrivatePages: Bool(true), 11754 }, 11755 Sender: &User{ 11756 Login: String("l"), 11757 ID: Int64(1), 11758 NodeID: String("n"), 11759 URL: String("u"), 11760 ReposURL: String("r"), 11761 EventsURL: String("e"), 11762 AvatarURL: String("a"), 11763 }, 11764 Installation: &Installation{ 11765 ID: Int64(1), 11766 NodeID: String("nid"), 11767 AppID: Int64(1), 11768 AppSlug: String("as"), 11769 TargetID: Int64(1), 11770 Account: &User{ 11771 Login: String("l"), 11772 ID: Int64(1), 11773 URL: String("u"), 11774 AvatarURL: String("a"), 11775 GravatarID: String("g"), 11776 Name: String("n"), 11777 Company: String("c"), 11778 Blog: String("b"), 11779 Location: String("l"), 11780 Email: String("e"), 11781 Hireable: Bool(true), 11782 Bio: String("b"), 11783 TwitterUsername: String("t"), 11784 PublicRepos: Int(1), 11785 Followers: Int(1), 11786 Following: Int(1), 11787 CreatedAt: &Timestamp{referenceTime}, 11788 SuspendedAt: &Timestamp{referenceTime}, 11789 }, 11790 AccessTokensURL: String("atu"), 11791 RepositoriesURL: String("ru"), 11792 HTMLURL: String("hu"), 11793 TargetType: String("tt"), 11794 SingleFileName: String("sfn"), 11795 RepositorySelection: String("rs"), 11796 Events: []string{"e"}, 11797 SingleFilePaths: []string{"s"}, 11798 Permissions: &InstallationPermissions{ 11799 Actions: String("a"), 11800 Administration: String("ad"), 11801 Checks: String("c"), 11802 Contents: String("co"), 11803 ContentReferences: String("cr"), 11804 Deployments: String("d"), 11805 Environments: String("e"), 11806 Issues: String("i"), 11807 Metadata: String("md"), 11808 Members: String("m"), 11809 OrganizationAdministration: String("oa"), 11810 OrganizationHooks: String("oh"), 11811 OrganizationPlan: String("op"), 11812 OrganizationPreReceiveHooks: String("opr"), 11813 OrganizationProjects: String("op"), 11814 OrganizationSecrets: String("os"), 11815 OrganizationSelfHostedRunners: String("osh"), 11816 OrganizationUserBlocking: String("oub"), 11817 Packages: String("pkg"), 11818 Pages: String("pg"), 11819 PullRequests: String("pr"), 11820 RepositoryHooks: String("rh"), 11821 RepositoryProjects: String("rp"), 11822 RepositoryPreReceiveHooks: String("rprh"), 11823 Secrets: String("s"), 11824 SecretScanningAlerts: String("ssa"), 11825 SecurityEvents: String("se"), 11826 SingleFile: String("sf"), 11827 Statuses: String("s"), 11828 TeamDiscussions: String("td"), 11829 VulnerabilityAlerts: String("va"), 11830 Workflows: String("w"), 11831 }, 11832 CreatedAt: &Timestamp{referenceTime}, 11833 UpdatedAt: &Timestamp{referenceTime}, 11834 HasMultipleSingleFiles: Bool(false), 11835 SuspendedBy: &User{ 11836 Login: String("l"), 11837 ID: Int64(1), 11838 URL: String("u"), 11839 AvatarURL: String("a"), 11840 GravatarID: String("g"), 11841 Name: String("n"), 11842 Company: String("c"), 11843 Blog: String("b"), 11844 Location: String("l"), 11845 Email: String("e"), 11846 Hireable: Bool(true), 11847 Bio: String("b"), 11848 TwitterUsername: String("t"), 11849 PublicRepos: Int(1), 11850 Followers: Int(1), 11851 Following: Int(1), 11852 CreatedAt: &Timestamp{referenceTime}, 11853 SuspendedAt: &Timestamp{referenceTime}, 11854 }, 11855 SuspendedAt: &Timestamp{referenceTime}, 11856 }, 11857 } 11858 11859 want := `{ 11860 "check_suite": { 11861 "id": 1, 11862 "node_id": "n", 11863 "head_branch": "h", 11864 "head_sha": "h", 11865 "url": "u", 11866 "before": "b", 11867 "after": "a", 11868 "status": "s", 11869 "conclusion": "c", 11870 "app": { 11871 "id": 1, 11872 "node_id": "n", 11873 "owner": { 11874 "login": "l", 11875 "id": 1, 11876 "node_id": "n", 11877 "avatar_url": "a", 11878 "url": "u", 11879 "events_url": "e", 11880 "repos_url": "r" 11881 }, 11882 "name": "n", 11883 "description": "d", 11884 "external_url": "u", 11885 "html_url": "h", 11886 "created_at": ` + referenceTimeStr + `, 11887 "updated_at": ` + referenceTimeStr + ` 11888 }, 11889 "repository": { 11890 "id": 1 11891 }, 11892 "pull_requests": [ 11893 { 11894 "id": 1, 11895 "number": 1, 11896 "url": "u", 11897 "head": { 11898 "ref": "r", 11899 "sha": "s", 11900 "repo": { 11901 "id": 1, 11902 "name": "n", 11903 "url": "s" 11904 } 11905 }, 11906 "base": { 11907 "ref": "r", 11908 "sha": "s", 11909 "repo": { 11910 "id": 1, 11911 "name": "n", 11912 "url": "u" 11913 } 11914 } 11915 } 11916 ], 11917 "head_commit": { 11918 "sha": "s" 11919 } 11920 }, 11921 "action": "a", 11922 "repository": { 11923 "id": 1, 11924 "name": "n", 11925 "url": "s" 11926 }, 11927 "organization": { 11928 "name": "n", 11929 "company": "c", 11930 "blog": "b", 11931 "location": "loc", 11932 "email": "e", 11933 "twitter_username": "tu", 11934 "description": "d", 11935 "billing_email": "be", 11936 "is_verified": true, 11937 "has_organization_projects": true, 11938 "has_repository_projects": true, 11939 "default_repository_permission": "drp", 11940 "members_can_create_repositories": true, 11941 "members_can_create_public_repositories": false, 11942 "members_can_create_private_repositories": true, 11943 "members_can_create_internal_repositories": true, 11944 "members_allowed_repository_creation_type": "marct", 11945 "members_can_create_pages": true, 11946 "members_can_create_public_pages": false, 11947 "members_can_create_private_pages": true 11948 }, 11949 "sender": { 11950 "login": "l", 11951 "id": 1, 11952 "node_id": "n", 11953 "avatar_url": "a", 11954 "url": "u", 11955 "events_url": "e", 11956 "repos_url": "r" 11957 }, 11958 "installation": { 11959 "id": 1, 11960 "node_id": "nid", 11961 "app_id": 1, 11962 "app_slug": "as", 11963 "target_id": 1, 11964 "account": { 11965 "login": "l", 11966 "id": 1, 11967 "avatar_url": "a", 11968 "gravatar_id": "g", 11969 "name": "n", 11970 "company": "c", 11971 "blog": "b", 11972 "location": "l", 11973 "email": "e", 11974 "hireable": true, 11975 "bio": "b", 11976 "twitter_username": "t", 11977 "public_repos": 1, 11978 "followers": 1, 11979 "following": 1, 11980 "created_at": ` + referenceTimeStr + `, 11981 "suspended_at": ` + referenceTimeStr + `, 11982 "url": "u" 11983 }, 11984 "access_tokens_url": "atu", 11985 "repositories_url": "ru", 11986 "html_url": "hu", 11987 "target_type": "tt", 11988 "single_file_name": "sfn", 11989 "repository_selection": "rs", 11990 "events": [ 11991 "e" 11992 ], 11993 "single_file_paths": [ 11994 "s" 11995 ], 11996 "permissions": { 11997 "actions": "a", 11998 "administration": "ad", 11999 "checks": "c", 12000 "contents": "co", 12001 "content_references": "cr", 12002 "deployments": "d", 12003 "environments": "e", 12004 "issues": "i", 12005 "metadata": "md", 12006 "members": "m", 12007 "organization_administration": "oa", 12008 "organization_hooks": "oh", 12009 "organization_plan": "op", 12010 "organization_pre_receive_hooks": "opr", 12011 "organization_projects": "op", 12012 "organization_secrets": "os", 12013 "organization_self_hosted_runners": "osh", 12014 "organization_user_blocking": "oub", 12015 "packages": "pkg", 12016 "pages": "pg", 12017 "pull_requests": "pr", 12018 "repository_hooks": "rh", 12019 "repository_projects": "rp", 12020 "repository_pre_receive_hooks": "rprh", 12021 "secrets": "s", 12022 "secret_scanning_alerts": "ssa", 12023 "security_events": "se", 12024 "single_file": "sf", 12025 "statuses": "s", 12026 "team_discussions": "td", 12027 "vulnerability_alerts": "va", 12028 "workflows": "w" 12029 }, 12030 "created_at": ` + referenceTimeStr + `, 12031 "updated_at": ` + referenceTimeStr + `, 12032 "has_multiple_single_files": false, 12033 "suspended_by": { 12034 "login": "l", 12035 "id": 1, 12036 "avatar_url": "a", 12037 "gravatar_id": "g", 12038 "name": "n", 12039 "company": "c", 12040 "blog": "b", 12041 "location": "l", 12042 "email": "e", 12043 "hireable": true, 12044 "bio": "b", 12045 "twitter_username": "t", 12046 "public_repos": 1, 12047 "followers": 1, 12048 "following": 1, 12049 "created_at": ` + referenceTimeStr + `, 12050 "suspended_at": ` + referenceTimeStr + `, 12051 "url": "u" 12052 }, 12053 "suspended_at": ` + referenceTimeStr + ` 12054 } 12055 }` 12056 12057 testJSONMarshal(t, r, want) 12058 } 12059 12060 func TestDeployKeyEvent_Marshal(t *testing.T) { 12061 testJSONMarshal(t, &DeployKeyEvent{}, "{}") 12062 12063 u := &DeployKeyEvent{ 12064 Action: String("a"), 12065 Key: &Key{ 12066 ID: Int64(1), 12067 Key: String("k"), 12068 URL: String("k"), 12069 Title: String("k"), 12070 ReadOnly: Bool(false), 12071 Verified: Bool(false), 12072 CreatedAt: &Timestamp{referenceTime}, 12073 }, 12074 Repo: &Repository{ 12075 ID: Int64(1), 12076 URL: String("s"), 12077 Name: String("n"), 12078 }, 12079 Organization: &Organization{ 12080 BillingEmail: String("be"), 12081 Blog: String("b"), 12082 Company: String("c"), 12083 Email: String("e"), 12084 TwitterUsername: String("tu"), 12085 Location: String("loc"), 12086 Name: String("n"), 12087 Description: String("d"), 12088 IsVerified: Bool(true), 12089 HasOrganizationProjects: Bool(true), 12090 HasRepositoryProjects: Bool(true), 12091 DefaultRepoPermission: String("drp"), 12092 MembersCanCreateRepos: Bool(true), 12093 MembersCanCreateInternalRepos: Bool(true), 12094 MembersCanCreatePrivateRepos: Bool(true), 12095 MembersCanCreatePublicRepos: Bool(false), 12096 MembersAllowedRepositoryCreationType: String("marct"), 12097 MembersCanCreatePages: Bool(true), 12098 MembersCanCreatePublicPages: Bool(false), 12099 MembersCanCreatePrivatePages: Bool(true), 12100 }, 12101 Sender: &User{ 12102 Login: String("l"), 12103 ID: Int64(1), 12104 NodeID: String("n"), 12105 AvatarURL: String("a"), 12106 URL: String("u"), 12107 EventsURL: String("e"), 12108 ReposURL: String("r"), 12109 }, 12110 } 12111 12112 want := `{ 12113 "action": "a", 12114 "key": { 12115 "id": 1, 12116 "key": "k", 12117 "url": "k", 12118 "title": "k", 12119 "read_only": false, 12120 "verified": false, 12121 "created_at": ` + referenceTimeStr + ` 12122 }, 12123 "repository": { 12124 "id": 1, 12125 "name": "n", 12126 "url": "s" 12127 }, 12128 "organization": { 12129 "name": "n", 12130 "company": "c", 12131 "blog": "b", 12132 "location": "loc", 12133 "email": "e", 12134 "twitter_username": "tu", 12135 "description": "d", 12136 "billing_email": "be", 12137 "is_verified": true, 12138 "has_organization_projects": true, 12139 "has_repository_projects": true, 12140 "default_repository_permission": "drp", 12141 "members_can_create_repositories": true, 12142 "members_can_create_public_repositories": false, 12143 "members_can_create_private_repositories": true, 12144 "members_can_create_internal_repositories": true, 12145 "members_allowed_repository_creation_type": "marct", 12146 "members_can_create_pages": true, 12147 "members_can_create_public_pages": false, 12148 "members_can_create_private_pages": true 12149 }, 12150 "sender": { 12151 "login": "l", 12152 "id": 1, 12153 "node_id": "n", 12154 "avatar_url": "a", 12155 "url": "u", 12156 "events_url": "e", 12157 "repos_url": "r" 12158 } 12159 }` 12160 12161 testJSONMarshal(t, u, want) 12162 } 12163 12164 func TestMetaEvent_Marshal(t *testing.T) { 12165 testJSONMarshal(t, &MetaEvent{}, "{}") 12166 12167 v := make(map[string]interface{}) 12168 v["a"] = "b" 12169 hookConfig := &HookConfig{ 12170 ContentType: String("json"), 12171 } 12172 12173 u := &MetaEvent{ 12174 Action: String("a"), 12175 HookID: Int64(1), 12176 Hook: &Hook{ 12177 CreatedAt: &Timestamp{referenceTime}, 12178 UpdatedAt: &Timestamp{referenceTime}, 12179 URL: String("u"), 12180 ID: Int64(1), 12181 Type: String("t"), 12182 Name: String("n"), 12183 TestURL: String("tu"), 12184 PingURL: String("pu"), 12185 LastResponse: v, 12186 Config: hookConfig, 12187 Events: []string{"a"}, 12188 Active: Bool(true), 12189 }, 12190 } 12191 12192 want := `{ 12193 "action": "a", 12194 "hook_id": 1, 12195 "hook": { 12196 "created_at": ` + referenceTimeStr + `, 12197 "updated_at": ` + referenceTimeStr + `, 12198 "url": "u", 12199 "id": 1, 12200 "type": "t", 12201 "name": "n", 12202 "test_url": "tu", 12203 "ping_url": "pu", 12204 "last_response": { 12205 "a": "b" 12206 }, 12207 "config": { 12208 "content_type": "json" 12209 }, 12210 "events": [ 12211 "a" 12212 ], 12213 "active": true 12214 } 12215 }` 12216 12217 testJSONMarshal(t, u, want) 12218 } 12219 12220 func TestRequestedAction_Marshal(t *testing.T) { 12221 testJSONMarshal(t, &RequestedAction{}, "{}") 12222 12223 r := &RequestedAction{ 12224 Identifier: "i", 12225 } 12226 12227 want := `{ 12228 "identifier": "i" 12229 }` 12230 12231 testJSONMarshal(t, r, want) 12232 } 12233 12234 func TestCreateEvent_Marshal(t *testing.T) { 12235 testJSONMarshal(t, &CreateEvent{}, "{}") 12236 12237 r := &CreateEvent{ 12238 Ref: String("r"), 12239 RefType: String("rt"), 12240 MasterBranch: String("mb"), 12241 Description: String("d"), 12242 PusherType: String("pt"), 12243 Repo: &Repository{ 12244 ID: Int64(1), 12245 URL: String("s"), 12246 Name: String("n"), 12247 }, 12248 Sender: &User{ 12249 Login: String("l"), 12250 ID: Int64(1), 12251 NodeID: String("n"), 12252 URL: String("u"), 12253 ReposURL: String("r"), 12254 EventsURL: String("e"), 12255 AvatarURL: String("a"), 12256 }, 12257 Installation: &Installation{ 12258 ID: Int64(1), 12259 NodeID: String("nid"), 12260 AppID: Int64(1), 12261 AppSlug: String("as"), 12262 TargetID: Int64(1), 12263 Account: &User{ 12264 Login: String("l"), 12265 ID: Int64(1), 12266 URL: String("u"), 12267 AvatarURL: String("a"), 12268 GravatarID: String("g"), 12269 Name: String("n"), 12270 Company: String("c"), 12271 Blog: String("b"), 12272 Location: String("l"), 12273 Email: String("e"), 12274 Hireable: Bool(true), 12275 Bio: String("b"), 12276 TwitterUsername: String("t"), 12277 PublicRepos: Int(1), 12278 Followers: Int(1), 12279 Following: Int(1), 12280 CreatedAt: &Timestamp{referenceTime}, 12281 SuspendedAt: &Timestamp{referenceTime}, 12282 }, 12283 AccessTokensURL: String("atu"), 12284 RepositoriesURL: String("ru"), 12285 HTMLURL: String("hu"), 12286 TargetType: String("tt"), 12287 SingleFileName: String("sfn"), 12288 RepositorySelection: String("rs"), 12289 Events: []string{"e"}, 12290 SingleFilePaths: []string{"s"}, 12291 Permissions: &InstallationPermissions{ 12292 Actions: String("a"), 12293 Administration: String("ad"), 12294 Checks: String("c"), 12295 Contents: String("co"), 12296 ContentReferences: String("cr"), 12297 Deployments: String("d"), 12298 Environments: String("e"), 12299 Issues: String("i"), 12300 Metadata: String("md"), 12301 Members: String("m"), 12302 OrganizationAdministration: String("oa"), 12303 OrganizationHooks: String("oh"), 12304 OrganizationPlan: String("op"), 12305 OrganizationPreReceiveHooks: String("opr"), 12306 OrganizationProjects: String("op"), 12307 OrganizationSecrets: String("os"), 12308 OrganizationSelfHostedRunners: String("osh"), 12309 OrganizationUserBlocking: String("oub"), 12310 Packages: String("pkg"), 12311 Pages: String("pg"), 12312 PullRequests: String("pr"), 12313 RepositoryHooks: String("rh"), 12314 RepositoryProjects: String("rp"), 12315 RepositoryPreReceiveHooks: String("rprh"), 12316 Secrets: String("s"), 12317 SecretScanningAlerts: String("ssa"), 12318 SecurityEvents: String("se"), 12319 SingleFile: String("sf"), 12320 Statuses: String("s"), 12321 TeamDiscussions: String("td"), 12322 VulnerabilityAlerts: String("va"), 12323 Workflows: String("w"), 12324 }, 12325 CreatedAt: &Timestamp{referenceTime}, 12326 UpdatedAt: &Timestamp{referenceTime}, 12327 HasMultipleSingleFiles: Bool(false), 12328 SuspendedBy: &User{ 12329 Login: String("l"), 12330 ID: Int64(1), 12331 URL: String("u"), 12332 AvatarURL: String("a"), 12333 GravatarID: String("g"), 12334 Name: String("n"), 12335 Company: String("c"), 12336 Blog: String("b"), 12337 Location: String("l"), 12338 Email: String("e"), 12339 Hireable: Bool(true), 12340 Bio: String("b"), 12341 TwitterUsername: String("t"), 12342 PublicRepos: Int(1), 12343 Followers: Int(1), 12344 Following: Int(1), 12345 CreatedAt: &Timestamp{referenceTime}, 12346 SuspendedAt: &Timestamp{referenceTime}, 12347 }, 12348 SuspendedAt: &Timestamp{referenceTime}, 12349 }, 12350 } 12351 12352 want := `{ 12353 "ref": "r", 12354 "ref_type": "rt", 12355 "master_branch": "mb", 12356 "description": "d", 12357 "pusher_type": "pt", 12358 "repository": { 12359 "id": 1, 12360 "name": "n", 12361 "url": "s" 12362 }, 12363 "sender": { 12364 "login": "l", 12365 "id": 1, 12366 "node_id": "n", 12367 "avatar_url": "a", 12368 "url": "u", 12369 "events_url": "e", 12370 "repos_url": "r" 12371 }, 12372 "installation": { 12373 "id": 1, 12374 "node_id": "nid", 12375 "app_id": 1, 12376 "app_slug": "as", 12377 "target_id": 1, 12378 "account": { 12379 "login": "l", 12380 "id": 1, 12381 "avatar_url": "a", 12382 "gravatar_id": "g", 12383 "name": "n", 12384 "company": "c", 12385 "blog": "b", 12386 "location": "l", 12387 "email": "e", 12388 "hireable": true, 12389 "bio": "b", 12390 "twitter_username": "t", 12391 "public_repos": 1, 12392 "followers": 1, 12393 "following": 1, 12394 "created_at": ` + referenceTimeStr + `, 12395 "suspended_at": ` + referenceTimeStr + `, 12396 "url": "u" 12397 }, 12398 "access_tokens_url": "atu", 12399 "repositories_url": "ru", 12400 "html_url": "hu", 12401 "target_type": "tt", 12402 "single_file_name": "sfn", 12403 "repository_selection": "rs", 12404 "events": [ 12405 "e" 12406 ], 12407 "single_file_paths": [ 12408 "s" 12409 ], 12410 "permissions": { 12411 "actions": "a", 12412 "administration": "ad", 12413 "checks": "c", 12414 "contents": "co", 12415 "content_references": "cr", 12416 "deployments": "d", 12417 "environments": "e", 12418 "issues": "i", 12419 "metadata": "md", 12420 "members": "m", 12421 "organization_administration": "oa", 12422 "organization_hooks": "oh", 12423 "organization_plan": "op", 12424 "organization_pre_receive_hooks": "opr", 12425 "organization_projects": "op", 12426 "organization_secrets": "os", 12427 "organization_self_hosted_runners": "osh", 12428 "organization_user_blocking": "oub", 12429 "packages": "pkg", 12430 "pages": "pg", 12431 "pull_requests": "pr", 12432 "repository_hooks": "rh", 12433 "repository_projects": "rp", 12434 "repository_pre_receive_hooks": "rprh", 12435 "secrets": "s", 12436 "secret_scanning_alerts": "ssa", 12437 "security_events": "se", 12438 "single_file": "sf", 12439 "statuses": "s", 12440 "team_discussions": "td", 12441 "vulnerability_alerts": "va", 12442 "workflows": "w" 12443 }, 12444 "created_at": ` + referenceTimeStr + `, 12445 "updated_at": ` + referenceTimeStr + `, 12446 "has_multiple_single_files": false, 12447 "suspended_by": { 12448 "login": "l", 12449 "id": 1, 12450 "avatar_url": "a", 12451 "gravatar_id": "g", 12452 "name": "n", 12453 "company": "c", 12454 "blog": "b", 12455 "location": "l", 12456 "email": "e", 12457 "hireable": true, 12458 "bio": "b", 12459 "twitter_username": "t", 12460 "public_repos": 1, 12461 "followers": 1, 12462 "following": 1, 12463 "created_at": ` + referenceTimeStr + `, 12464 "suspended_at": ` + referenceTimeStr + `, 12465 "url": "u" 12466 }, 12467 "suspended_at": ` + referenceTimeStr + ` 12468 } 12469 }` 12470 12471 testJSONMarshal(t, r, want) 12472 } 12473 12474 func TestDeleteEvent_Marshal(t *testing.T) { 12475 testJSONMarshal(t, &DeleteEvent{}, "{}") 12476 12477 r := &DeleteEvent{ 12478 Ref: String("r"), 12479 RefType: String("rt"), 12480 PusherType: String("pt"), 12481 Repo: &Repository{ 12482 ID: Int64(1), 12483 URL: String("s"), 12484 Name: String("n"), 12485 }, 12486 Sender: &User{ 12487 Login: String("l"), 12488 ID: Int64(1), 12489 NodeID: String("n"), 12490 URL: String("u"), 12491 ReposURL: String("r"), 12492 EventsURL: String("e"), 12493 AvatarURL: String("a"), 12494 }, 12495 Installation: &Installation{ 12496 ID: Int64(1), 12497 NodeID: String("nid"), 12498 AppID: Int64(1), 12499 AppSlug: String("as"), 12500 TargetID: Int64(1), 12501 Account: &User{ 12502 Login: String("l"), 12503 ID: Int64(1), 12504 URL: String("u"), 12505 AvatarURL: String("a"), 12506 GravatarID: String("g"), 12507 Name: String("n"), 12508 Company: String("c"), 12509 Blog: String("b"), 12510 Location: String("l"), 12511 Email: String("e"), 12512 Hireable: Bool(true), 12513 Bio: String("b"), 12514 TwitterUsername: String("t"), 12515 PublicRepos: Int(1), 12516 Followers: Int(1), 12517 Following: Int(1), 12518 CreatedAt: &Timestamp{referenceTime}, 12519 SuspendedAt: &Timestamp{referenceTime}, 12520 }, 12521 AccessTokensURL: String("atu"), 12522 RepositoriesURL: String("ru"), 12523 HTMLURL: String("hu"), 12524 TargetType: String("tt"), 12525 SingleFileName: String("sfn"), 12526 RepositorySelection: String("rs"), 12527 Events: []string{"e"}, 12528 SingleFilePaths: []string{"s"}, 12529 Permissions: &InstallationPermissions{ 12530 Actions: String("a"), 12531 Administration: String("ad"), 12532 Checks: String("c"), 12533 Contents: String("co"), 12534 ContentReferences: String("cr"), 12535 Deployments: String("d"), 12536 Environments: String("e"), 12537 Issues: String("i"), 12538 Metadata: String("md"), 12539 Members: String("m"), 12540 OrganizationAdministration: String("oa"), 12541 OrganizationHooks: String("oh"), 12542 OrganizationPlan: String("op"), 12543 OrganizationPreReceiveHooks: String("opr"), 12544 OrganizationProjects: String("op"), 12545 OrganizationSecrets: String("os"), 12546 OrganizationSelfHostedRunners: String("osh"), 12547 OrganizationUserBlocking: String("oub"), 12548 Packages: String("pkg"), 12549 Pages: String("pg"), 12550 PullRequests: String("pr"), 12551 RepositoryHooks: String("rh"), 12552 RepositoryProjects: String("rp"), 12553 RepositoryPreReceiveHooks: String("rprh"), 12554 Secrets: String("s"), 12555 SecretScanningAlerts: String("ssa"), 12556 SecurityEvents: String("se"), 12557 SingleFile: String("sf"), 12558 Statuses: String("s"), 12559 TeamDiscussions: String("td"), 12560 VulnerabilityAlerts: String("va"), 12561 Workflows: String("w"), 12562 }, 12563 CreatedAt: &Timestamp{referenceTime}, 12564 UpdatedAt: &Timestamp{referenceTime}, 12565 HasMultipleSingleFiles: Bool(false), 12566 SuspendedBy: &User{ 12567 Login: String("l"), 12568 ID: Int64(1), 12569 URL: String("u"), 12570 AvatarURL: String("a"), 12571 GravatarID: String("g"), 12572 Name: String("n"), 12573 Company: String("c"), 12574 Blog: String("b"), 12575 Location: String("l"), 12576 Email: String("e"), 12577 Hireable: Bool(true), 12578 Bio: String("b"), 12579 TwitterUsername: String("t"), 12580 PublicRepos: Int(1), 12581 Followers: Int(1), 12582 Following: Int(1), 12583 CreatedAt: &Timestamp{referenceTime}, 12584 SuspendedAt: &Timestamp{referenceTime}, 12585 }, 12586 SuspendedAt: &Timestamp{referenceTime}, 12587 }, 12588 } 12589 12590 want := `{ 12591 "ref": "r", 12592 "ref_type": "rt", 12593 "pusher_type": "pt", 12594 "repository": { 12595 "id": 1, 12596 "name": "n", 12597 "url": "s" 12598 }, 12599 "sender": { 12600 "login": "l", 12601 "id": 1, 12602 "node_id": "n", 12603 "avatar_url": "a", 12604 "url": "u", 12605 "events_url": "e", 12606 "repos_url": "r" 12607 }, 12608 "installation": { 12609 "id": 1, 12610 "node_id": "nid", 12611 "app_id": 1, 12612 "app_slug": "as", 12613 "target_id": 1, 12614 "account": { 12615 "login": "l", 12616 "id": 1, 12617 "avatar_url": "a", 12618 "gravatar_id": "g", 12619 "name": "n", 12620 "company": "c", 12621 "blog": "b", 12622 "location": "l", 12623 "email": "e", 12624 "hireable": true, 12625 "bio": "b", 12626 "twitter_username": "t", 12627 "public_repos": 1, 12628 "followers": 1, 12629 "following": 1, 12630 "created_at": ` + referenceTimeStr + `, 12631 "suspended_at": ` + referenceTimeStr + `, 12632 "url": "u" 12633 }, 12634 "access_tokens_url": "atu", 12635 "repositories_url": "ru", 12636 "html_url": "hu", 12637 "target_type": "tt", 12638 "single_file_name": "sfn", 12639 "repository_selection": "rs", 12640 "events": [ 12641 "e" 12642 ], 12643 "single_file_paths": [ 12644 "s" 12645 ], 12646 "permissions": { 12647 "actions": "a", 12648 "administration": "ad", 12649 "checks": "c", 12650 "contents": "co", 12651 "content_references": "cr", 12652 "deployments": "d", 12653 "environments": "e", 12654 "issues": "i", 12655 "metadata": "md", 12656 "members": "m", 12657 "organization_administration": "oa", 12658 "organization_hooks": "oh", 12659 "organization_plan": "op", 12660 "organization_pre_receive_hooks": "opr", 12661 "organization_projects": "op", 12662 "organization_secrets": "os", 12663 "organization_self_hosted_runners": "osh", 12664 "organization_user_blocking": "oub", 12665 "packages": "pkg", 12666 "pages": "pg", 12667 "pull_requests": "pr", 12668 "repository_hooks": "rh", 12669 "repository_projects": "rp", 12670 "repository_pre_receive_hooks": "rprh", 12671 "secrets": "s", 12672 "secret_scanning_alerts": "ssa", 12673 "security_events": "se", 12674 "single_file": "sf", 12675 "statuses": "s", 12676 "team_discussions": "td", 12677 "vulnerability_alerts": "va", 12678 "workflows": "w" 12679 }, 12680 "created_at": ` + referenceTimeStr + `, 12681 "updated_at": ` + referenceTimeStr + `, 12682 "has_multiple_single_files": false, 12683 "suspended_by": { 12684 "login": "l", 12685 "id": 1, 12686 "avatar_url": "a", 12687 "gravatar_id": "g", 12688 "name": "n", 12689 "company": "c", 12690 "blog": "b", 12691 "location": "l", 12692 "email": "e", 12693 "hireable": true, 12694 "bio": "b", 12695 "twitter_username": "t", 12696 "public_repos": 1, 12697 "followers": 1, 12698 "following": 1, 12699 "created_at": ` + referenceTimeStr + `, 12700 "suspended_at": ` + referenceTimeStr + `, 12701 "url": "u" 12702 }, 12703 "suspended_at": ` + referenceTimeStr + ` 12704 } 12705 }` 12706 12707 testJSONMarshal(t, r, want) 12708 } 12709 12710 func TestDependabotAlertEvent_Marshal(t *testing.T) { 12711 testJSONMarshal(t, &DependabotAlertEvent{}, "{}") 12712 12713 e := &DependabotAlertEvent{ 12714 Action: String("a"), 12715 Alert: &DependabotAlert{ 12716 Number: Int(1), 12717 State: String("s"), 12718 Dependency: &Dependency{ 12719 Package: &VulnerabilityPackage{ 12720 Ecosystem: String("e"), 12721 Name: String("n"), 12722 }, 12723 ManifestPath: String("mp"), 12724 Scope: String("s"), 12725 }, 12726 SecurityAdvisory: &DependabotSecurityAdvisory{ 12727 GHSAID: String("ghsaid"), 12728 CVEID: String("cveid"), 12729 Summary: String("s"), 12730 Description: String("d"), 12731 Vulnerabilities: []*AdvisoryVulnerability{ 12732 { 12733 Package: &VulnerabilityPackage{ 12734 Ecosystem: String("e"), 12735 Name: String("n"), 12736 }, 12737 Severity: String("s"), 12738 }, 12739 }, 12740 Severity: String("s"), 12741 CVSS: &AdvisoryCVSS{ 12742 Score: Float64(1.0), 12743 VectorString: String("vs"), 12744 }, 12745 CWEs: []*AdvisoryCWEs{ 12746 { 12747 CWEID: String("cweid"), 12748 Name: String("n"), 12749 }, 12750 }, 12751 Identifiers: []*AdvisoryIdentifier{ 12752 { 12753 Value: String("v"), 12754 Type: String("t"), 12755 }, 12756 }, 12757 References: []*AdvisoryReference{ 12758 { 12759 URL: String("u"), 12760 }, 12761 }, 12762 PublishedAt: &Timestamp{referenceTime}, 12763 UpdatedAt: &Timestamp{referenceTime}, 12764 WithdrawnAt: &Timestamp{referenceTime}, 12765 }, 12766 SecurityVulnerability: &AdvisoryVulnerability{ 12767 Package: &VulnerabilityPackage{ 12768 Ecosystem: String("e"), 12769 Name: String("n"), 12770 }, 12771 Severity: String("s"), 12772 VulnerableVersionRange: String("vvr"), 12773 FirstPatchedVersion: &FirstPatchedVersion{ 12774 Identifier: String("i"), 12775 }, 12776 }, 12777 URL: String("u"), 12778 HTMLURL: String("hu"), 12779 CreatedAt: &Timestamp{referenceTime}, 12780 UpdatedAt: &Timestamp{referenceTime}, 12781 DismissedAt: &Timestamp{referenceTime}, 12782 DismissedBy: &User{ 12783 Login: String("l"), 12784 ID: Int64(1), 12785 NodeID: String("n"), 12786 URL: String("u"), 12787 ReposURL: String("r"), 12788 EventsURL: String("e"), 12789 AvatarURL: String("a"), 12790 }, 12791 DismissedReason: String("dr"), 12792 DismissedComment: String("dc"), 12793 FixedAt: &Timestamp{referenceTime}, 12794 AutoDismissedAt: &Timestamp{referenceTime}, 12795 }, 12796 Repo: &Repository{ 12797 ID: Int64(1), 12798 URL: String("s"), 12799 Name: String("n"), 12800 }, 12801 Organization: &Organization{ 12802 BillingEmail: String("be"), 12803 Blog: String("b"), 12804 Company: String("c"), 12805 Email: String("e"), 12806 TwitterUsername: String("tu"), 12807 Location: String("loc"), 12808 Name: String("n"), 12809 Description: String("d"), 12810 IsVerified: Bool(true), 12811 HasOrganizationProjects: Bool(true), 12812 HasRepositoryProjects: Bool(true), 12813 DefaultRepoPermission: String("drp"), 12814 MembersCanCreateRepos: Bool(true), 12815 MembersCanCreateInternalRepos: Bool(true), 12816 MembersCanCreatePrivateRepos: Bool(true), 12817 MembersCanCreatePublicRepos: Bool(false), 12818 MembersAllowedRepositoryCreationType: String("marct"), 12819 MembersCanCreatePages: Bool(true), 12820 MembersCanCreatePublicPages: Bool(false), 12821 MembersCanCreatePrivatePages: Bool(true), 12822 }, 12823 Enterprise: &Enterprise{ 12824 ID: Int(1), 12825 Slug: String("s"), 12826 Name: String("n"), 12827 NodeID: String("nid"), 12828 AvatarURL: String("au"), 12829 Description: String("d"), 12830 WebsiteURL: String("wu"), 12831 HTMLURL: String("hu"), 12832 CreatedAt: &Timestamp{referenceTime}, 12833 UpdatedAt: &Timestamp{referenceTime}, 12834 }, 12835 Sender: &User{ 12836 Login: String("l"), 12837 ID: Int64(1), 12838 NodeID: String("n"), 12839 URL: String("u"), 12840 ReposURL: String("r"), 12841 EventsURL: String("e"), 12842 AvatarURL: String("a"), 12843 }, 12844 Installation: &Installation{ 12845 ID: Int64(1), 12846 NodeID: String("nid"), 12847 AppID: Int64(1), 12848 AppSlug: String("as"), 12849 TargetID: Int64(1), 12850 Account: &User{ 12851 Login: String("l"), 12852 ID: Int64(1), 12853 URL: String("u"), 12854 AvatarURL: String("a"), 12855 GravatarID: String("g"), 12856 Name: String("n"), 12857 Company: String("c"), 12858 Blog: String("b"), 12859 Location: String("l"), 12860 Email: String("e"), 12861 Hireable: Bool(true), 12862 Bio: String("b"), 12863 TwitterUsername: String("t"), 12864 PublicRepos: Int(1), 12865 Followers: Int(1), 12866 Following: Int(1), 12867 CreatedAt: &Timestamp{referenceTime}, 12868 SuspendedAt: &Timestamp{referenceTime}, 12869 }, 12870 AccessTokensURL: String("atu"), 12871 RepositoriesURL: String("ru"), 12872 HTMLURL: String("hu"), 12873 TargetType: String("tt"), 12874 SingleFileName: String("sfn"), 12875 RepositorySelection: String("rs"), 12876 Events: []string{"e"}, 12877 SingleFilePaths: []string{"s"}, 12878 Permissions: &InstallationPermissions{ 12879 Actions: String("a"), 12880 Administration: String("ad"), 12881 Checks: String("c"), 12882 Contents: String("co"), 12883 ContentReferences: String("cr"), 12884 Deployments: String("d"), 12885 Environments: String("e"), 12886 Issues: String("i"), 12887 Metadata: String("md"), 12888 Members: String("m"), 12889 OrganizationAdministration: String("oa"), 12890 OrganizationHooks: String("oh"), 12891 OrganizationPlan: String("op"), 12892 OrganizationPreReceiveHooks: String("opr"), 12893 OrganizationProjects: String("op"), 12894 OrganizationSecrets: String("os"), 12895 OrganizationSelfHostedRunners: String("osh"), 12896 OrganizationUserBlocking: String("oub"), 12897 Packages: String("pkg"), 12898 Pages: String("pg"), 12899 PullRequests: String("pr"), 12900 RepositoryHooks: String("rh"), 12901 RepositoryProjects: String("rp"), 12902 RepositoryPreReceiveHooks: String("rprh"), 12903 Secrets: String("s"), 12904 SecretScanningAlerts: String("ssa"), 12905 SecurityEvents: String("se"), 12906 SingleFile: String("sf"), 12907 Statuses: String("s"), 12908 TeamDiscussions: String("td"), 12909 VulnerabilityAlerts: String("va"), 12910 Workflows: String("w"), 12911 }, 12912 CreatedAt: &Timestamp{referenceTime}, 12913 UpdatedAt: &Timestamp{referenceTime}, 12914 HasMultipleSingleFiles: Bool(false), 12915 SuspendedBy: &User{ 12916 Login: String("l"), 12917 ID: Int64(1), 12918 URL: String("u"), 12919 AvatarURL: String("a"), 12920 GravatarID: String("g"), 12921 Name: String("n"), 12922 Company: String("c"), 12923 Blog: String("b"), 12924 Location: String("l"), 12925 Email: String("e"), 12926 Hireable: Bool(true), 12927 Bio: String("b"), 12928 TwitterUsername: String("t"), 12929 PublicRepos: Int(1), 12930 Followers: Int(1), 12931 Following: Int(1), 12932 CreatedAt: &Timestamp{referenceTime}, 12933 SuspendedAt: &Timestamp{referenceTime}, 12934 }, 12935 SuspendedAt: &Timestamp{referenceTime}, 12936 }, 12937 } 12938 want := `{ 12939 "action": "a", 12940 "alert": { 12941 "number": 1, 12942 "state": "s", 12943 "dependency": { 12944 "package": { 12945 "ecosystem": "e", 12946 "name": "n" 12947 }, 12948 "manifest_path": "mp", 12949 "scope": "s" 12950 }, 12951 "security_advisory": { 12952 "ghsa_id": "ghsaid", 12953 "cve_id": "cveid", 12954 "summary": "s", 12955 "description": "d", 12956 "vulnerabilities": [ 12957 { 12958 "package": { 12959 "ecosystem": "e", 12960 "name": "n" 12961 }, 12962 "severity": "s" 12963 } 12964 ], 12965 "severity": "s", 12966 "cvss": { 12967 "score": 1.0, 12968 "vector_string": "vs" 12969 }, 12970 "cwes": [ 12971 { 12972 "cwe_id": "cweid", 12973 "name": "n" 12974 } 12975 ], 12976 "identifiers": [ 12977 { 12978 "value": "v", 12979 "type": "t" 12980 } 12981 ], 12982 "references": [ 12983 { 12984 "url": "u" 12985 } 12986 ], 12987 "published_at": ` + referenceTimeStr + `, 12988 "updated_at": ` + referenceTimeStr + `, 12989 "withdrawn_at": ` + referenceTimeStr + ` 12990 }, 12991 "security_vulnerability": { 12992 "package": { 12993 "ecosystem": "e", 12994 "name": "n" 12995 }, 12996 "severity": "s", 12997 "vulnerable_version_range": "vvr", 12998 "first_patched_version": { 12999 "identifier": "i" 13000 } 13001 }, 13002 "url": "u", 13003 "html_url": "hu", 13004 "created_at": ` + referenceTimeStr + `, 13005 "updated_at": ` + referenceTimeStr + `, 13006 "dismissed_at": ` + referenceTimeStr + `, 13007 "dismissed_by": { 13008 "login": "l", 13009 "id": 1, 13010 "node_id": "n", 13011 "avatar_url": "a", 13012 "url": "u", 13013 "events_url": "e", 13014 "repos_url": "r" 13015 }, 13016 "dismissed_reason": "dr", 13017 "dismissed_comment": "dc", 13018 "fixed_at": ` + referenceTimeStr + `, 13019 "auto_dismissed_at": ` + referenceTimeStr + ` 13020 }, 13021 "repository": { 13022 "id": 1, 13023 "name": "n", 13024 "url": "s" 13025 }, 13026 "organization": { 13027 "name": "n", 13028 "company": "c", 13029 "blog": "b", 13030 "location": "loc", 13031 "email": "e", 13032 "twitter_username": "tu", 13033 "description": "d", 13034 "billing_email": "be", 13035 "is_verified": true, 13036 "has_organization_projects": true, 13037 "has_repository_projects": true, 13038 "default_repository_permission": "drp", 13039 "members_can_create_repositories": true, 13040 "members_can_create_public_repositories": false, 13041 "members_can_create_private_repositories": true, 13042 "members_can_create_internal_repositories": true, 13043 "members_allowed_repository_creation_type": "marct", 13044 "members_can_create_pages": true, 13045 "members_can_create_public_pages": false, 13046 "members_can_create_private_pages": true 13047 }, 13048 "enterprise": { 13049 "id": 1, 13050 "slug": "s", 13051 "name": "n", 13052 "node_id": "nid", 13053 "avatar_url": "au", 13054 "description": "d", 13055 "website_url": "wu", 13056 "html_url": "hu", 13057 "created_at": ` + referenceTimeStr + `, 13058 "updated_at": ` + referenceTimeStr + ` 13059 }, 13060 "sender": { 13061 "login": "l", 13062 "id": 1, 13063 "node_id": "n", 13064 "avatar_url": "a", 13065 "url": "u", 13066 "events_url": "e", 13067 "repos_url": "r" 13068 }, 13069 "installation": { 13070 "id": 1, 13071 "node_id": "nid", 13072 "app_id": 1, 13073 "app_slug": "as", 13074 "target_id": 1, 13075 "account": { 13076 "login": "l", 13077 "id": 1, 13078 "avatar_url": "a", 13079 "gravatar_id": "g", 13080 "name": "n", 13081 "company": "c", 13082 "blog": "b", 13083 "location": "l", 13084 "email": "e", 13085 "hireable": true, 13086 "bio": "b", 13087 "twitter_username": "t", 13088 "public_repos": 1, 13089 "followers": 1, 13090 "following": 1, 13091 "created_at": ` + referenceTimeStr + `, 13092 "suspended_at": ` + referenceTimeStr + `, 13093 "url": "u" 13094 }, 13095 "access_tokens_url": "atu", 13096 "repositories_url": "ru", 13097 "html_url": "hu", 13098 "target_type": "tt", 13099 "single_file_name": "sfn", 13100 "repository_selection": "rs", 13101 "events": [ 13102 "e" 13103 ], 13104 "single_file_paths": [ 13105 "s" 13106 ], 13107 "permissions": { 13108 "actions": "a", 13109 "administration": "ad", 13110 "checks": "c", 13111 "contents": "co", 13112 "content_references": "cr", 13113 "deployments": "d", 13114 "environments": "e", 13115 "issues": "i", 13116 "metadata": "md", 13117 "members": "m", 13118 "organization_administration": "oa", 13119 "organization_hooks": "oh", 13120 "organization_plan": "op", 13121 "organization_pre_receive_hooks": "opr", 13122 "organization_projects": "op", 13123 "organization_secrets": "os", 13124 "organization_self_hosted_runners": "osh", 13125 "organization_user_blocking": "oub", 13126 "packages": "pkg", 13127 "pages": "pg", 13128 "pull_requests": "pr", 13129 "repository_hooks": "rh", 13130 "repository_projects": "rp", 13131 "repository_pre_receive_hooks": "rprh", 13132 "secrets": "s", 13133 "secret_scanning_alerts": "ssa", 13134 "security_events": "se", 13135 "single_file": "sf", 13136 "statuses": "s", 13137 "team_discussions": "td", 13138 "vulnerability_alerts": "va", 13139 "workflows": "w" 13140 }, 13141 "created_at": ` + referenceTimeStr + `, 13142 "updated_at": ` + referenceTimeStr + `, 13143 "has_multiple_single_files": false, 13144 "suspended_by": { 13145 "login": "l", 13146 "id": 1, 13147 "avatar_url": "a", 13148 "gravatar_id": "g", 13149 "name": "n", 13150 "company": "c", 13151 "blog": "b", 13152 "location": "l", 13153 "email": "e", 13154 "hireable": true, 13155 "bio": "b", 13156 "twitter_username": "t", 13157 "public_repos": 1, 13158 "followers": 1, 13159 "following": 1, 13160 "created_at": ` + referenceTimeStr + `, 13161 "suspended_at": ` + referenceTimeStr + `, 13162 "url": "u" 13163 }, 13164 "suspended_at": ` + referenceTimeStr + ` 13165 } 13166 }` 13167 13168 testJSONMarshal(t, e, want) 13169 } 13170 13171 func TestForkEvent_Marshal(t *testing.T) { 13172 testJSONMarshal(t, &ForkEvent{}, "{}") 13173 13174 u := &ForkEvent{ 13175 Forkee: &Repository{ 13176 ID: Int64(1), 13177 URL: String("s"), 13178 Name: String("n"), 13179 }, 13180 Repo: &Repository{ 13181 ID: Int64(1), 13182 URL: String("s"), 13183 Name: String("n"), 13184 }, 13185 Sender: &User{ 13186 Login: String("l"), 13187 ID: Int64(1), 13188 NodeID: String("n"), 13189 URL: String("u"), 13190 ReposURL: String("r"), 13191 EventsURL: String("e"), 13192 AvatarURL: String("a"), 13193 }, 13194 Installation: &Installation{ 13195 ID: Int64(1), 13196 NodeID: String("nid"), 13197 AppID: Int64(1), 13198 AppSlug: String("as"), 13199 TargetID: Int64(1), 13200 Account: &User{ 13201 Login: String("l"), 13202 ID: Int64(1), 13203 URL: String("u"), 13204 AvatarURL: String("a"), 13205 GravatarID: String("g"), 13206 Name: String("n"), 13207 Company: String("c"), 13208 Blog: String("b"), 13209 Location: String("l"), 13210 Email: String("e"), 13211 Hireable: Bool(true), 13212 Bio: String("b"), 13213 TwitterUsername: String("t"), 13214 PublicRepos: Int(1), 13215 Followers: Int(1), 13216 Following: Int(1), 13217 CreatedAt: &Timestamp{referenceTime}, 13218 SuspendedAt: &Timestamp{referenceTime}, 13219 }, 13220 AccessTokensURL: String("atu"), 13221 RepositoriesURL: String("ru"), 13222 HTMLURL: String("hu"), 13223 TargetType: String("tt"), 13224 SingleFileName: String("sfn"), 13225 RepositorySelection: String("rs"), 13226 Events: []string{"e"}, 13227 SingleFilePaths: []string{"s"}, 13228 Permissions: &InstallationPermissions{ 13229 Actions: String("a"), 13230 Administration: String("ad"), 13231 Checks: String("c"), 13232 Contents: String("co"), 13233 ContentReferences: String("cr"), 13234 Deployments: String("d"), 13235 Environments: String("e"), 13236 Issues: String("i"), 13237 Metadata: String("md"), 13238 Members: String("m"), 13239 OrganizationAdministration: String("oa"), 13240 OrganizationHooks: String("oh"), 13241 OrganizationPlan: String("op"), 13242 OrganizationPreReceiveHooks: String("opr"), 13243 OrganizationProjects: String("op"), 13244 OrganizationSecrets: String("os"), 13245 OrganizationSelfHostedRunners: String("osh"), 13246 OrganizationUserBlocking: String("oub"), 13247 Packages: String("pkg"), 13248 Pages: String("pg"), 13249 PullRequests: String("pr"), 13250 RepositoryHooks: String("rh"), 13251 RepositoryProjects: String("rp"), 13252 RepositoryPreReceiveHooks: String("rprh"), 13253 Secrets: String("s"), 13254 SecretScanningAlerts: String("ssa"), 13255 SecurityEvents: String("se"), 13256 SingleFile: String("sf"), 13257 Statuses: String("s"), 13258 TeamDiscussions: String("td"), 13259 VulnerabilityAlerts: String("va"), 13260 Workflows: String("w"), 13261 }, 13262 CreatedAt: &Timestamp{referenceTime}, 13263 UpdatedAt: &Timestamp{referenceTime}, 13264 HasMultipleSingleFiles: Bool(false), 13265 SuspendedBy: &User{ 13266 Login: String("l"), 13267 ID: Int64(1), 13268 URL: String("u"), 13269 AvatarURL: String("a"), 13270 GravatarID: String("g"), 13271 Name: String("n"), 13272 Company: String("c"), 13273 Blog: String("b"), 13274 Location: String("l"), 13275 Email: String("e"), 13276 Hireable: Bool(true), 13277 Bio: String("b"), 13278 TwitterUsername: String("t"), 13279 PublicRepos: Int(1), 13280 Followers: Int(1), 13281 Following: Int(1), 13282 CreatedAt: &Timestamp{referenceTime}, 13283 SuspendedAt: &Timestamp{referenceTime}, 13284 }, 13285 SuspendedAt: &Timestamp{referenceTime}, 13286 }, 13287 } 13288 13289 want := `{ 13290 "forkee": { 13291 "id": 1, 13292 "name": "n", 13293 "url": "s" 13294 }, 13295 "repository": { 13296 "id": 1, 13297 "name": "n", 13298 "url": "s" 13299 }, 13300 "sender": { 13301 "login": "l", 13302 "id": 1, 13303 "node_id": "n", 13304 "avatar_url": "a", 13305 "url": "u", 13306 "events_url": "e", 13307 "repos_url": "r" 13308 }, 13309 "installation": { 13310 "id": 1, 13311 "node_id": "nid", 13312 "app_id": 1, 13313 "app_slug": "as", 13314 "target_id": 1, 13315 "account": { 13316 "login": "l", 13317 "id": 1, 13318 "avatar_url": "a", 13319 "gravatar_id": "g", 13320 "name": "n", 13321 "company": "c", 13322 "blog": "b", 13323 "location": "l", 13324 "email": "e", 13325 "hireable": true, 13326 "bio": "b", 13327 "twitter_username": "t", 13328 "public_repos": 1, 13329 "followers": 1, 13330 "following": 1, 13331 "created_at": ` + referenceTimeStr + `, 13332 "suspended_at": ` + referenceTimeStr + `, 13333 "url": "u" 13334 }, 13335 "access_tokens_url": "atu", 13336 "repositories_url": "ru", 13337 "html_url": "hu", 13338 "target_type": "tt", 13339 "single_file_name": "sfn", 13340 "repository_selection": "rs", 13341 "events": [ 13342 "e" 13343 ], 13344 "single_file_paths": [ 13345 "s" 13346 ], 13347 "permissions": { 13348 "actions": "a", 13349 "administration": "ad", 13350 "checks": "c", 13351 "contents": "co", 13352 "content_references": "cr", 13353 "deployments": "d", 13354 "environments": "e", 13355 "issues": "i", 13356 "metadata": "md", 13357 "members": "m", 13358 "organization_administration": "oa", 13359 "organization_hooks": "oh", 13360 "organization_plan": "op", 13361 "organization_pre_receive_hooks": "opr", 13362 "organization_projects": "op", 13363 "organization_secrets": "os", 13364 "organization_self_hosted_runners": "osh", 13365 "organization_user_blocking": "oub", 13366 "packages": "pkg", 13367 "pages": "pg", 13368 "pull_requests": "pr", 13369 "repository_hooks": "rh", 13370 "repository_projects": "rp", 13371 "repository_pre_receive_hooks": "rprh", 13372 "secrets": "s", 13373 "secret_scanning_alerts": "ssa", 13374 "security_events": "se", 13375 "single_file": "sf", 13376 "statuses": "s", 13377 "team_discussions": "td", 13378 "vulnerability_alerts": "va", 13379 "workflows": "w" 13380 }, 13381 "created_at": ` + referenceTimeStr + `, 13382 "updated_at": ` + referenceTimeStr + `, 13383 "has_multiple_single_files": false, 13384 "suspended_by": { 13385 "login": "l", 13386 "id": 1, 13387 "avatar_url": "a", 13388 "gravatar_id": "g", 13389 "name": "n", 13390 "company": "c", 13391 "blog": "b", 13392 "location": "l", 13393 "email": "e", 13394 "hireable": true, 13395 "bio": "b", 13396 "twitter_username": "t", 13397 "public_repos": 1, 13398 "followers": 1, 13399 "following": 1, 13400 "created_at": ` + referenceTimeStr + `, 13401 "suspended_at": ` + referenceTimeStr + `, 13402 "url": "u" 13403 }, 13404 "suspended_at": ` + referenceTimeStr + ` 13405 } 13406 }` 13407 13408 testJSONMarshal(t, u, want) 13409 } 13410 13411 func TestGitHubAppAuthorizationEvent_Marshal(t *testing.T) { 13412 testJSONMarshal(t, &GitHubAppAuthorizationEvent{}, "{}") 13413 13414 u := &GitHubAppAuthorizationEvent{ 13415 Action: String("a"), 13416 Sender: &User{ 13417 Login: String("l"), 13418 ID: Int64(1), 13419 NodeID: String("n"), 13420 URL: String("u"), 13421 ReposURL: String("r"), 13422 EventsURL: String("e"), 13423 AvatarURL: String("a"), 13424 }, 13425 } 13426 13427 want := `{ 13428 "action": "a", 13429 "sender": { 13430 "login": "l", 13431 "id": 1, 13432 "node_id": "n", 13433 "avatar_url": "a", 13434 "url": "u", 13435 "events_url": "e", 13436 "repos_url": "r" 13437 } 13438 }` 13439 13440 testJSONMarshal(t, u, want) 13441 } 13442 13443 func TestInstallationEvent_Marshal(t *testing.T) { 13444 testJSONMarshal(t, &InstallationEvent{}, "{}") 13445 13446 u := &InstallationEvent{ 13447 Action: String("a"), 13448 Repositories: []*Repository{ 13449 { 13450 ID: Int64(1), 13451 URL: String("u"), 13452 Name: String("n"), 13453 }, 13454 }, 13455 Sender: &User{ 13456 Login: String("l"), 13457 ID: Int64(1), 13458 NodeID: String("n"), 13459 URL: String("u"), 13460 ReposURL: String("r"), 13461 EventsURL: String("e"), 13462 AvatarURL: String("a"), 13463 }, 13464 Installation: &Installation{ 13465 ID: Int64(1), 13466 NodeID: String("nid"), 13467 AppID: Int64(1), 13468 AppSlug: String("as"), 13469 TargetID: Int64(1), 13470 Account: &User{ 13471 Login: String("l"), 13472 ID: Int64(1), 13473 URL: String("u"), 13474 AvatarURL: String("a"), 13475 GravatarID: String("g"), 13476 Name: String("n"), 13477 Company: String("c"), 13478 Blog: String("b"), 13479 Location: String("l"), 13480 Email: String("e"), 13481 Hireable: Bool(true), 13482 Bio: String("b"), 13483 TwitterUsername: String("t"), 13484 PublicRepos: Int(1), 13485 Followers: Int(1), 13486 Following: Int(1), 13487 CreatedAt: &Timestamp{referenceTime}, 13488 SuspendedAt: &Timestamp{referenceTime}, 13489 }, 13490 AccessTokensURL: String("atu"), 13491 RepositoriesURL: String("ru"), 13492 HTMLURL: String("hu"), 13493 TargetType: String("tt"), 13494 SingleFileName: String("sfn"), 13495 RepositorySelection: String("rs"), 13496 Events: []string{"e"}, 13497 SingleFilePaths: []string{"s"}, 13498 Permissions: &InstallationPermissions{ 13499 Actions: String("a"), 13500 Administration: String("ad"), 13501 Checks: String("c"), 13502 Contents: String("co"), 13503 ContentReferences: String("cr"), 13504 Deployments: String("d"), 13505 Environments: String("e"), 13506 Issues: String("i"), 13507 Metadata: String("md"), 13508 Members: String("m"), 13509 OrganizationAdministration: String("oa"), 13510 OrganizationHooks: String("oh"), 13511 OrganizationPlan: String("op"), 13512 OrganizationPreReceiveHooks: String("opr"), 13513 OrganizationProjects: String("op"), 13514 OrganizationSecrets: String("os"), 13515 OrganizationSelfHostedRunners: String("osh"), 13516 OrganizationUserBlocking: String("oub"), 13517 Packages: String("pkg"), 13518 Pages: String("pg"), 13519 PullRequests: String("pr"), 13520 RepositoryHooks: String("rh"), 13521 RepositoryProjects: String("rp"), 13522 RepositoryPreReceiveHooks: String("rprh"), 13523 Secrets: String("s"), 13524 SecretScanningAlerts: String("ssa"), 13525 SecurityEvents: String("se"), 13526 SingleFile: String("sf"), 13527 Statuses: String("s"), 13528 TeamDiscussions: String("td"), 13529 VulnerabilityAlerts: String("va"), 13530 Workflows: String("w"), 13531 }, 13532 CreatedAt: &Timestamp{referenceTime}, 13533 UpdatedAt: &Timestamp{referenceTime}, 13534 HasMultipleSingleFiles: Bool(false), 13535 SuspendedBy: &User{ 13536 Login: String("l"), 13537 ID: Int64(1), 13538 URL: String("u"), 13539 AvatarURL: String("a"), 13540 GravatarID: String("g"), 13541 Name: String("n"), 13542 Company: String("c"), 13543 Blog: String("b"), 13544 Location: String("l"), 13545 Email: String("e"), 13546 Hireable: Bool(true), 13547 Bio: String("b"), 13548 TwitterUsername: String("t"), 13549 PublicRepos: Int(1), 13550 Followers: Int(1), 13551 Following: Int(1), 13552 CreatedAt: &Timestamp{referenceTime}, 13553 SuspendedAt: &Timestamp{referenceTime}, 13554 }, 13555 SuspendedAt: &Timestamp{referenceTime}, 13556 }, 13557 } 13558 13559 want := `{ 13560 "action": "a", 13561 "repositories": [ 13562 { 13563 "id":1, 13564 "name":"n", 13565 "url":"u" 13566 } 13567 ], 13568 "sender": { 13569 "login": "l", 13570 "id": 1, 13571 "node_id": "n", 13572 "avatar_url": "a", 13573 "url": "u", 13574 "events_url": "e", 13575 "repos_url": "r" 13576 }, 13577 "installation": { 13578 "id": 1, 13579 "node_id": "nid", 13580 "app_id": 1, 13581 "app_slug": "as", 13582 "target_id": 1, 13583 "account": { 13584 "login": "l", 13585 "id": 1, 13586 "avatar_url": "a", 13587 "gravatar_id": "g", 13588 "name": "n", 13589 "company": "c", 13590 "blog": "b", 13591 "location": "l", 13592 "email": "e", 13593 "hireable": true, 13594 "bio": "b", 13595 "twitter_username": "t", 13596 "public_repos": 1, 13597 "followers": 1, 13598 "following": 1, 13599 "created_at": ` + referenceTimeStr + `, 13600 "suspended_at": ` + referenceTimeStr + `, 13601 "url": "u" 13602 }, 13603 "access_tokens_url": "atu", 13604 "repositories_url": "ru", 13605 "html_url": "hu", 13606 "target_type": "tt", 13607 "single_file_name": "sfn", 13608 "repository_selection": "rs", 13609 "events": [ 13610 "e" 13611 ], 13612 "single_file_paths": [ 13613 "s" 13614 ], 13615 "permissions": { 13616 "actions": "a", 13617 "administration": "ad", 13618 "checks": "c", 13619 "contents": "co", 13620 "content_references": "cr", 13621 "deployments": "d", 13622 "environments": "e", 13623 "issues": "i", 13624 "metadata": "md", 13625 "members": "m", 13626 "organization_administration": "oa", 13627 "organization_hooks": "oh", 13628 "organization_plan": "op", 13629 "organization_pre_receive_hooks": "opr", 13630 "organization_projects": "op", 13631 "organization_secrets": "os", 13632 "organization_self_hosted_runners": "osh", 13633 "organization_user_blocking": "oub", 13634 "packages": "pkg", 13635 "pages": "pg", 13636 "pull_requests": "pr", 13637 "repository_hooks": "rh", 13638 "repository_projects": "rp", 13639 "repository_pre_receive_hooks": "rprh", 13640 "secrets": "s", 13641 "secret_scanning_alerts": "ssa", 13642 "security_events": "se", 13643 "single_file": "sf", 13644 "statuses": "s", 13645 "team_discussions": "td", 13646 "vulnerability_alerts": "va", 13647 "workflows": "w" 13648 }, 13649 "created_at": ` + referenceTimeStr + `, 13650 "updated_at": ` + referenceTimeStr + `, 13651 "has_multiple_single_files": false, 13652 "suspended_by": { 13653 "login": "l", 13654 "id": 1, 13655 "avatar_url": "a", 13656 "gravatar_id": "g", 13657 "name": "n", 13658 "company": "c", 13659 "blog": "b", 13660 "location": "l", 13661 "email": "e", 13662 "hireable": true, 13663 "bio": "b", 13664 "twitter_username": "t", 13665 "public_repos": 1, 13666 "followers": 1, 13667 "following": 1, 13668 "created_at": ` + referenceTimeStr + `, 13669 "suspended_at": ` + referenceTimeStr + `, 13670 "url": "u" 13671 }, 13672 "suspended_at": ` + referenceTimeStr + ` 13673 } 13674 }` 13675 13676 testJSONMarshal(t, u, want) 13677 } 13678 13679 func TestHeadCommit_Marshal(t *testing.T) { 13680 testJSONMarshal(t, &HeadCommit{}, "{}") 13681 13682 u := &HeadCommit{ 13683 Message: String("m"), 13684 Author: &CommitAuthor{ 13685 Date: &Timestamp{referenceTime}, 13686 Name: String("n"), 13687 Email: String("e"), 13688 Login: String("u"), 13689 }, 13690 URL: String("u"), 13691 Distinct: Bool(true), 13692 SHA: String("s"), 13693 ID: String("id"), 13694 TreeID: String("tid"), 13695 Timestamp: &Timestamp{referenceTime}, 13696 Committer: &CommitAuthor{ 13697 Date: &Timestamp{referenceTime}, 13698 Name: String("n"), 13699 Email: String("e"), 13700 Login: String("u"), 13701 }, 13702 Added: []string{"a"}, 13703 Removed: []string{"r"}, 13704 Modified: []string{"m"}, 13705 } 13706 13707 want := `{ 13708 "message": "m", 13709 "author": { 13710 "date": ` + referenceTimeStr + `, 13711 "name": "n", 13712 "email": "e", 13713 "username": "u" 13714 }, 13715 "url": "u", 13716 "distinct": true, 13717 "sha": "s", 13718 "id": "id", 13719 "tree_id": "tid", 13720 "timestamp": ` + referenceTimeStr + `, 13721 "committer": { 13722 "date": ` + referenceTimeStr + `, 13723 "name": "n", 13724 "email": "e", 13725 "username": "u" 13726 }, 13727 "added": [ 13728 "a" 13729 ], 13730 "removed": [ 13731 "r" 13732 ], 13733 "modified": [ 13734 "m" 13735 ] 13736 }` 13737 13738 testJSONMarshal(t, u, want) 13739 } 13740 13741 func TestPushEventRepository_Marshal(t *testing.T) { 13742 testJSONMarshal(t, &PushEventRepository{}, "{}") 13743 13744 u := &PushEventRepository{ 13745 ID: Int64(1), 13746 NodeID: String("nid"), 13747 Name: String("n"), 13748 FullName: String("fn"), 13749 Owner: &User{ 13750 Login: String("l"), 13751 ID: Int64(1), 13752 AvatarURL: String("a"), 13753 GravatarID: String("g"), 13754 Name: String("n"), 13755 Company: String("c"), 13756 Blog: String("b"), 13757 Location: String("l"), 13758 Email: String("e"), 13759 Hireable: Bool(true), 13760 PublicRepos: Int(1), 13761 Followers: Int(1), 13762 Following: Int(1), 13763 CreatedAt: &Timestamp{referenceTime}, 13764 URL: String("u"), 13765 }, 13766 Private: Bool(true), 13767 Description: String("d"), 13768 Fork: Bool(true), 13769 CreatedAt: &Timestamp{referenceTime}, 13770 PushedAt: &Timestamp{referenceTime}, 13771 UpdatedAt: &Timestamp{referenceTime}, 13772 Homepage: String("h"), 13773 PullsURL: String("p"), 13774 Size: Int(1), 13775 StargazersCount: Int(1), 13776 WatchersCount: Int(1), 13777 Language: String("l"), 13778 HasIssues: Bool(true), 13779 HasDownloads: Bool(true), 13780 HasWiki: Bool(true), 13781 HasPages: Bool(true), 13782 ForksCount: Int(1), 13783 Archived: Bool(true), 13784 Disabled: Bool(true), 13785 OpenIssuesCount: Int(1), 13786 DefaultBranch: String("d"), 13787 MasterBranch: String("m"), 13788 Organization: String("o"), 13789 URL: String("u"), 13790 ArchiveURL: String("a"), 13791 HTMLURL: String("h"), 13792 StatusesURL: String("s"), 13793 GitURL: String("g"), 13794 SSHURL: String("s"), 13795 CloneURL: String("c"), 13796 SVNURL: String("s"), 13797 Topics: []string{"octocat", "api"}, 13798 } 13799 13800 want := `{ 13801 "id": 1, 13802 "node_id": "nid", 13803 "name": "n", 13804 "full_name": "fn", 13805 "owner": { 13806 "login": "l", 13807 "id": 1, 13808 "avatar_url": "a", 13809 "gravatar_id": "g", 13810 "name": "n", 13811 "company": "c", 13812 "blog": "b", 13813 "location": "l", 13814 "email": "e", 13815 "hireable": true, 13816 "public_repos": 1, 13817 "followers": 1, 13818 "following": 1, 13819 "created_at": ` + referenceTimeStr + `, 13820 "url": "u" 13821 }, 13822 "private": true, 13823 "description": "d", 13824 "fork": true, 13825 "created_at": ` + referenceTimeStr + `, 13826 "pushed_at": ` + referenceTimeStr + `, 13827 "updated_at": ` + referenceTimeStr + `, 13828 "homepage": "h", 13829 "pulls_url": "p", 13830 "size": 1, 13831 "stargazers_count": 1, 13832 "watchers_count": 1, 13833 "language": "l", 13834 "has_issues": true, 13835 "has_downloads": true, 13836 "has_wiki": true, 13837 "has_pages": true, 13838 "forks_count": 1, 13839 "archived": true, 13840 "disabled": true, 13841 "open_issues_count": 1, 13842 "default_branch": "d", 13843 "master_branch": "m", 13844 "organization": "o", 13845 "url": "u", 13846 "archive_url": "a", 13847 "html_url": "h", 13848 "statuses_url": "s", 13849 "git_url": "g", 13850 "ssh_url": "s", 13851 "clone_url": "c", 13852 "svn_url": "s", 13853 "topics": ["octocat","api"] 13854 }` 13855 13856 testJSONMarshal(t, u, want) 13857 } 13858 13859 func TestPushEventRepoOwner_Marshal(t *testing.T) { 13860 testJSONMarshal(t, &PushEventRepoOwner{}, "{}") 13861 13862 u := &PushEventRepoOwner{ 13863 Name: String("n"), 13864 Email: String("e"), 13865 } 13866 13867 want := `{ 13868 "name": "n", 13869 "email": "e" 13870 }` 13871 13872 testJSONMarshal(t, u, want) 13873 } 13874 13875 func TestProjectEvent_Marshal(t *testing.T) { 13876 testJSONMarshal(t, &ProjectEvent{}, "{}") 13877 13878 u := &ProjectEvent{ 13879 Project: &Project{ID: Int64(1)}, 13880 Action: String("a"), 13881 Changes: &ProjectChange{ 13882 Name: &ProjectName{From: String("NameFrom")}, 13883 Body: &ProjectBody{From: String("BodyFrom")}, 13884 }, 13885 Repo: &Repository{ 13886 ID: Int64(1), 13887 URL: String("s"), 13888 Name: String("n"), 13889 }, 13890 Org: &Organization{ 13891 BillingEmail: String("be"), 13892 Blog: String("b"), 13893 Company: String("c"), 13894 Email: String("e"), 13895 TwitterUsername: String("tu"), 13896 Location: String("loc"), 13897 Name: String("n"), 13898 Description: String("d"), 13899 IsVerified: Bool(true), 13900 HasOrganizationProjects: Bool(true), 13901 HasRepositoryProjects: Bool(true), 13902 DefaultRepoPermission: String("drp"), 13903 MembersCanCreateRepos: Bool(true), 13904 MembersCanCreateInternalRepos: Bool(true), 13905 MembersCanCreatePrivateRepos: Bool(true), 13906 MembersCanCreatePublicRepos: Bool(false), 13907 MembersAllowedRepositoryCreationType: String("marct"), 13908 MembersCanCreatePages: Bool(true), 13909 MembersCanCreatePublicPages: Bool(false), 13910 MembersCanCreatePrivatePages: Bool(true), 13911 }, 13912 Sender: &User{ 13913 Login: String("l"), 13914 ID: Int64(1), 13915 NodeID: String("n"), 13916 URL: String("u"), 13917 ReposURL: String("r"), 13918 EventsURL: String("e"), 13919 AvatarURL: String("a"), 13920 }, 13921 Installation: &Installation{ 13922 ID: Int64(1), 13923 NodeID: String("nid"), 13924 AppID: Int64(1), 13925 AppSlug: String("as"), 13926 TargetID: Int64(1), 13927 Account: &User{ 13928 Login: String("l"), 13929 ID: Int64(1), 13930 URL: String("u"), 13931 AvatarURL: String("a"), 13932 GravatarID: String("g"), 13933 Name: String("n"), 13934 Company: String("c"), 13935 Blog: String("b"), 13936 Location: String("l"), 13937 Email: String("e"), 13938 Hireable: Bool(true), 13939 Bio: String("b"), 13940 TwitterUsername: String("t"), 13941 PublicRepos: Int(1), 13942 Followers: Int(1), 13943 Following: Int(1), 13944 CreatedAt: &Timestamp{referenceTime}, 13945 SuspendedAt: &Timestamp{referenceTime}, 13946 }, 13947 AccessTokensURL: String("atu"), 13948 RepositoriesURL: String("ru"), 13949 HTMLURL: String("hu"), 13950 TargetType: String("tt"), 13951 SingleFileName: String("sfn"), 13952 RepositorySelection: String("rs"), 13953 Events: []string{"e"}, 13954 SingleFilePaths: []string{"s"}, 13955 Permissions: &InstallationPermissions{ 13956 Actions: String("a"), 13957 Administration: String("ad"), 13958 Checks: String("c"), 13959 Contents: String("co"), 13960 ContentReferences: String("cr"), 13961 Deployments: String("d"), 13962 Environments: String("e"), 13963 Issues: String("i"), 13964 Metadata: String("md"), 13965 Members: String("m"), 13966 OrganizationAdministration: String("oa"), 13967 OrganizationHooks: String("oh"), 13968 OrganizationPlan: String("op"), 13969 OrganizationPreReceiveHooks: String("opr"), 13970 OrganizationProjects: String("op"), 13971 OrganizationSecrets: String("os"), 13972 OrganizationSelfHostedRunners: String("osh"), 13973 OrganizationUserBlocking: String("oub"), 13974 Packages: String("pkg"), 13975 Pages: String("pg"), 13976 PullRequests: String("pr"), 13977 RepositoryHooks: String("rh"), 13978 RepositoryProjects: String("rp"), 13979 RepositoryPreReceiveHooks: String("rprh"), 13980 Secrets: String("s"), 13981 SecretScanningAlerts: String("ssa"), 13982 SecurityEvents: String("se"), 13983 SingleFile: String("sf"), 13984 Statuses: String("s"), 13985 TeamDiscussions: String("td"), 13986 VulnerabilityAlerts: String("va"), 13987 Workflows: String("w"), 13988 }, 13989 CreatedAt: &Timestamp{referenceTime}, 13990 UpdatedAt: &Timestamp{referenceTime}, 13991 HasMultipleSingleFiles: Bool(false), 13992 SuspendedBy: &User{ 13993 Login: String("l"), 13994 ID: Int64(1), 13995 URL: String("u"), 13996 AvatarURL: String("a"), 13997 GravatarID: String("g"), 13998 Name: String("n"), 13999 Company: String("c"), 14000 Blog: String("b"), 14001 Location: String("l"), 14002 Email: String("e"), 14003 Hireable: Bool(true), 14004 Bio: String("b"), 14005 TwitterUsername: String("t"), 14006 PublicRepos: Int(1), 14007 Followers: Int(1), 14008 Following: Int(1), 14009 CreatedAt: &Timestamp{referenceTime}, 14010 SuspendedAt: &Timestamp{referenceTime}, 14011 }, 14012 SuspendedAt: &Timestamp{referenceTime}, 14013 }, 14014 } 14015 14016 want := `{ 14017 "action": "a", 14018 "changes": { 14019 "name": { 14020 "from": "NameFrom" 14021 }, 14022 "body": { 14023 "from": "BodyFrom" 14024 } 14025 }, 14026 "project": { 14027 "id": 1 14028 }, 14029 "repository": { 14030 "id": 1, 14031 "name": "n", 14032 "url": "s" 14033 }, 14034 "organization": { 14035 "name": "n", 14036 "company": "c", 14037 "blog": "b", 14038 "location": "loc", 14039 "email": "e", 14040 "twitter_username": "tu", 14041 "description": "d", 14042 "billing_email": "be", 14043 "is_verified": true, 14044 "has_organization_projects": true, 14045 "has_repository_projects": true, 14046 "default_repository_permission": "drp", 14047 "members_can_create_repositories": true, 14048 "members_can_create_public_repositories": false, 14049 "members_can_create_private_repositories": true, 14050 "members_can_create_internal_repositories": true, 14051 "members_allowed_repository_creation_type": "marct", 14052 "members_can_create_pages": true, 14053 "members_can_create_public_pages": false, 14054 "members_can_create_private_pages": true 14055 }, 14056 "sender": { 14057 "login": "l", 14058 "id": 1, 14059 "node_id": "n", 14060 "avatar_url": "a", 14061 "url": "u", 14062 "events_url": "e", 14063 "repos_url": "r" 14064 }, 14065 "installation": { 14066 "id": 1, 14067 "node_id": "nid", 14068 "app_id": 1, 14069 "app_slug": "as", 14070 "target_id": 1, 14071 "account": { 14072 "login": "l", 14073 "id": 1, 14074 "avatar_url": "a", 14075 "gravatar_id": "g", 14076 "name": "n", 14077 "company": "c", 14078 "blog": "b", 14079 "location": "l", 14080 "email": "e", 14081 "hireable": true, 14082 "bio": "b", 14083 "twitter_username": "t", 14084 "public_repos": 1, 14085 "followers": 1, 14086 "following": 1, 14087 "created_at": ` + referenceTimeStr + `, 14088 "suspended_at": ` + referenceTimeStr + `, 14089 "url": "u" 14090 }, 14091 "access_tokens_url": "atu", 14092 "repositories_url": "ru", 14093 "html_url": "hu", 14094 "target_type": "tt", 14095 "single_file_name": "sfn", 14096 "repository_selection": "rs", 14097 "events": [ 14098 "e" 14099 ], 14100 "single_file_paths": [ 14101 "s" 14102 ], 14103 "permissions": { 14104 "actions": "a", 14105 "administration": "ad", 14106 "checks": "c", 14107 "contents": "co", 14108 "content_references": "cr", 14109 "deployments": "d", 14110 "environments": "e", 14111 "issues": "i", 14112 "metadata": "md", 14113 "members": "m", 14114 "organization_administration": "oa", 14115 "organization_hooks": "oh", 14116 "organization_plan": "op", 14117 "organization_pre_receive_hooks": "opr", 14118 "organization_projects": "op", 14119 "organization_secrets": "os", 14120 "organization_self_hosted_runners": "osh", 14121 "organization_user_blocking": "oub", 14122 "packages": "pkg", 14123 "pages": "pg", 14124 "pull_requests": "pr", 14125 "repository_hooks": "rh", 14126 "repository_projects": "rp", 14127 "repository_pre_receive_hooks": "rprh", 14128 "secrets": "s", 14129 "secret_scanning_alerts": "ssa", 14130 "security_events": "se", 14131 "single_file": "sf", 14132 "statuses": "s", 14133 "team_discussions": "td", 14134 "vulnerability_alerts": "va", 14135 "workflows": "w" 14136 }, 14137 "created_at": ` + referenceTimeStr + `, 14138 "updated_at": ` + referenceTimeStr + `, 14139 "has_multiple_single_files": false, 14140 "suspended_by": { 14141 "login": "l", 14142 "id": 1, 14143 "avatar_url": "a", 14144 "gravatar_id": "g", 14145 "name": "n", 14146 "company": "c", 14147 "blog": "b", 14148 "location": "l", 14149 "email": "e", 14150 "hireable": true, 14151 "bio": "b", 14152 "twitter_username": "t", 14153 "public_repos": 1, 14154 "followers": 1, 14155 "following": 1, 14156 "created_at": ` + referenceTimeStr + `, 14157 "suspended_at": ` + referenceTimeStr + `, 14158 "url": "u" 14159 }, 14160 "suspended_at": ` + referenceTimeStr + ` 14161 } 14162 }` 14163 14164 testJSONMarshal(t, u, want) 14165 } 14166 14167 func TestProjectCardEvent_Marshal(t *testing.T) { 14168 testJSONMarshal(t, &ProjectCardEvent{}, "{}") 14169 14170 u := &ProjectCardEvent{ 14171 Action: String("a"), 14172 Changes: &ProjectCardChange{ 14173 Note: &ProjectCardNote{From: String("NoteFrom")}, 14174 }, 14175 AfterID: Int64(1), 14176 ProjectCard: &ProjectCard{ID: Int64(1)}, 14177 Repo: &Repository{ 14178 ID: Int64(1), 14179 URL: String("s"), 14180 Name: String("n"), 14181 }, 14182 Org: &Organization{ 14183 BillingEmail: String("be"), 14184 Blog: String("b"), 14185 Company: String("c"), 14186 Email: String("e"), 14187 TwitterUsername: String("tu"), 14188 Location: String("loc"), 14189 Name: String("n"), 14190 Description: String("d"), 14191 IsVerified: Bool(true), 14192 HasOrganizationProjects: Bool(true), 14193 HasRepositoryProjects: Bool(true), 14194 DefaultRepoPermission: String("drp"), 14195 MembersCanCreateRepos: Bool(true), 14196 MembersCanCreateInternalRepos: Bool(true), 14197 MembersCanCreatePrivateRepos: Bool(true), 14198 MembersCanCreatePublicRepos: Bool(false), 14199 MembersAllowedRepositoryCreationType: String("marct"), 14200 MembersCanCreatePages: Bool(true), 14201 MembersCanCreatePublicPages: Bool(false), 14202 MembersCanCreatePrivatePages: Bool(true), 14203 }, 14204 Sender: &User{ 14205 Login: String("l"), 14206 ID: Int64(1), 14207 NodeID: String("n"), 14208 URL: String("u"), 14209 ReposURL: String("r"), 14210 EventsURL: String("e"), 14211 AvatarURL: String("a"), 14212 }, 14213 Installation: &Installation{ 14214 ID: Int64(1), 14215 NodeID: String("nid"), 14216 AppID: Int64(1), 14217 AppSlug: String("as"), 14218 TargetID: Int64(1), 14219 Account: &User{ 14220 Login: String("l"), 14221 ID: Int64(1), 14222 URL: String("u"), 14223 AvatarURL: String("a"), 14224 GravatarID: String("g"), 14225 Name: String("n"), 14226 Company: String("c"), 14227 Blog: String("b"), 14228 Location: String("l"), 14229 Email: String("e"), 14230 Hireable: Bool(true), 14231 Bio: String("b"), 14232 TwitterUsername: String("t"), 14233 PublicRepos: Int(1), 14234 Followers: Int(1), 14235 Following: Int(1), 14236 CreatedAt: &Timestamp{referenceTime}, 14237 SuspendedAt: &Timestamp{referenceTime}, 14238 }, 14239 AccessTokensURL: String("atu"), 14240 RepositoriesURL: String("ru"), 14241 HTMLURL: String("hu"), 14242 TargetType: String("tt"), 14243 SingleFileName: String("sfn"), 14244 RepositorySelection: String("rs"), 14245 Events: []string{"e"}, 14246 SingleFilePaths: []string{"s"}, 14247 Permissions: &InstallationPermissions{ 14248 Actions: String("a"), 14249 Administration: String("ad"), 14250 Checks: String("c"), 14251 Contents: String("co"), 14252 ContentReferences: String("cr"), 14253 Deployments: String("d"), 14254 Environments: String("e"), 14255 Issues: String("i"), 14256 Metadata: String("md"), 14257 Members: String("m"), 14258 OrganizationAdministration: String("oa"), 14259 OrganizationHooks: String("oh"), 14260 OrganizationPlan: String("op"), 14261 OrganizationPreReceiveHooks: String("opr"), 14262 OrganizationProjects: String("op"), 14263 OrganizationSecrets: String("os"), 14264 OrganizationSelfHostedRunners: String("osh"), 14265 OrganizationUserBlocking: String("oub"), 14266 Packages: String("pkg"), 14267 Pages: String("pg"), 14268 PullRequests: String("pr"), 14269 RepositoryHooks: String("rh"), 14270 RepositoryProjects: String("rp"), 14271 RepositoryPreReceiveHooks: String("rprh"), 14272 Secrets: String("s"), 14273 SecretScanningAlerts: String("ssa"), 14274 SecurityEvents: String("se"), 14275 SingleFile: String("sf"), 14276 Statuses: String("s"), 14277 TeamDiscussions: String("td"), 14278 VulnerabilityAlerts: String("va"), 14279 Workflows: String("w"), 14280 }, 14281 CreatedAt: &Timestamp{referenceTime}, 14282 UpdatedAt: &Timestamp{referenceTime}, 14283 HasMultipleSingleFiles: Bool(false), 14284 SuspendedBy: &User{ 14285 Login: String("l"), 14286 ID: Int64(1), 14287 URL: String("u"), 14288 AvatarURL: String("a"), 14289 GravatarID: String("g"), 14290 Name: String("n"), 14291 Company: String("c"), 14292 Blog: String("b"), 14293 Location: String("l"), 14294 Email: String("e"), 14295 Hireable: Bool(true), 14296 Bio: String("b"), 14297 TwitterUsername: String("t"), 14298 PublicRepos: Int(1), 14299 Followers: Int(1), 14300 Following: Int(1), 14301 CreatedAt: &Timestamp{referenceTime}, 14302 SuspendedAt: &Timestamp{referenceTime}, 14303 }, 14304 SuspendedAt: &Timestamp{referenceTime}, 14305 }, 14306 } 14307 14308 want := `{ 14309 "action": "a", 14310 "changes": { 14311 "note": { 14312 "from": "NoteFrom" 14313 } 14314 }, 14315 "after_id": 1, 14316 "project_card": { 14317 "id": 1 14318 }, 14319 "repository": { 14320 "id": 1, 14321 "name": "n", 14322 "url": "s" 14323 }, 14324 "organization": { 14325 "name": "n", 14326 "company": "c", 14327 "blog": "b", 14328 "location": "loc", 14329 "email": "e", 14330 "twitter_username": "tu", 14331 "description": "d", 14332 "billing_email": "be", 14333 "is_verified": true, 14334 "has_organization_projects": true, 14335 "has_repository_projects": true, 14336 "default_repository_permission": "drp", 14337 "members_can_create_repositories": true, 14338 "members_can_create_public_repositories": false, 14339 "members_can_create_private_repositories": true, 14340 "members_can_create_internal_repositories": true, 14341 "members_allowed_repository_creation_type": "marct", 14342 "members_can_create_pages": true, 14343 "members_can_create_public_pages": false, 14344 "members_can_create_private_pages": true 14345 }, 14346 "sender": { 14347 "login": "l", 14348 "id": 1, 14349 "node_id": "n", 14350 "avatar_url": "a", 14351 "url": "u", 14352 "events_url": "e", 14353 "repos_url": "r" 14354 }, 14355 "installation": { 14356 "id": 1, 14357 "node_id": "nid", 14358 "app_id": 1, 14359 "app_slug": "as", 14360 "target_id": 1, 14361 "account": { 14362 "login": "l", 14363 "id": 1, 14364 "avatar_url": "a", 14365 "gravatar_id": "g", 14366 "name": "n", 14367 "company": "c", 14368 "blog": "b", 14369 "location": "l", 14370 "email": "e", 14371 "hireable": true, 14372 "bio": "b", 14373 "twitter_username": "t", 14374 "public_repos": 1, 14375 "followers": 1, 14376 "following": 1, 14377 "created_at": ` + referenceTimeStr + `, 14378 "suspended_at": ` + referenceTimeStr + `, 14379 "url": "u" 14380 }, 14381 "access_tokens_url": "atu", 14382 "repositories_url": "ru", 14383 "html_url": "hu", 14384 "target_type": "tt", 14385 "single_file_name": "sfn", 14386 "repository_selection": "rs", 14387 "events": [ 14388 "e" 14389 ], 14390 "single_file_paths": [ 14391 "s" 14392 ], 14393 "permissions": { 14394 "actions": "a", 14395 "administration": "ad", 14396 "checks": "c", 14397 "contents": "co", 14398 "content_references": "cr", 14399 "deployments": "d", 14400 "environments": "e", 14401 "issues": "i", 14402 "metadata": "md", 14403 "members": "m", 14404 "organization_administration": "oa", 14405 "organization_hooks": "oh", 14406 "organization_plan": "op", 14407 "organization_pre_receive_hooks": "opr", 14408 "organization_projects": "op", 14409 "organization_secrets": "os", 14410 "organization_self_hosted_runners": "osh", 14411 "organization_user_blocking": "oub", 14412 "packages": "pkg", 14413 "pages": "pg", 14414 "pull_requests": "pr", 14415 "repository_hooks": "rh", 14416 "repository_projects": "rp", 14417 "repository_pre_receive_hooks": "rprh", 14418 "secrets": "s", 14419 "secret_scanning_alerts": "ssa", 14420 "security_events": "se", 14421 "single_file": "sf", 14422 "statuses": "s", 14423 "team_discussions": "td", 14424 "vulnerability_alerts": "va", 14425 "workflows": "w" 14426 }, 14427 "created_at": ` + referenceTimeStr + `, 14428 "updated_at": ` + referenceTimeStr + `, 14429 "has_multiple_single_files": false, 14430 "suspended_by": { 14431 "login": "l", 14432 "id": 1, 14433 "avatar_url": "a", 14434 "gravatar_id": "g", 14435 "name": "n", 14436 "company": "c", 14437 "blog": "b", 14438 "location": "l", 14439 "email": "e", 14440 "hireable": true, 14441 "bio": "b", 14442 "twitter_username": "t", 14443 "public_repos": 1, 14444 "followers": 1, 14445 "following": 1, 14446 "created_at": ` + referenceTimeStr + `, 14447 "suspended_at": ` + referenceTimeStr + `, 14448 "url": "u" 14449 }, 14450 "suspended_at": ` + referenceTimeStr + ` 14451 } 14452 }` 14453 14454 testJSONMarshal(t, u, want) 14455 } 14456 14457 func TestProjectColumnEvent_Marshal(t *testing.T) { 14458 testJSONMarshal(t, &ProjectColumnEvent{}, "{}") 14459 14460 u := &ProjectColumnEvent{ 14461 Action: String("a"), 14462 Changes: &ProjectColumnChange{ 14463 Name: &ProjectColumnName{From: String("NameFrom")}, 14464 }, 14465 AfterID: Int64(1), 14466 ProjectColumn: &ProjectColumn{ID: Int64(1)}, 14467 Repo: &Repository{ 14468 ID: Int64(1), 14469 URL: String("s"), 14470 Name: String("n"), 14471 }, 14472 Org: &Organization{ 14473 BillingEmail: String("be"), 14474 Blog: String("b"), 14475 Company: String("c"), 14476 Email: String("e"), 14477 TwitterUsername: String("tu"), 14478 Location: String("loc"), 14479 Name: String("n"), 14480 Description: String("d"), 14481 IsVerified: Bool(true), 14482 HasOrganizationProjects: Bool(true), 14483 HasRepositoryProjects: Bool(true), 14484 DefaultRepoPermission: String("drp"), 14485 MembersCanCreateRepos: Bool(true), 14486 MembersCanCreateInternalRepos: Bool(true), 14487 MembersCanCreatePrivateRepos: Bool(true), 14488 MembersCanCreatePublicRepos: Bool(false), 14489 MembersAllowedRepositoryCreationType: String("marct"), 14490 MembersCanCreatePages: Bool(true), 14491 MembersCanCreatePublicPages: Bool(false), 14492 MembersCanCreatePrivatePages: Bool(true), 14493 }, 14494 Sender: &User{ 14495 Login: String("l"), 14496 ID: Int64(1), 14497 NodeID: String("n"), 14498 URL: String("u"), 14499 ReposURL: String("r"), 14500 EventsURL: String("e"), 14501 AvatarURL: String("a"), 14502 }, 14503 Installation: &Installation{ 14504 ID: Int64(1), 14505 NodeID: String("nid"), 14506 AppID: Int64(1), 14507 AppSlug: String("as"), 14508 TargetID: Int64(1), 14509 Account: &User{ 14510 Login: String("l"), 14511 ID: Int64(1), 14512 URL: String("u"), 14513 AvatarURL: String("a"), 14514 GravatarID: String("g"), 14515 Name: String("n"), 14516 Company: String("c"), 14517 Blog: String("b"), 14518 Location: String("l"), 14519 Email: String("e"), 14520 Hireable: Bool(true), 14521 Bio: String("b"), 14522 TwitterUsername: String("t"), 14523 PublicRepos: Int(1), 14524 Followers: Int(1), 14525 Following: Int(1), 14526 CreatedAt: &Timestamp{referenceTime}, 14527 SuspendedAt: &Timestamp{referenceTime}, 14528 }, 14529 AccessTokensURL: String("atu"), 14530 RepositoriesURL: String("ru"), 14531 HTMLURL: String("hu"), 14532 TargetType: String("tt"), 14533 SingleFileName: String("sfn"), 14534 RepositorySelection: String("rs"), 14535 Events: []string{"e"}, 14536 SingleFilePaths: []string{"s"}, 14537 Permissions: &InstallationPermissions{ 14538 Actions: String("a"), 14539 Administration: String("ad"), 14540 Checks: String("c"), 14541 Contents: String("co"), 14542 ContentReferences: String("cr"), 14543 Deployments: String("d"), 14544 Environments: String("e"), 14545 Issues: String("i"), 14546 Metadata: String("md"), 14547 Members: String("m"), 14548 OrganizationAdministration: String("oa"), 14549 OrganizationHooks: String("oh"), 14550 OrganizationPlan: String("op"), 14551 OrganizationPreReceiveHooks: String("opr"), 14552 OrganizationProjects: String("op"), 14553 OrganizationSecrets: String("os"), 14554 OrganizationSelfHostedRunners: String("osh"), 14555 OrganizationUserBlocking: String("oub"), 14556 Packages: String("pkg"), 14557 Pages: String("pg"), 14558 PullRequests: String("pr"), 14559 RepositoryHooks: String("rh"), 14560 RepositoryProjects: String("rp"), 14561 RepositoryPreReceiveHooks: String("rprh"), 14562 Secrets: String("s"), 14563 SecretScanningAlerts: String("ssa"), 14564 SecurityEvents: String("se"), 14565 SingleFile: String("sf"), 14566 Statuses: String("s"), 14567 TeamDiscussions: String("td"), 14568 VulnerabilityAlerts: String("va"), 14569 Workflows: String("w"), 14570 }, 14571 CreatedAt: &Timestamp{referenceTime}, 14572 UpdatedAt: &Timestamp{referenceTime}, 14573 HasMultipleSingleFiles: Bool(false), 14574 SuspendedBy: &User{ 14575 Login: String("l"), 14576 ID: Int64(1), 14577 URL: String("u"), 14578 AvatarURL: String("a"), 14579 GravatarID: String("g"), 14580 Name: String("n"), 14581 Company: String("c"), 14582 Blog: String("b"), 14583 Location: String("l"), 14584 Email: String("e"), 14585 Hireable: Bool(true), 14586 Bio: String("b"), 14587 TwitterUsername: String("t"), 14588 PublicRepos: Int(1), 14589 Followers: Int(1), 14590 Following: Int(1), 14591 CreatedAt: &Timestamp{referenceTime}, 14592 SuspendedAt: &Timestamp{referenceTime}, 14593 }, 14594 SuspendedAt: &Timestamp{referenceTime}, 14595 }, 14596 } 14597 14598 want := `{ 14599 "action": "a", 14600 "changes": { 14601 "name": { 14602 "from": "NameFrom" 14603 } 14604 }, 14605 "after_id": 1, 14606 "project_column": { 14607 "id": 1 14608 }, 14609 "repository": { 14610 "id": 1, 14611 "name": "n", 14612 "url": "s" 14613 }, 14614 "organization": { 14615 "name": "n", 14616 "company": "c", 14617 "blog": "b", 14618 "location": "loc", 14619 "email": "e", 14620 "twitter_username": "tu", 14621 "description": "d", 14622 "billing_email": "be", 14623 "is_verified": true, 14624 "has_organization_projects": true, 14625 "has_repository_projects": true, 14626 "default_repository_permission": "drp", 14627 "members_can_create_repositories": true, 14628 "members_can_create_public_repositories": false, 14629 "members_can_create_private_repositories": true, 14630 "members_can_create_internal_repositories": true, 14631 "members_allowed_repository_creation_type": "marct", 14632 "members_can_create_pages": true, 14633 "members_can_create_public_pages": false, 14634 "members_can_create_private_pages": true 14635 }, 14636 "sender": { 14637 "login": "l", 14638 "id": 1, 14639 "node_id": "n", 14640 "avatar_url": "a", 14641 "url": "u", 14642 "events_url": "e", 14643 "repos_url": "r" 14644 }, 14645 "installation": { 14646 "id": 1, 14647 "node_id": "nid", 14648 "app_id": 1, 14649 "app_slug": "as", 14650 "target_id": 1, 14651 "account": { 14652 "login": "l", 14653 "id": 1, 14654 "avatar_url": "a", 14655 "gravatar_id": "g", 14656 "name": "n", 14657 "company": "c", 14658 "blog": "b", 14659 "location": "l", 14660 "email": "e", 14661 "hireable": true, 14662 "bio": "b", 14663 "twitter_username": "t", 14664 "public_repos": 1, 14665 "followers": 1, 14666 "following": 1, 14667 "created_at": ` + referenceTimeStr + `, 14668 "suspended_at": ` + referenceTimeStr + `, 14669 "url": "u" 14670 }, 14671 "access_tokens_url": "atu", 14672 "repositories_url": "ru", 14673 "html_url": "hu", 14674 "target_type": "tt", 14675 "single_file_name": "sfn", 14676 "repository_selection": "rs", 14677 "events": [ 14678 "e" 14679 ], 14680 "single_file_paths": [ 14681 "s" 14682 ], 14683 "permissions": { 14684 "actions": "a", 14685 "administration": "ad", 14686 "checks": "c", 14687 "contents": "co", 14688 "content_references": "cr", 14689 "deployments": "d", 14690 "environments": "e", 14691 "issues": "i", 14692 "metadata": "md", 14693 "members": "m", 14694 "organization_administration": "oa", 14695 "organization_hooks": "oh", 14696 "organization_plan": "op", 14697 "organization_pre_receive_hooks": "opr", 14698 "organization_projects": "op", 14699 "organization_secrets": "os", 14700 "organization_self_hosted_runners": "osh", 14701 "organization_user_blocking": "oub", 14702 "packages": "pkg", 14703 "pages": "pg", 14704 "pull_requests": "pr", 14705 "repository_hooks": "rh", 14706 "repository_projects": "rp", 14707 "repository_pre_receive_hooks": "rprh", 14708 "secrets": "s", 14709 "secret_scanning_alerts": "ssa", 14710 "security_events": "se", 14711 "single_file": "sf", 14712 "statuses": "s", 14713 "team_discussions": "td", 14714 "vulnerability_alerts": "va", 14715 "workflows": "w" 14716 }, 14717 "created_at": ` + referenceTimeStr + `, 14718 "updated_at": ` + referenceTimeStr + `, 14719 "has_multiple_single_files": false, 14720 "suspended_by": { 14721 "login": "l", 14722 "id": 1, 14723 "avatar_url": "a", 14724 "gravatar_id": "g", 14725 "name": "n", 14726 "company": "c", 14727 "blog": "b", 14728 "location": "l", 14729 "email": "e", 14730 "hireable": true, 14731 "bio": "b", 14732 "twitter_username": "t", 14733 "public_repos": 1, 14734 "followers": 1, 14735 "following": 1, 14736 "created_at": ` + referenceTimeStr + `, 14737 "suspended_at": ` + referenceTimeStr + `, 14738 "url": "u" 14739 }, 14740 "suspended_at": ` + referenceTimeStr + ` 14741 } 14742 }` 14743 14744 testJSONMarshal(t, u, want) 14745 } 14746 14747 func TestProjectV2Event_Marshal(t *testing.T) { 14748 testJSONMarshal(t, &ProjectV2Event{}, "{}") 14749 14750 u := &ProjectV2Event{ 14751 Action: String("a"), 14752 ProjectsV2: &ProjectsV2{ 14753 ID: Int64(1), 14754 NodeID: String("nid"), 14755 Owner: &User{ 14756 Login: String("l"), 14757 ID: Int64(1), 14758 NodeID: String("n"), 14759 URL: String("u"), 14760 ReposURL: String("r"), 14761 EventsURL: String("e"), 14762 AvatarURL: String("a"), 14763 }, 14764 Creator: &User{ 14765 Login: String("l"), 14766 ID: Int64(1), 14767 NodeID: String("n"), 14768 URL: String("u"), 14769 ReposURL: String("r"), 14770 EventsURL: String("e"), 14771 AvatarURL: String("a"), 14772 }, 14773 Title: String("t"), 14774 Description: String("d"), 14775 Public: Bool(true), 14776 ClosedAt: &Timestamp{referenceTime}, 14777 CreatedAt: &Timestamp{referenceTime}, 14778 UpdatedAt: &Timestamp{referenceTime}, 14779 DeletedAt: &Timestamp{referenceTime}, 14780 Number: Int(1), 14781 ShortDescription: String("sd"), 14782 DeletedBy: &User{ 14783 Login: String("l"), 14784 ID: Int64(1), 14785 NodeID: String("n"), 14786 URL: String("u"), 14787 ReposURL: String("r"), 14788 EventsURL: String("e"), 14789 AvatarURL: String("a"), 14790 }, 14791 }, 14792 Org: &Organization{ 14793 BillingEmail: String("be"), 14794 Blog: String("b"), 14795 Company: String("c"), 14796 Email: String("e"), 14797 TwitterUsername: String("tu"), 14798 Location: String("loc"), 14799 Name: String("n"), 14800 Description: String("d"), 14801 IsVerified: Bool(true), 14802 HasOrganizationProjects: Bool(true), 14803 HasRepositoryProjects: Bool(true), 14804 DefaultRepoPermission: String("drp"), 14805 MembersCanCreateRepos: Bool(true), 14806 MembersCanCreateInternalRepos: Bool(true), 14807 MembersCanCreatePrivateRepos: Bool(true), 14808 MembersCanCreatePublicRepos: Bool(false), 14809 MembersAllowedRepositoryCreationType: String("marct"), 14810 MembersCanCreatePages: Bool(true), 14811 MembersCanCreatePublicPages: Bool(false), 14812 MembersCanCreatePrivatePages: Bool(true), 14813 }, 14814 Sender: &User{ 14815 Login: String("l"), 14816 ID: Int64(1), 14817 NodeID: String("n"), 14818 URL: String("u"), 14819 ReposURL: String("r"), 14820 EventsURL: String("e"), 14821 AvatarURL: String("a"), 14822 }, 14823 Installation: &Installation{ 14824 ID: Int64(1), 14825 NodeID: String("nid"), 14826 AppID: Int64(1), 14827 AppSlug: String("as"), 14828 TargetID: Int64(1), 14829 Account: &User{ 14830 Login: String("l"), 14831 ID: Int64(1), 14832 URL: String("u"), 14833 AvatarURL: String("a"), 14834 GravatarID: String("g"), 14835 Name: String("n"), 14836 Company: String("c"), 14837 Blog: String("b"), 14838 Location: String("l"), 14839 Email: String("e"), 14840 Hireable: Bool(true), 14841 Bio: String("b"), 14842 TwitterUsername: String("t"), 14843 PublicRepos: Int(1), 14844 Followers: Int(1), 14845 Following: Int(1), 14846 CreatedAt: &Timestamp{referenceTime}, 14847 SuspendedAt: &Timestamp{referenceTime}, 14848 }, 14849 }, 14850 } 14851 14852 want := `{ 14853 "action": "a", 14854 "projects_v2": { 14855 "id": 1, 14856 "node_id": "nid", 14857 "owner": { 14858 "login": "l", 14859 "id": 1, 14860 "node_id": "n", 14861 "avatar_url": "a", 14862 "url": "u", 14863 "events_url": "e", 14864 "repos_url": "r" 14865 }, 14866 "creator": { 14867 "login": "l", 14868 "id": 1, 14869 "node_id": "n", 14870 "avatar_url": "a", 14871 "url": "u", 14872 "events_url": "e", 14873 "repos_url": "r" 14874 }, 14875 "title": "t", 14876 "description": "d", 14877 "public": true, 14878 "closed_at": ` + referenceTimeStr + `, 14879 "created_at": ` + referenceTimeStr + `, 14880 "updated_at": ` + referenceTimeStr + `, 14881 "deleted_at": ` + referenceTimeStr + `, 14882 "number": 1, 14883 "short_description": "sd", 14884 "deleted_by": { 14885 "login": "l", 14886 "id": 1, 14887 "node_id": "n", 14888 "avatar_url": "a", 14889 "url": "u", 14890 "events_url": "e", 14891 "repos_url": "r" 14892 } 14893 }, 14894 "organization": { 14895 "name": "n", 14896 "company": "c", 14897 "blog": "b", 14898 "location": "loc", 14899 "email": "e", 14900 "twitter_username": "tu", 14901 "description": "d", 14902 "billing_email": "be", 14903 "is_verified": true, 14904 "has_organization_projects": true, 14905 "has_repository_projects": true, 14906 "default_repository_permission": "drp", 14907 "members_can_create_repositories": true, 14908 "members_can_create_public_repositories": false, 14909 "members_can_create_private_repositories": true, 14910 "members_can_create_internal_repositories": true, 14911 "members_allowed_repository_creation_type": "marct", 14912 "members_can_create_pages": true, 14913 "members_can_create_public_pages": false, 14914 "members_can_create_private_pages": true 14915 }, 14916 "sender": { 14917 "login": "l", 14918 "id": 1, 14919 "node_id": "n", 14920 "avatar_url": "a", 14921 "url": "u", 14922 "events_url": "e", 14923 "repos_url": "r" 14924 }, 14925 "installation": { 14926 "id": 1, 14927 "node_id": "nid", 14928 "app_id": 1, 14929 "app_slug": "as", 14930 "target_id": 1, 14931 "account": { 14932 "login": "l", 14933 "id": 1, 14934 "avatar_url": "a", 14935 "gravatar_id": "g", 14936 "name": "n", 14937 "company": "c", 14938 "blog": "b", 14939 "location": "l", 14940 "email": "e", 14941 "hireable": true, 14942 "bio": "b", 14943 "twitter_username": "t", 14944 "public_repos": 1, 14945 "followers": 1, 14946 "following": 1, 14947 "created_at": ` + referenceTimeStr + `, 14948 "suspended_at": ` + referenceTimeStr + `, 14949 "url": "u" 14950 } 14951 } 14952 }` 14953 14954 testJSONMarshal(t, u, want) 14955 } 14956 14957 func TestProjectV2ItemEvent_Marshal(t *testing.T) { 14958 testJSONMarshal(t, &ProjectV2ItemEvent{}, "{}") 14959 14960 u := &ProjectV2ItemEvent{ 14961 Action: String("a"), 14962 Changes: &ProjectV2ItemChange{ 14963 ArchivedAt: &ArchivedAt{ 14964 From: &Timestamp{referenceTime}, 14965 To: &Timestamp{referenceTime}, 14966 }, 14967 }, 14968 ProjectV2Item: &ProjectV2Item{ 14969 ID: Int64(1), 14970 NodeID: String("nid"), 14971 ProjectNodeID: String("pnid"), 14972 ContentNodeID: String("cnid"), 14973 ContentType: String("ct"), 14974 Creator: &User{ 14975 Login: String("l"), 14976 ID: Int64(1), 14977 NodeID: String("n"), 14978 URL: String("u"), 14979 ReposURL: String("r"), 14980 EventsURL: String("e"), 14981 AvatarURL: String("a"), 14982 }, 14983 CreatedAt: &Timestamp{referenceTime}, 14984 UpdatedAt: &Timestamp{referenceTime}, 14985 ArchivedAt: &Timestamp{referenceTime}, 14986 }, 14987 Org: &Organization{ 14988 BillingEmail: String("be"), 14989 Blog: String("b"), 14990 Company: String("c"), 14991 Email: String("e"), 14992 TwitterUsername: String("tu"), 14993 Location: String("loc"), 14994 Name: String("n"), 14995 Description: String("d"), 14996 IsVerified: Bool(true), 14997 HasOrganizationProjects: Bool(true), 14998 HasRepositoryProjects: Bool(true), 14999 DefaultRepoPermission: String("drp"), 15000 MembersCanCreateRepos: Bool(true), 15001 MembersCanCreateInternalRepos: Bool(true), 15002 MembersCanCreatePrivateRepos: Bool(true), 15003 MembersCanCreatePublicRepos: Bool(false), 15004 MembersAllowedRepositoryCreationType: String("marct"), 15005 MembersCanCreatePages: Bool(true), 15006 MembersCanCreatePublicPages: Bool(false), 15007 MembersCanCreatePrivatePages: Bool(true), 15008 }, 15009 Sender: &User{ 15010 Login: String("l"), 15011 ID: Int64(1), 15012 NodeID: String("n"), 15013 URL: String("u"), 15014 ReposURL: String("r"), 15015 EventsURL: String("e"), 15016 AvatarURL: String("a"), 15017 }, 15018 Installation: &Installation{ 15019 ID: Int64(1), 15020 NodeID: String("nid"), 15021 AppID: Int64(1), 15022 AppSlug: String("as"), 15023 TargetID: Int64(1), 15024 Account: &User{ 15025 Login: String("l"), 15026 ID: Int64(1), 15027 URL: String("u"), 15028 AvatarURL: String("a"), 15029 GravatarID: String("g"), 15030 Name: String("n"), 15031 Company: String("c"), 15032 Blog: String("b"), 15033 Location: String("l"), 15034 Email: String("e"), 15035 Hireable: Bool(true), 15036 Bio: String("b"), 15037 TwitterUsername: String("t"), 15038 PublicRepos: Int(1), 15039 Followers: Int(1), 15040 Following: Int(1), 15041 CreatedAt: &Timestamp{referenceTime}, 15042 SuspendedAt: &Timestamp{referenceTime}, 15043 }, 15044 }, 15045 } 15046 15047 want := `{ 15048 "action": "a", 15049 "changes": { 15050 "archived_at": { 15051 "from": ` + referenceTimeStr + `, 15052 "to": ` + referenceTimeStr + ` 15053 } 15054 }, 15055 "projects_v2_item": { 15056 "id": 1, 15057 "node_id": "nid", 15058 "project_node_id": "pnid", 15059 "content_node_id": "cnid", 15060 "content_type": "ct", 15061 "creator": { 15062 "login": "l", 15063 "id": 1, 15064 "node_id": "n", 15065 "avatar_url": "a", 15066 "url": "u", 15067 "events_url": "e", 15068 "repos_url": "r" 15069 }, 15070 "created_at": ` + referenceTimeStr + `, 15071 "updated_at": ` + referenceTimeStr + `, 15072 "archived_at": ` + referenceTimeStr + ` 15073 }, 15074 "organization": { 15075 "name": "n", 15076 "company": "c", 15077 "blog": "b", 15078 "location": "loc", 15079 "email": "e", 15080 "twitter_username": "tu", 15081 "description": "d", 15082 "billing_email": "be", 15083 "is_verified": true, 15084 "has_organization_projects": true, 15085 "has_repository_projects": true, 15086 "default_repository_permission": "drp", 15087 "members_can_create_repositories": true, 15088 "members_can_create_public_repositories": false, 15089 "members_can_create_private_repositories": true, 15090 "members_can_create_internal_repositories": true, 15091 "members_allowed_repository_creation_type": "marct", 15092 "members_can_create_pages": true, 15093 "members_can_create_public_pages": false, 15094 "members_can_create_private_pages": true 15095 }, 15096 "sender": { 15097 "login": "l", 15098 "id": 1, 15099 "node_id": "n", 15100 "avatar_url": "a", 15101 "url": "u", 15102 "events_url": "e", 15103 "repos_url": "r" 15104 }, 15105 "installation": { 15106 "id": 1, 15107 "node_id": "nid", 15108 "app_id": 1, 15109 "app_slug": "as", 15110 "target_id": 1, 15111 "account": { 15112 "login": "l", 15113 "id": 1, 15114 "avatar_url": "a", 15115 "gravatar_id": "g", 15116 "name": "n", 15117 "company": "c", 15118 "blog": "b", 15119 "location": "l", 15120 "email": "e", 15121 "hireable": true, 15122 "bio": "b", 15123 "twitter_username": "t", 15124 "public_repos": 1, 15125 "followers": 1, 15126 "following": 1, 15127 "created_at": ` + referenceTimeStr + `, 15128 "suspended_at": ` + referenceTimeStr + `, 15129 "url": "u" 15130 } 15131 } 15132 }` 15133 15134 testJSONMarshal(t, u, want) 15135 } 15136 15137 func TestPullRequestEvent_Marshal(t *testing.T) { 15138 testJSONMarshal(t, &PullRequestEvent{}, "{}") 15139 15140 u := &PullRequestEvent{ 15141 Action: String("a"), 15142 Assignee: &User{ 15143 Login: String("l"), 15144 ID: Int64(1), 15145 NodeID: String("n"), 15146 URL: String("u"), 15147 ReposURL: String("r"), 15148 EventsURL: String("e"), 15149 AvatarURL: String("a"), 15150 }, 15151 Number: Int(1), 15152 PullRequest: &PullRequest{ID: Int64(1)}, 15153 Changes: &EditChange{ 15154 Title: &EditTitle{ 15155 From: String("TitleFrom"), 15156 }, 15157 Body: &EditBody{ 15158 From: String("BodyFrom"), 15159 }, 15160 Base: &EditBase{ 15161 Ref: &EditRef{ 15162 From: String("BaseRefFrom"), 15163 }, 15164 SHA: &EditSHA{ 15165 From: String("BaseSHAFrom"), 15166 }, 15167 }, 15168 }, 15169 RequestedReviewer: &User{ 15170 Login: String("l"), 15171 ID: Int64(1), 15172 NodeID: String("n"), 15173 URL: String("u"), 15174 ReposURL: String("r"), 15175 EventsURL: String("e"), 15176 AvatarURL: String("a"), 15177 }, 15178 RequestedTeam: &Team{ID: Int64(1)}, 15179 Label: &Label{ID: Int64(1)}, 15180 Before: String("before"), 15181 After: String("after"), 15182 Repo: &Repository{ 15183 ID: Int64(1), 15184 URL: String("s"), 15185 Name: String("n"), 15186 }, 15187 PerformedViaGithubApp: &App{ 15188 ID: Int64(1), 15189 NodeID: String("n"), 15190 Slug: String("s"), 15191 Name: String("n"), 15192 Description: String("d"), 15193 ExternalURL: String("e"), 15194 HTMLURL: String("h"), 15195 }, 15196 Organization: &Organization{ 15197 BillingEmail: String("be"), 15198 Blog: String("b"), 15199 Company: String("c"), 15200 Email: String("e"), 15201 TwitterUsername: String("tu"), 15202 Location: String("loc"), 15203 Name: String("n"), 15204 Description: String("d"), 15205 IsVerified: Bool(true), 15206 HasOrganizationProjects: Bool(true), 15207 HasRepositoryProjects: Bool(true), 15208 DefaultRepoPermission: String("drp"), 15209 MembersCanCreateRepos: Bool(true), 15210 MembersCanCreateInternalRepos: Bool(true), 15211 MembersCanCreatePrivateRepos: Bool(true), 15212 MembersCanCreatePublicRepos: Bool(false), 15213 MembersAllowedRepositoryCreationType: String("marct"), 15214 MembersCanCreatePages: Bool(true), 15215 MembersCanCreatePublicPages: Bool(false), 15216 MembersCanCreatePrivatePages: Bool(true), 15217 }, 15218 Sender: &User{ 15219 Login: String("l"), 15220 ID: Int64(1), 15221 NodeID: String("n"), 15222 URL: String("u"), 15223 ReposURL: String("r"), 15224 EventsURL: String("e"), 15225 AvatarURL: String("a"), 15226 }, 15227 Installation: &Installation{ 15228 ID: Int64(1), 15229 NodeID: String("nid"), 15230 AppID: Int64(1), 15231 AppSlug: String("as"), 15232 TargetID: Int64(1), 15233 Account: &User{ 15234 Login: String("l"), 15235 ID: Int64(1), 15236 URL: String("u"), 15237 AvatarURL: String("a"), 15238 GravatarID: String("g"), 15239 Name: String("n"), 15240 Company: String("c"), 15241 Blog: String("b"), 15242 Location: String("l"), 15243 Email: String("e"), 15244 Hireable: Bool(true), 15245 Bio: String("b"), 15246 TwitterUsername: String("t"), 15247 PublicRepos: Int(1), 15248 Followers: Int(1), 15249 Following: Int(1), 15250 CreatedAt: &Timestamp{referenceTime}, 15251 SuspendedAt: &Timestamp{referenceTime}, 15252 }, 15253 AccessTokensURL: String("atu"), 15254 RepositoriesURL: String("ru"), 15255 HTMLURL: String("hu"), 15256 TargetType: String("tt"), 15257 SingleFileName: String("sfn"), 15258 RepositorySelection: String("rs"), 15259 Events: []string{"e"}, 15260 SingleFilePaths: []string{"s"}, 15261 Permissions: &InstallationPermissions{ 15262 Actions: String("a"), 15263 Administration: String("ad"), 15264 Checks: String("c"), 15265 Contents: String("co"), 15266 ContentReferences: String("cr"), 15267 Deployments: String("d"), 15268 Environments: String("e"), 15269 Issues: String("i"), 15270 Metadata: String("md"), 15271 Members: String("m"), 15272 OrganizationAdministration: String("oa"), 15273 OrganizationHooks: String("oh"), 15274 OrganizationPlan: String("op"), 15275 OrganizationPreReceiveHooks: String("opr"), 15276 OrganizationProjects: String("op"), 15277 OrganizationSecrets: String("os"), 15278 OrganizationSelfHostedRunners: String("osh"), 15279 OrganizationUserBlocking: String("oub"), 15280 Packages: String("pkg"), 15281 Pages: String("pg"), 15282 PullRequests: String("pr"), 15283 RepositoryHooks: String("rh"), 15284 RepositoryProjects: String("rp"), 15285 RepositoryPreReceiveHooks: String("rprh"), 15286 Secrets: String("s"), 15287 SecretScanningAlerts: String("ssa"), 15288 SecurityEvents: String("se"), 15289 SingleFile: String("sf"), 15290 Statuses: String("s"), 15291 TeamDiscussions: String("td"), 15292 VulnerabilityAlerts: String("va"), 15293 Workflows: String("w"), 15294 }, 15295 CreatedAt: &Timestamp{referenceTime}, 15296 UpdatedAt: &Timestamp{referenceTime}, 15297 HasMultipleSingleFiles: Bool(false), 15298 SuspendedBy: &User{ 15299 Login: String("l"), 15300 ID: Int64(1), 15301 URL: String("u"), 15302 AvatarURL: String("a"), 15303 GravatarID: String("g"), 15304 Name: String("n"), 15305 Company: String("c"), 15306 Blog: String("b"), 15307 Location: String("l"), 15308 Email: String("e"), 15309 Hireable: Bool(true), 15310 Bio: String("b"), 15311 TwitterUsername: String("t"), 15312 PublicRepos: Int(1), 15313 Followers: Int(1), 15314 Following: Int(1), 15315 CreatedAt: &Timestamp{referenceTime}, 15316 SuspendedAt: &Timestamp{referenceTime}, 15317 }, 15318 SuspendedAt: &Timestamp{referenceTime}, 15319 }, 15320 } 15321 15322 want := `{ 15323 "action": "a", 15324 "assignee": { 15325 "login": "l", 15326 "id": 1, 15327 "node_id": "n", 15328 "avatar_url": "a", 15329 "url": "u", 15330 "events_url": "e", 15331 "repos_url": "r" 15332 }, 15333 "number": 1, 15334 "pull_request": { 15335 "id": 1 15336 }, 15337 "changes": { 15338 "title": { 15339 "from": "TitleFrom" 15340 }, 15341 "body": { 15342 "from": "BodyFrom" 15343 }, 15344 "base": { 15345 "ref": { 15346 "from": "BaseRefFrom" 15347 }, 15348 "sha": { 15349 "from": "BaseSHAFrom" 15350 } 15351 } 15352 }, 15353 "requested_reviewer": { 15354 "login": "l", 15355 "id": 1, 15356 "node_id": "n", 15357 "avatar_url": "a", 15358 "url": "u", 15359 "events_url": "e", 15360 "repos_url": "r" 15361 }, 15362 "requested_team": { 15363 "id": 1 15364 }, 15365 "label": { 15366 "id": 1 15367 }, 15368 "before": "before", 15369 "after": "after", 15370 "repository": { 15371 "id": 1, 15372 "name": "n", 15373 "url": "s" 15374 }, 15375 "performed_via_github_app": { 15376 "id": 1, 15377 "node_id": "n", 15378 "slug": "s", 15379 "name": "n", 15380 "description": "d", 15381 "external_url": "e", 15382 "html_url": "h" 15383 }, 15384 "organization": { 15385 "name": "n", 15386 "company": "c", 15387 "blog": "b", 15388 "location": "loc", 15389 "email": "e", 15390 "twitter_username": "tu", 15391 "description": "d", 15392 "billing_email": "be", 15393 "is_verified": true, 15394 "has_organization_projects": true, 15395 "has_repository_projects": true, 15396 "default_repository_permission": "drp", 15397 "members_can_create_repositories": true, 15398 "members_can_create_public_repositories": false, 15399 "members_can_create_private_repositories": true, 15400 "members_can_create_internal_repositories": true, 15401 "members_allowed_repository_creation_type": "marct", 15402 "members_can_create_pages": true, 15403 "members_can_create_public_pages": false, 15404 "members_can_create_private_pages": true 15405 }, 15406 "sender": { 15407 "login": "l", 15408 "id": 1, 15409 "node_id": "n", 15410 "avatar_url": "a", 15411 "url": "u", 15412 "events_url": "e", 15413 "repos_url": "r" 15414 }, 15415 "installation": { 15416 "id": 1, 15417 "node_id": "nid", 15418 "app_id": 1, 15419 "app_slug": "as", 15420 "target_id": 1, 15421 "account": { 15422 "login": "l", 15423 "id": 1, 15424 "avatar_url": "a", 15425 "gravatar_id": "g", 15426 "name": "n", 15427 "company": "c", 15428 "blog": "b", 15429 "location": "l", 15430 "email": "e", 15431 "hireable": true, 15432 "bio": "b", 15433 "twitter_username": "t", 15434 "public_repos": 1, 15435 "followers": 1, 15436 "following": 1, 15437 "created_at": ` + referenceTimeStr + `, 15438 "suspended_at": ` + referenceTimeStr + `, 15439 "url": "u" 15440 }, 15441 "access_tokens_url": "atu", 15442 "repositories_url": "ru", 15443 "html_url": "hu", 15444 "target_type": "tt", 15445 "single_file_name": "sfn", 15446 "repository_selection": "rs", 15447 "events": [ 15448 "e" 15449 ], 15450 "single_file_paths": [ 15451 "s" 15452 ], 15453 "permissions": { 15454 "actions": "a", 15455 "administration": "ad", 15456 "checks": "c", 15457 "contents": "co", 15458 "content_references": "cr", 15459 "deployments": "d", 15460 "environments": "e", 15461 "issues": "i", 15462 "metadata": "md", 15463 "members": "m", 15464 "organization_administration": "oa", 15465 "organization_hooks": "oh", 15466 "organization_plan": "op", 15467 "organization_pre_receive_hooks": "opr", 15468 "organization_projects": "op", 15469 "organization_secrets": "os", 15470 "organization_self_hosted_runners": "osh", 15471 "organization_user_blocking": "oub", 15472 "packages": "pkg", 15473 "pages": "pg", 15474 "pull_requests": "pr", 15475 "repository_hooks": "rh", 15476 "repository_projects": "rp", 15477 "repository_pre_receive_hooks": "rprh", 15478 "secrets": "s", 15479 "secret_scanning_alerts": "ssa", 15480 "security_events": "se", 15481 "single_file": "sf", 15482 "statuses": "s", 15483 "team_discussions": "td", 15484 "vulnerability_alerts": "va", 15485 "workflows": "w" 15486 }, 15487 "created_at": ` + referenceTimeStr + `, 15488 "updated_at": ` + referenceTimeStr + `, 15489 "has_multiple_single_files": false, 15490 "suspended_by": { 15491 "login": "l", 15492 "id": 1, 15493 "avatar_url": "a", 15494 "gravatar_id": "g", 15495 "name": "n", 15496 "company": "c", 15497 "blog": "b", 15498 "location": "l", 15499 "email": "e", 15500 "hireable": true, 15501 "bio": "b", 15502 "twitter_username": "t", 15503 "public_repos": 1, 15504 "followers": 1, 15505 "following": 1, 15506 "created_at": ` + referenceTimeStr + `, 15507 "suspended_at": ` + referenceTimeStr + `, 15508 "url": "u" 15509 }, 15510 "suspended_at": ` + referenceTimeStr + ` 15511 } 15512 }` 15513 15514 testJSONMarshal(t, u, want) 15515 } 15516 15517 func TestPullRequestReviewCommentEvent_Marshal(t *testing.T) { 15518 testJSONMarshal(t, &PullRequestReviewCommentEvent{}, "{}") 15519 15520 u := &PullRequestReviewCommentEvent{ 15521 Action: String("a"), 15522 PullRequest: &PullRequest{ID: Int64(1)}, 15523 Comment: &PullRequestComment{ID: Int64(1)}, 15524 Changes: &EditChange{ 15525 Title: &EditTitle{ 15526 From: String("TitleFrom"), 15527 }, 15528 Body: &EditBody{ 15529 From: String("BodyFrom"), 15530 }, 15531 Base: &EditBase{ 15532 Ref: &EditRef{ 15533 From: String("BaseRefFrom"), 15534 }, 15535 SHA: &EditSHA{ 15536 From: String("BaseSHAFrom"), 15537 }, 15538 }, 15539 }, 15540 Repo: &Repository{ 15541 ID: Int64(1), 15542 URL: String("s"), 15543 Name: String("n"), 15544 }, 15545 Sender: &User{ 15546 Login: String("l"), 15547 ID: Int64(1), 15548 NodeID: String("n"), 15549 URL: String("u"), 15550 ReposURL: String("r"), 15551 EventsURL: String("e"), 15552 AvatarURL: String("a"), 15553 }, 15554 Installation: &Installation{ 15555 ID: Int64(1), 15556 NodeID: String("nid"), 15557 AppID: Int64(1), 15558 AppSlug: String("as"), 15559 TargetID: Int64(1), 15560 Account: &User{ 15561 Login: String("l"), 15562 ID: Int64(1), 15563 URL: String("u"), 15564 AvatarURL: String("a"), 15565 GravatarID: String("g"), 15566 Name: String("n"), 15567 Company: String("c"), 15568 Blog: String("b"), 15569 Location: String("l"), 15570 Email: String("e"), 15571 Hireable: Bool(true), 15572 Bio: String("b"), 15573 TwitterUsername: String("t"), 15574 PublicRepos: Int(1), 15575 Followers: Int(1), 15576 Following: Int(1), 15577 CreatedAt: &Timestamp{referenceTime}, 15578 SuspendedAt: &Timestamp{referenceTime}, 15579 }, 15580 AccessTokensURL: String("atu"), 15581 RepositoriesURL: String("ru"), 15582 HTMLURL: String("hu"), 15583 TargetType: String("tt"), 15584 SingleFileName: String("sfn"), 15585 RepositorySelection: String("rs"), 15586 Events: []string{"e"}, 15587 SingleFilePaths: []string{"s"}, 15588 Permissions: &InstallationPermissions{ 15589 Actions: String("a"), 15590 Administration: String("ad"), 15591 Checks: String("c"), 15592 Contents: String("co"), 15593 ContentReferences: String("cr"), 15594 Deployments: String("d"), 15595 Environments: String("e"), 15596 Issues: String("i"), 15597 Metadata: String("md"), 15598 Members: String("m"), 15599 OrganizationAdministration: String("oa"), 15600 OrganizationHooks: String("oh"), 15601 OrganizationPlan: String("op"), 15602 OrganizationPreReceiveHooks: String("opr"), 15603 OrganizationProjects: String("op"), 15604 OrganizationSecrets: String("os"), 15605 OrganizationSelfHostedRunners: String("osh"), 15606 OrganizationUserBlocking: String("oub"), 15607 Packages: String("pkg"), 15608 Pages: String("pg"), 15609 PullRequests: String("pr"), 15610 RepositoryHooks: String("rh"), 15611 RepositoryProjects: String("rp"), 15612 RepositoryPreReceiveHooks: String("rprh"), 15613 Secrets: String("s"), 15614 SecretScanningAlerts: String("ssa"), 15615 SecurityEvents: String("se"), 15616 SingleFile: String("sf"), 15617 Statuses: String("s"), 15618 TeamDiscussions: String("td"), 15619 VulnerabilityAlerts: String("va"), 15620 Workflows: String("w"), 15621 }, 15622 CreatedAt: &Timestamp{referenceTime}, 15623 UpdatedAt: &Timestamp{referenceTime}, 15624 HasMultipleSingleFiles: Bool(false), 15625 SuspendedBy: &User{ 15626 Login: String("l"), 15627 ID: Int64(1), 15628 URL: String("u"), 15629 AvatarURL: String("a"), 15630 GravatarID: String("g"), 15631 Name: String("n"), 15632 Company: String("c"), 15633 Blog: String("b"), 15634 Location: String("l"), 15635 Email: String("e"), 15636 Hireable: Bool(true), 15637 Bio: String("b"), 15638 TwitterUsername: String("t"), 15639 PublicRepos: Int(1), 15640 Followers: Int(1), 15641 Following: Int(1), 15642 CreatedAt: &Timestamp{referenceTime}, 15643 SuspendedAt: &Timestamp{referenceTime}, 15644 }, 15645 SuspendedAt: &Timestamp{referenceTime}, 15646 }, 15647 } 15648 15649 want := `{ 15650 "action": "a", 15651 "pull_request": { 15652 "id": 1 15653 }, 15654 "comment": { 15655 "id": 1 15656 }, 15657 "changes": { 15658 "title": { 15659 "from": "TitleFrom" 15660 }, 15661 "body": { 15662 "from": "BodyFrom" 15663 }, 15664 "base": { 15665 "ref": { 15666 "from": "BaseRefFrom" 15667 }, 15668 "sha": { 15669 "from": "BaseSHAFrom" 15670 } 15671 } 15672 }, 15673 "repository": { 15674 "id": 1, 15675 "name": "n", 15676 "url": "s" 15677 }, 15678 "sender": { 15679 "login": "l", 15680 "id": 1, 15681 "node_id": "n", 15682 "avatar_url": "a", 15683 "url": "u", 15684 "events_url": "e", 15685 "repos_url": "r" 15686 }, 15687 "installation": { 15688 "id": 1, 15689 "node_id": "nid", 15690 "app_id": 1, 15691 "app_slug": "as", 15692 "target_id": 1, 15693 "account": { 15694 "login": "l", 15695 "id": 1, 15696 "avatar_url": "a", 15697 "gravatar_id": "g", 15698 "name": "n", 15699 "company": "c", 15700 "blog": "b", 15701 "location": "l", 15702 "email": "e", 15703 "hireable": true, 15704 "bio": "b", 15705 "twitter_username": "t", 15706 "public_repos": 1, 15707 "followers": 1, 15708 "following": 1, 15709 "created_at": ` + referenceTimeStr + `, 15710 "suspended_at": ` + referenceTimeStr + `, 15711 "url": "u" 15712 }, 15713 "access_tokens_url": "atu", 15714 "repositories_url": "ru", 15715 "html_url": "hu", 15716 "target_type": "tt", 15717 "single_file_name": "sfn", 15718 "repository_selection": "rs", 15719 "events": [ 15720 "e" 15721 ], 15722 "single_file_paths": [ 15723 "s" 15724 ], 15725 "permissions": { 15726 "actions": "a", 15727 "administration": "ad", 15728 "checks": "c", 15729 "contents": "co", 15730 "content_references": "cr", 15731 "deployments": "d", 15732 "environments": "e", 15733 "issues": "i", 15734 "metadata": "md", 15735 "members": "m", 15736 "organization_administration": "oa", 15737 "organization_hooks": "oh", 15738 "organization_plan": "op", 15739 "organization_pre_receive_hooks": "opr", 15740 "organization_projects": "op", 15741 "organization_secrets": "os", 15742 "organization_self_hosted_runners": "osh", 15743 "organization_user_blocking": "oub", 15744 "packages": "pkg", 15745 "pages": "pg", 15746 "pull_requests": "pr", 15747 "repository_hooks": "rh", 15748 "repository_projects": "rp", 15749 "repository_pre_receive_hooks": "rprh", 15750 "secrets": "s", 15751 "secret_scanning_alerts": "ssa", 15752 "security_events": "se", 15753 "single_file": "sf", 15754 "statuses": "s", 15755 "team_discussions": "td", 15756 "vulnerability_alerts": "va", 15757 "workflows": "w" 15758 }, 15759 "created_at": ` + referenceTimeStr + `, 15760 "updated_at": ` + referenceTimeStr + `, 15761 "has_multiple_single_files": false, 15762 "suspended_by": { 15763 "login": "l", 15764 "id": 1, 15765 "avatar_url": "a", 15766 "gravatar_id": "g", 15767 "name": "n", 15768 "company": "c", 15769 "blog": "b", 15770 "location": "l", 15771 "email": "e", 15772 "hireable": true, 15773 "bio": "b", 15774 "twitter_username": "t", 15775 "public_repos": 1, 15776 "followers": 1, 15777 "following": 1, 15778 "created_at": ` + referenceTimeStr + `, 15779 "suspended_at": ` + referenceTimeStr + `, 15780 "url": "u" 15781 }, 15782 "suspended_at": ` + referenceTimeStr + ` 15783 } 15784 }` 15785 15786 testJSONMarshal(t, u, want) 15787 } 15788 15789 func TestPullRequestReviewThreadEvent_Marshal(t *testing.T) { 15790 testJSONMarshal(t, &PullRequestReviewThreadEvent{}, "{}") 15791 15792 u := &PullRequestReviewThreadEvent{ 15793 Action: String("a"), 15794 PullRequest: &PullRequest{ID: Int64(1)}, 15795 Thread: &PullRequestThread{ 15796 Comments: []*PullRequestComment{{ID: Int64(1)}, {ID: Int64(2)}}, 15797 }, 15798 Repo: &Repository{ 15799 ID: Int64(1), 15800 URL: String("s"), 15801 Name: String("n"), 15802 }, 15803 Sender: &User{ 15804 Login: String("l"), 15805 ID: Int64(1), 15806 NodeID: String("n"), 15807 URL: String("u"), 15808 ReposURL: String("r"), 15809 EventsURL: String("e"), 15810 AvatarURL: String("a"), 15811 }, 15812 Installation: &Installation{ 15813 ID: Int64(1), 15814 NodeID: String("nid"), 15815 AppID: Int64(1), 15816 AppSlug: String("as"), 15817 TargetID: Int64(1), 15818 Account: &User{ 15819 Login: String("l"), 15820 ID: Int64(1), 15821 URL: String("u"), 15822 AvatarURL: String("a"), 15823 GravatarID: String("g"), 15824 Name: String("n"), 15825 Company: String("c"), 15826 Blog: String("b"), 15827 Location: String("l"), 15828 Email: String("e"), 15829 Hireable: Bool(true), 15830 Bio: String("b"), 15831 TwitterUsername: String("t"), 15832 PublicRepos: Int(1), 15833 Followers: Int(1), 15834 Following: Int(1), 15835 CreatedAt: &Timestamp{referenceTime}, 15836 SuspendedAt: &Timestamp{referenceTime}, 15837 }, 15838 AccessTokensURL: String("atu"), 15839 RepositoriesURL: String("ru"), 15840 HTMLURL: String("hu"), 15841 TargetType: String("tt"), 15842 SingleFileName: String("sfn"), 15843 RepositorySelection: String("rs"), 15844 Events: []string{"e"}, 15845 SingleFilePaths: []string{"s"}, 15846 Permissions: &InstallationPermissions{ 15847 Actions: String("a"), 15848 Administration: String("ad"), 15849 Checks: String("c"), 15850 Contents: String("co"), 15851 ContentReferences: String("cr"), 15852 Deployments: String("d"), 15853 Environments: String("e"), 15854 Issues: String("i"), 15855 Metadata: String("md"), 15856 Members: String("m"), 15857 OrganizationAdministration: String("oa"), 15858 OrganizationHooks: String("oh"), 15859 OrganizationPlan: String("op"), 15860 OrganizationPreReceiveHooks: String("opr"), 15861 OrganizationProjects: String("op"), 15862 OrganizationSecrets: String("os"), 15863 OrganizationSelfHostedRunners: String("osh"), 15864 OrganizationUserBlocking: String("oub"), 15865 Packages: String("pkg"), 15866 Pages: String("pg"), 15867 PullRequests: String("pr"), 15868 RepositoryHooks: String("rh"), 15869 RepositoryProjects: String("rp"), 15870 RepositoryPreReceiveHooks: String("rprh"), 15871 Secrets: String("s"), 15872 SecretScanningAlerts: String("ssa"), 15873 SecurityEvents: String("se"), 15874 SingleFile: String("sf"), 15875 Statuses: String("s"), 15876 TeamDiscussions: String("td"), 15877 VulnerabilityAlerts: String("va"), 15878 Workflows: String("w"), 15879 }, 15880 CreatedAt: &Timestamp{referenceTime}, 15881 UpdatedAt: &Timestamp{referenceTime}, 15882 HasMultipleSingleFiles: Bool(false), 15883 SuspendedBy: &User{ 15884 Login: String("l"), 15885 ID: Int64(1), 15886 URL: String("u"), 15887 AvatarURL: String("a"), 15888 GravatarID: String("g"), 15889 Name: String("n"), 15890 Company: String("c"), 15891 Blog: String("b"), 15892 Location: String("l"), 15893 Email: String("e"), 15894 Hireable: Bool(true), 15895 Bio: String("b"), 15896 TwitterUsername: String("t"), 15897 PublicRepos: Int(1), 15898 Followers: Int(1), 15899 Following: Int(1), 15900 CreatedAt: &Timestamp{referenceTime}, 15901 SuspendedAt: &Timestamp{referenceTime}, 15902 }, 15903 SuspendedAt: &Timestamp{referenceTime}, 15904 }, 15905 } 15906 15907 want := `{ 15908 "action": "a", 15909 "pull_request": { 15910 "id": 1 15911 }, 15912 "thread": { 15913 "comments": [ 15914 { 15915 "id": 1 15916 }, 15917 { 15918 "id": 2 15919 } 15920 ] 15921 }, 15922 "repository": { 15923 "id": 1, 15924 "name": "n", 15925 "url": "s" 15926 }, 15927 "sender": { 15928 "login": "l", 15929 "id": 1, 15930 "node_id": "n", 15931 "avatar_url": "a", 15932 "url": "u", 15933 "events_url": "e", 15934 "repos_url": "r" 15935 }, 15936 "installation": { 15937 "id": 1, 15938 "node_id": "nid", 15939 "app_id": 1, 15940 "app_slug": "as", 15941 "target_id": 1, 15942 "account": { 15943 "login": "l", 15944 "id": 1, 15945 "avatar_url": "a", 15946 "gravatar_id": "g", 15947 "name": "n", 15948 "company": "c", 15949 "blog": "b", 15950 "location": "l", 15951 "email": "e", 15952 "hireable": true, 15953 "bio": "b", 15954 "twitter_username": "t", 15955 "public_repos": 1, 15956 "followers": 1, 15957 "following": 1, 15958 "created_at": ` + referenceTimeStr + `, 15959 "suspended_at": ` + referenceTimeStr + `, 15960 "url": "u" 15961 }, 15962 "access_tokens_url": "atu", 15963 "repositories_url": "ru", 15964 "html_url": "hu", 15965 "target_type": "tt", 15966 "single_file_name": "sfn", 15967 "repository_selection": "rs", 15968 "events": [ 15969 "e" 15970 ], 15971 "single_file_paths": [ 15972 "s" 15973 ], 15974 "permissions": { 15975 "actions": "a", 15976 "administration": "ad", 15977 "checks": "c", 15978 "contents": "co", 15979 "content_references": "cr", 15980 "deployments": "d", 15981 "environments": "e", 15982 "issues": "i", 15983 "metadata": "md", 15984 "members": "m", 15985 "organization_administration": "oa", 15986 "organization_hooks": "oh", 15987 "organization_plan": "op", 15988 "organization_pre_receive_hooks": "opr", 15989 "organization_projects": "op", 15990 "organization_secrets": "os", 15991 "organization_self_hosted_runners": "osh", 15992 "organization_user_blocking": "oub", 15993 "packages": "pkg", 15994 "pages": "pg", 15995 "pull_requests": "pr", 15996 "repository_hooks": "rh", 15997 "repository_projects": "rp", 15998 "repository_pre_receive_hooks": "rprh", 15999 "secrets": "s", 16000 "secret_scanning_alerts": "ssa", 16001 "security_events": "se", 16002 "single_file": "sf", 16003 "statuses": "s", 16004 "team_discussions": "td", 16005 "vulnerability_alerts": "va", 16006 "workflows": "w" 16007 }, 16008 "created_at": ` + referenceTimeStr + `, 16009 "updated_at": ` + referenceTimeStr + `, 16010 "has_multiple_single_files": false, 16011 "suspended_by": { 16012 "login": "l", 16013 "id": 1, 16014 "avatar_url": "a", 16015 "gravatar_id": "g", 16016 "name": "n", 16017 "company": "c", 16018 "blog": "b", 16019 "location": "l", 16020 "email": "e", 16021 "hireable": true, 16022 "bio": "b", 16023 "twitter_username": "t", 16024 "public_repos": 1, 16025 "followers": 1, 16026 "following": 1, 16027 "created_at": ` + referenceTimeStr + `, 16028 "suspended_at": ` + referenceTimeStr + `, 16029 "url": "u" 16030 }, 16031 "suspended_at": ` + referenceTimeStr + ` 16032 } 16033 }` 16034 16035 testJSONMarshal(t, u, want) 16036 } 16037 16038 func TestPullRequestTargetEvent_Marshal(t *testing.T) { 16039 testJSONMarshal(t, &PullRequestTargetEvent{}, "{}") 16040 16041 u := &PullRequestTargetEvent{ 16042 Action: String("a"), 16043 Assignee: &User{ 16044 Login: String("l"), 16045 ID: Int64(1), 16046 NodeID: String("n"), 16047 URL: String("u"), 16048 ReposURL: String("r"), 16049 EventsURL: String("e"), 16050 AvatarURL: String("a"), 16051 }, 16052 Number: Int(1), 16053 PullRequest: &PullRequest{ID: Int64(1)}, 16054 Changes: &EditChange{ 16055 Title: &EditTitle{ 16056 From: String("TitleFrom"), 16057 }, 16058 Body: &EditBody{ 16059 From: String("BodyFrom"), 16060 }, 16061 Base: &EditBase{ 16062 Ref: &EditRef{ 16063 From: String("BaseRefFrom"), 16064 }, 16065 SHA: &EditSHA{ 16066 From: String("BaseSHAFrom"), 16067 }, 16068 }, 16069 }, 16070 RequestedReviewer: &User{ 16071 Login: String("l"), 16072 ID: Int64(1), 16073 NodeID: String("n"), 16074 URL: String("u"), 16075 ReposURL: String("r"), 16076 EventsURL: String("e"), 16077 AvatarURL: String("a"), 16078 }, 16079 RequestedTeam: &Team{ID: Int64(1)}, 16080 Label: &Label{ID: Int64(1)}, 16081 Before: String("before"), 16082 After: String("after"), 16083 Repo: &Repository{ 16084 ID: Int64(1), 16085 URL: String("s"), 16086 Name: String("n"), 16087 }, 16088 PerformedViaGithubApp: &App{ 16089 ID: Int64(1), 16090 NodeID: String("n"), 16091 Slug: String("s"), 16092 Name: String("n"), 16093 Description: String("d"), 16094 ExternalURL: String("e"), 16095 HTMLURL: String("h"), 16096 }, 16097 Organization: &Organization{ 16098 BillingEmail: String("be"), 16099 Blog: String("b"), 16100 Company: String("c"), 16101 Email: String("e"), 16102 TwitterUsername: String("tu"), 16103 Location: String("loc"), 16104 Name: String("n"), 16105 Description: String("d"), 16106 IsVerified: Bool(true), 16107 HasOrganizationProjects: Bool(true), 16108 HasRepositoryProjects: Bool(true), 16109 DefaultRepoPermission: String("drp"), 16110 MembersCanCreateRepos: Bool(true), 16111 MembersCanCreateInternalRepos: Bool(true), 16112 MembersCanCreatePrivateRepos: Bool(true), 16113 MembersCanCreatePublicRepos: Bool(false), 16114 MembersAllowedRepositoryCreationType: String("marct"), 16115 MembersCanCreatePages: Bool(true), 16116 MembersCanCreatePublicPages: Bool(false), 16117 MembersCanCreatePrivatePages: Bool(true), 16118 }, 16119 Sender: &User{ 16120 Login: String("l"), 16121 ID: Int64(1), 16122 NodeID: String("n"), 16123 URL: String("u"), 16124 ReposURL: String("r"), 16125 EventsURL: String("e"), 16126 AvatarURL: String("a"), 16127 }, 16128 Installation: &Installation{ 16129 ID: Int64(1), 16130 NodeID: String("nid"), 16131 AppID: Int64(1), 16132 AppSlug: String("as"), 16133 TargetID: Int64(1), 16134 Account: &User{ 16135 Login: String("l"), 16136 ID: Int64(1), 16137 URL: String("u"), 16138 AvatarURL: String("a"), 16139 GravatarID: String("g"), 16140 Name: String("n"), 16141 Company: String("c"), 16142 Blog: String("b"), 16143 Location: String("l"), 16144 Email: String("e"), 16145 Hireable: Bool(true), 16146 Bio: String("b"), 16147 TwitterUsername: String("t"), 16148 PublicRepos: Int(1), 16149 Followers: Int(1), 16150 Following: Int(1), 16151 CreatedAt: &Timestamp{referenceTime}, 16152 SuspendedAt: &Timestamp{referenceTime}, 16153 }, 16154 AccessTokensURL: String("atu"), 16155 RepositoriesURL: String("ru"), 16156 HTMLURL: String("hu"), 16157 TargetType: String("tt"), 16158 SingleFileName: String("sfn"), 16159 RepositorySelection: String("rs"), 16160 Events: []string{"e"}, 16161 SingleFilePaths: []string{"s"}, 16162 Permissions: &InstallationPermissions{ 16163 Actions: String("a"), 16164 Administration: String("ad"), 16165 Checks: String("c"), 16166 Contents: String("co"), 16167 ContentReferences: String("cr"), 16168 Deployments: String("d"), 16169 Environments: String("e"), 16170 Issues: String("i"), 16171 Metadata: String("md"), 16172 Members: String("m"), 16173 OrganizationAdministration: String("oa"), 16174 OrganizationHooks: String("oh"), 16175 OrganizationPlan: String("op"), 16176 OrganizationPreReceiveHooks: String("opr"), 16177 OrganizationProjects: String("op"), 16178 OrganizationSecrets: String("os"), 16179 OrganizationSelfHostedRunners: String("osh"), 16180 OrganizationUserBlocking: String("oub"), 16181 Packages: String("pkg"), 16182 Pages: String("pg"), 16183 PullRequests: String("pr"), 16184 RepositoryHooks: String("rh"), 16185 RepositoryProjects: String("rp"), 16186 RepositoryPreReceiveHooks: String("rprh"), 16187 Secrets: String("s"), 16188 SecretScanningAlerts: String("ssa"), 16189 SecurityEvents: String("se"), 16190 SingleFile: String("sf"), 16191 Statuses: String("s"), 16192 TeamDiscussions: String("td"), 16193 VulnerabilityAlerts: String("va"), 16194 Workflows: String("w"), 16195 }, 16196 CreatedAt: &Timestamp{referenceTime}, 16197 UpdatedAt: &Timestamp{referenceTime}, 16198 HasMultipleSingleFiles: Bool(false), 16199 SuspendedBy: &User{ 16200 Login: String("l"), 16201 ID: Int64(1), 16202 URL: String("u"), 16203 AvatarURL: String("a"), 16204 GravatarID: String("g"), 16205 Name: String("n"), 16206 Company: String("c"), 16207 Blog: String("b"), 16208 Location: String("l"), 16209 Email: String("e"), 16210 Hireable: Bool(true), 16211 Bio: String("b"), 16212 TwitterUsername: String("t"), 16213 PublicRepos: Int(1), 16214 Followers: Int(1), 16215 Following: Int(1), 16216 CreatedAt: &Timestamp{referenceTime}, 16217 SuspendedAt: &Timestamp{referenceTime}, 16218 }, 16219 SuspendedAt: &Timestamp{referenceTime}, 16220 }, 16221 } 16222 16223 want := `{ 16224 "action": "a", 16225 "assignee": { 16226 "login": "l", 16227 "id": 1, 16228 "node_id": "n", 16229 "avatar_url": "a", 16230 "url": "u", 16231 "events_url": "e", 16232 "repos_url": "r" 16233 }, 16234 "number": 1, 16235 "pull_request": { 16236 "id": 1 16237 }, 16238 "changes": { 16239 "title": { 16240 "from": "TitleFrom" 16241 }, 16242 "body": { 16243 "from": "BodyFrom" 16244 }, 16245 "base": { 16246 "ref": { 16247 "from": "BaseRefFrom" 16248 }, 16249 "sha": { 16250 "from": "BaseSHAFrom" 16251 } 16252 } 16253 }, 16254 "requested_reviewer": { 16255 "login": "l", 16256 "id": 1, 16257 "node_id": "n", 16258 "avatar_url": "a", 16259 "url": "u", 16260 "events_url": "e", 16261 "repos_url": "r" 16262 }, 16263 "requested_team": { 16264 "id": 1 16265 }, 16266 "label": { 16267 "id": 1 16268 }, 16269 "before": "before", 16270 "after": "after", 16271 "repository": { 16272 "id": 1, 16273 "name": "n", 16274 "url": "s" 16275 }, 16276 "performed_via_github_app": { 16277 "id": 1, 16278 "node_id": "n", 16279 "slug": "s", 16280 "name": "n", 16281 "description": "d", 16282 "external_url": "e", 16283 "html_url": "h" 16284 }, 16285 "organization": { 16286 "name": "n", 16287 "company": "c", 16288 "blog": "b", 16289 "location": "loc", 16290 "email": "e", 16291 "twitter_username": "tu", 16292 "description": "d", 16293 "billing_email": "be", 16294 "is_verified": true, 16295 "has_organization_projects": true, 16296 "has_repository_projects": true, 16297 "default_repository_permission": "drp", 16298 "members_can_create_repositories": true, 16299 "members_can_create_public_repositories": false, 16300 "members_can_create_private_repositories": true, 16301 "members_can_create_internal_repositories": true, 16302 "members_allowed_repository_creation_type": "marct", 16303 "members_can_create_pages": true, 16304 "members_can_create_public_pages": false, 16305 "members_can_create_private_pages": true 16306 }, 16307 "sender": { 16308 "login": "l", 16309 "id": 1, 16310 "node_id": "n", 16311 "avatar_url": "a", 16312 "url": "u", 16313 "events_url": "e", 16314 "repos_url": "r" 16315 }, 16316 "installation": { 16317 "id": 1, 16318 "node_id": "nid", 16319 "app_id": 1, 16320 "app_slug": "as", 16321 "target_id": 1, 16322 "account": { 16323 "login": "l", 16324 "id": 1, 16325 "avatar_url": "a", 16326 "gravatar_id": "g", 16327 "name": "n", 16328 "company": "c", 16329 "blog": "b", 16330 "location": "l", 16331 "email": "e", 16332 "hireable": true, 16333 "bio": "b", 16334 "twitter_username": "t", 16335 "public_repos": 1, 16336 "followers": 1, 16337 "following": 1, 16338 "created_at": ` + referenceTimeStr + `, 16339 "suspended_at": ` + referenceTimeStr + `, 16340 "url": "u" 16341 }, 16342 "access_tokens_url": "atu", 16343 "repositories_url": "ru", 16344 "html_url": "hu", 16345 "target_type": "tt", 16346 "single_file_name": "sfn", 16347 "repository_selection": "rs", 16348 "events": [ 16349 "e" 16350 ], 16351 "single_file_paths": [ 16352 "s" 16353 ], 16354 "permissions": { 16355 "actions": "a", 16356 "administration": "ad", 16357 "checks": "c", 16358 "contents": "co", 16359 "content_references": "cr", 16360 "deployments": "d", 16361 "environments": "e", 16362 "issues": "i", 16363 "metadata": "md", 16364 "members": "m", 16365 "organization_administration": "oa", 16366 "organization_hooks": "oh", 16367 "organization_plan": "op", 16368 "organization_pre_receive_hooks": "opr", 16369 "organization_projects": "op", 16370 "organization_secrets": "os", 16371 "organization_self_hosted_runners": "osh", 16372 "organization_user_blocking": "oub", 16373 "packages": "pkg", 16374 "pages": "pg", 16375 "pull_requests": "pr", 16376 "repository_hooks": "rh", 16377 "repository_projects": "rp", 16378 "repository_pre_receive_hooks": "rprh", 16379 "secrets": "s", 16380 "secret_scanning_alerts": "ssa", 16381 "security_events": "se", 16382 "single_file": "sf", 16383 "statuses": "s", 16384 "team_discussions": "td", 16385 "vulnerability_alerts": "va", 16386 "workflows": "w" 16387 }, 16388 "created_at": ` + referenceTimeStr + `, 16389 "updated_at": ` + referenceTimeStr + `, 16390 "has_multiple_single_files": false, 16391 "suspended_by": { 16392 "login": "l", 16393 "id": 1, 16394 "avatar_url": "a", 16395 "gravatar_id": "g", 16396 "name": "n", 16397 "company": "c", 16398 "blog": "b", 16399 "location": "l", 16400 "email": "e", 16401 "hireable": true, 16402 "bio": "b", 16403 "twitter_username": "t", 16404 "public_repos": 1, 16405 "followers": 1, 16406 "following": 1, 16407 "created_at": ` + referenceTimeStr + `, 16408 "suspended_at": ` + referenceTimeStr + `, 16409 "url": "u" 16410 }, 16411 "suspended_at": ` + referenceTimeStr + ` 16412 } 16413 }` 16414 16415 testJSONMarshal(t, u, want) 16416 } 16417 16418 func TestRepositoryVulnerabilityAlertEvent_Marshal(t *testing.T) { 16419 testJSONMarshal(t, &RepositoryVulnerabilityAlertEvent{}, "{}") 16420 16421 u := &RepositoryVulnerabilityAlertEvent{ 16422 Action: String("a"), 16423 Alert: &RepositoryVulnerabilityAlert{ 16424 ID: Int64(1), 16425 AffectedRange: String("ar"), 16426 AffectedPackageName: String("apn"), 16427 ExternalReference: String("er"), 16428 ExternalIdentifier: String("ei"), 16429 FixedIn: String("fi"), 16430 Dismisser: &User{ 16431 Login: String("l"), 16432 ID: Int64(1), 16433 NodeID: String("n"), 16434 URL: String("u"), 16435 ReposURL: String("r"), 16436 EventsURL: String("e"), 16437 AvatarURL: String("a"), 16438 }, 16439 DismissReason: String("dr"), 16440 DismissedAt: &Timestamp{referenceTime}, 16441 }, 16442 Repository: &Repository{ 16443 ID: Int64(1), 16444 URL: String("s"), 16445 Name: String("n"), 16446 }, 16447 } 16448 16449 want := `{ 16450 "action": "a", 16451 "alert": { 16452 "id": 1, 16453 "affected_range": "ar", 16454 "affected_package_name": "apn", 16455 "external_reference": "er", 16456 "external_identifier": "ei", 16457 "fixed_in": "fi", 16458 "dismisser": { 16459 "login": "l", 16460 "id": 1, 16461 "node_id": "n", 16462 "avatar_url": "a", 16463 "url": "u", 16464 "events_url": "e", 16465 "repos_url": "r" 16466 }, 16467 "dismiss_reason": "dr", 16468 "dismissed_at": ` + referenceTimeStr + ` 16469 }, 16470 "repository": { 16471 "id": 1, 16472 "name": "n", 16473 "url": "s" 16474 } 16475 }` 16476 16477 testJSONMarshal(t, u, want) 16478 } 16479 16480 func TestSecretScanningAlertEvent_Marshal(t *testing.T) { 16481 testJSONMarshal(t, &SecretScanningAlertEvent{}, "{}") 16482 16483 u := &SecretScanningAlertEvent{ 16484 Action: String("a"), 16485 Alert: &SecretScanningAlert{ 16486 Number: Int(1), 16487 SecretType: String("t"), 16488 Resolution: String("r"), 16489 ResolvedBy: &User{ 16490 Login: String("l"), 16491 ID: Int64(1), 16492 NodeID: String("n"), 16493 URL: String("u"), 16494 ReposURL: String("r"), 16495 EventsURL: String("e"), 16496 AvatarURL: String("a"), 16497 }, 16498 ResolvedAt: &Timestamp{referenceTime}, 16499 }, 16500 Repo: &Repository{ 16501 ID: Int64(1), 16502 URL: String("s"), 16503 Name: String("n"), 16504 }, 16505 Organization: &Organization{ 16506 BillingEmail: String("be"), 16507 Blog: String("b"), 16508 Company: String("c"), 16509 Email: String("e"), 16510 TwitterUsername: String("tu"), 16511 Location: String("loc"), 16512 Name: String("n"), 16513 Description: String("d"), 16514 IsVerified: Bool(true), 16515 HasOrganizationProjects: Bool(true), 16516 HasRepositoryProjects: Bool(true), 16517 DefaultRepoPermission: String("drp"), 16518 MembersCanCreateRepos: Bool(true), 16519 MembersCanCreateInternalRepos: Bool(true), 16520 MembersCanCreatePrivateRepos: Bool(true), 16521 MembersCanCreatePublicRepos: Bool(false), 16522 MembersAllowedRepositoryCreationType: String("marct"), 16523 MembersCanCreatePages: Bool(true), 16524 MembersCanCreatePublicPages: Bool(false), 16525 MembersCanCreatePrivatePages: Bool(true), 16526 }, 16527 Enterprise: &Enterprise{ 16528 ID: Int(1), 16529 Slug: String("s"), 16530 Name: String("n"), 16531 NodeID: String("nid"), 16532 AvatarURL: String("au"), 16533 Description: String("d"), 16534 WebsiteURL: String("wu"), 16535 HTMLURL: String("hu"), 16536 CreatedAt: &Timestamp{referenceTime}, 16537 UpdatedAt: &Timestamp{referenceTime}, 16538 }, 16539 Sender: &User{ 16540 Login: String("l"), 16541 ID: Int64(1), 16542 NodeID: String("n"), 16543 URL: String("u"), 16544 ReposURL: String("r"), 16545 EventsURL: String("e"), 16546 AvatarURL: String("a"), 16547 }, 16548 Installation: &Installation{ 16549 ID: Int64(1), 16550 NodeID: String("nid"), 16551 AppID: Int64(1), 16552 AppSlug: String("as"), 16553 TargetID: Int64(1), 16554 Account: &User{ 16555 Login: String("l"), 16556 ID: Int64(1), 16557 URL: String("u"), 16558 AvatarURL: String("a"), 16559 GravatarID: String("g"), 16560 Name: String("n"), 16561 Company: String("c"), 16562 Blog: String("b"), 16563 Location: String("l"), 16564 Email: String("e"), 16565 Hireable: Bool(true), 16566 Bio: String("b"), 16567 TwitterUsername: String("t"), 16568 PublicRepos: Int(1), 16569 Followers: Int(1), 16570 Following: Int(1), 16571 CreatedAt: &Timestamp{referenceTime}, 16572 SuspendedAt: &Timestamp{referenceTime}, 16573 }, 16574 AccessTokensURL: String("atu"), 16575 RepositoriesURL: String("ru"), 16576 HTMLURL: String("hu"), 16577 TargetType: String("tt"), 16578 SingleFileName: String("sfn"), 16579 RepositorySelection: String("rs"), 16580 Events: []string{"e"}, 16581 SingleFilePaths: []string{"s"}, 16582 Permissions: &InstallationPermissions{ 16583 Actions: String("a"), 16584 Administration: String("ad"), 16585 Checks: String("c"), 16586 Contents: String("co"), 16587 ContentReferences: String("cr"), 16588 Deployments: String("d"), 16589 Environments: String("e"), 16590 Issues: String("i"), 16591 Metadata: String("md"), 16592 Members: String("m"), 16593 OrganizationAdministration: String("oa"), 16594 OrganizationHooks: String("oh"), 16595 OrganizationPlan: String("op"), 16596 OrganizationPreReceiveHooks: String("opr"), 16597 OrganizationProjects: String("op"), 16598 OrganizationSecrets: String("os"), 16599 OrganizationSelfHostedRunners: String("osh"), 16600 OrganizationUserBlocking: String("oub"), 16601 Packages: String("pkg"), 16602 Pages: String("pg"), 16603 PullRequests: String("pr"), 16604 RepositoryHooks: String("rh"), 16605 RepositoryProjects: String("rp"), 16606 RepositoryPreReceiveHooks: String("rprh"), 16607 Secrets: String("s"), 16608 SecretScanningAlerts: String("ssa"), 16609 SecurityEvents: String("se"), 16610 SingleFile: String("sf"), 16611 Statuses: String("s"), 16612 TeamDiscussions: String("td"), 16613 VulnerabilityAlerts: String("va"), 16614 Workflows: String("w"), 16615 }, 16616 CreatedAt: &Timestamp{referenceTime}, 16617 UpdatedAt: &Timestamp{referenceTime}, 16618 HasMultipleSingleFiles: Bool(false), 16619 SuspendedBy: &User{ 16620 Login: String("l"), 16621 ID: Int64(1), 16622 URL: String("u"), 16623 AvatarURL: String("a"), 16624 GravatarID: String("g"), 16625 Name: String("n"), 16626 Company: String("c"), 16627 Blog: String("b"), 16628 Location: String("l"), 16629 Email: String("e"), 16630 Hireable: Bool(true), 16631 Bio: String("b"), 16632 TwitterUsername: String("t"), 16633 PublicRepos: Int(1), 16634 Followers: Int(1), 16635 Following: Int(1), 16636 CreatedAt: &Timestamp{referenceTime}, 16637 SuspendedAt: &Timestamp{referenceTime}, 16638 }, 16639 SuspendedAt: &Timestamp{referenceTime}, 16640 }, 16641 } 16642 16643 want := `{ 16644 "action": "a", 16645 "alert": { 16646 "number": 1, 16647 "secret_type": "t", 16648 "resolution": "r", 16649 "resolved_by": { 16650 "login": "l", 16651 "id": 1, 16652 "node_id": "n", 16653 "avatar_url": "a", 16654 "url": "u", 16655 "events_url": "e", 16656 "repos_url": "r" 16657 }, 16658 "resolved_at": ` + referenceTimeStr + ` 16659 }, 16660 "repository": { 16661 "id": 1, 16662 "name": "n", 16663 "url": "s" 16664 }, 16665 "organization": { 16666 "name": "n", 16667 "company": "c", 16668 "blog": "b", 16669 "location": "loc", 16670 "email": "e", 16671 "twitter_username": "tu", 16672 "description": "d", 16673 "billing_email": "be", 16674 "is_verified": true, 16675 "has_organization_projects": true, 16676 "has_repository_projects": true, 16677 "default_repository_permission": "drp", 16678 "members_can_create_repositories": true, 16679 "members_can_create_public_repositories": false, 16680 "members_can_create_private_repositories": true, 16681 "members_can_create_internal_repositories": true, 16682 "members_allowed_repository_creation_type": "marct", 16683 "members_can_create_pages": true, 16684 "members_can_create_public_pages": false, 16685 "members_can_create_private_pages": true 16686 }, 16687 "enterprise": { 16688 "id": 1, 16689 "slug": "s", 16690 "name": "n", 16691 "node_id": "nid", 16692 "avatar_url": "au", 16693 "description": "d", 16694 "website_url": "wu", 16695 "html_url": "hu", 16696 "created_at": ` + referenceTimeStr + `, 16697 "updated_at": ` + referenceTimeStr + ` 16698 }, 16699 "sender": { 16700 "login": "l", 16701 "id": 1, 16702 "node_id": "n", 16703 "avatar_url": "a", 16704 "url": "u", 16705 "events_url": "e", 16706 "repos_url": "r" 16707 }, 16708 "installation": { 16709 "id": 1, 16710 "node_id": "nid", 16711 "app_id": 1, 16712 "app_slug": "as", 16713 "target_id": 1, 16714 "account": { 16715 "login": "l", 16716 "id": 1, 16717 "avatar_url": "a", 16718 "gravatar_id": "g", 16719 "name": "n", 16720 "company": "c", 16721 "blog": "b", 16722 "location": "l", 16723 "email": "e", 16724 "hireable": true, 16725 "bio": "b", 16726 "twitter_username": "t", 16727 "public_repos": 1, 16728 "followers": 1, 16729 "following": 1, 16730 "created_at": ` + referenceTimeStr + `, 16731 "suspended_at": ` + referenceTimeStr + `, 16732 "url": "u" 16733 }, 16734 "access_tokens_url": "atu", 16735 "repositories_url": "ru", 16736 "html_url": "hu", 16737 "target_type": "tt", 16738 "single_file_name": "sfn", 16739 "repository_selection": "rs", 16740 "events": [ 16741 "e" 16742 ], 16743 "single_file_paths": [ 16744 "s" 16745 ], 16746 "permissions": { 16747 "actions": "a", 16748 "administration": "ad", 16749 "checks": "c", 16750 "contents": "co", 16751 "content_references": "cr", 16752 "deployments": "d", 16753 "environments": "e", 16754 "issues": "i", 16755 "metadata": "md", 16756 "members": "m", 16757 "organization_administration": "oa", 16758 "organization_hooks": "oh", 16759 "organization_plan": "op", 16760 "organization_pre_receive_hooks": "opr", 16761 "organization_projects": "op", 16762 "organization_secrets": "os", 16763 "organization_self_hosted_runners": "osh", 16764 "organization_user_blocking": "oub", 16765 "packages": "pkg", 16766 "pages": "pg", 16767 "pull_requests": "pr", 16768 "repository_hooks": "rh", 16769 "repository_projects": "rp", 16770 "repository_pre_receive_hooks": "rprh", 16771 "secrets": "s", 16772 "secret_scanning_alerts": "ssa", 16773 "security_events": "se", 16774 "single_file": "sf", 16775 "statuses": "s", 16776 "team_discussions": "td", 16777 "vulnerability_alerts": "va", 16778 "workflows": "w" 16779 }, 16780 "created_at": ` + referenceTimeStr + `, 16781 "updated_at": ` + referenceTimeStr + `, 16782 "has_multiple_single_files": false, 16783 "suspended_by": { 16784 "login": "l", 16785 "id": 1, 16786 "avatar_url": "a", 16787 "gravatar_id": "g", 16788 "name": "n", 16789 "company": "c", 16790 "blog": "b", 16791 "location": "l", 16792 "email": "e", 16793 "hireable": true, 16794 "bio": "b", 16795 "twitter_username": "t", 16796 "public_repos": 1, 16797 "followers": 1, 16798 "following": 1, 16799 "created_at": ` + referenceTimeStr + `, 16800 "suspended_at": ` + referenceTimeStr + `, 16801 "url": "u" 16802 }, 16803 "suspended_at": ` + referenceTimeStr + ` 16804 } 16805 }` 16806 16807 testJSONMarshal(t, u, want) 16808 } 16809 16810 func TestSecurityAdvisoryEvent_Marshal(t *testing.T) { 16811 testJSONMarshal(t, &SecurityAdvisoryEvent{}, "{}") 16812 u := &SecurityAdvisoryEvent{ 16813 Action: String("published"), 16814 SecurityAdvisory: &SecurityAdvisory{ 16815 CVSS: &AdvisoryCVSS{ 16816 Score: Float64(1.0), 16817 VectorString: String("vs"), 16818 }, 16819 CWEs: []*AdvisoryCWEs{ 16820 { 16821 CWEID: String("cweid"), 16822 Name: String("n"), 16823 }, 16824 }, 16825 GHSAID: String("GHSA-rf4j-j272-some"), 16826 Summary: String("Siuuuuuuuuu"), 16827 Description: String("desc"), 16828 Severity: String("moderate"), 16829 Identifiers: []*AdvisoryIdentifier{ 16830 { 16831 Value: String("GHSA-rf4j-j272-some"), 16832 Type: String("GHSA"), 16833 }, 16834 }, 16835 References: []*AdvisoryReference{ 16836 { 16837 URL: String("https://some-url"), 16838 }, 16839 }, 16840 PublishedAt: &Timestamp{referenceTime}, 16841 UpdatedAt: &Timestamp{referenceTime}, 16842 WithdrawnAt: nil, 16843 Vulnerabilities: []*AdvisoryVulnerability{ 16844 { 16845 Package: &VulnerabilityPackage{ 16846 Ecosystem: String("ucl"), 16847 Name: String("penaldo"), 16848 }, 16849 Severity: String("moderate"), 16850 VulnerableVersionRange: String(">= 2.0.0, < 2.0.2"), 16851 FirstPatchedVersion: &FirstPatchedVersion{ 16852 Identifier: String("2.0.2"), 16853 }, 16854 }, 16855 }, 16856 }, 16857 Enterprise: &Enterprise{ 16858 ID: Int(1), 16859 Slug: String("s"), 16860 Name: String("n"), 16861 NodeID: String("nid"), 16862 AvatarURL: String("au"), 16863 Description: String("d"), 16864 WebsiteURL: String("wu"), 16865 HTMLURL: String("hu"), 16866 CreatedAt: &Timestamp{referenceTime}, 16867 UpdatedAt: &Timestamp{referenceTime}, 16868 }, 16869 Installation: &Installation{ 16870 ID: Int64(1), 16871 NodeID: String("nid"), 16872 AppID: Int64(1), 16873 AppSlug: String("as"), 16874 TargetID: Int64(1), 16875 Account: &User{ 16876 Login: String("l"), 16877 ID: Int64(1), 16878 URL: String("u"), 16879 AvatarURL: String("a"), 16880 GravatarID: String("g"), 16881 Name: String("n"), 16882 Company: String("c"), 16883 Blog: String("b"), 16884 Location: String("l"), 16885 Email: String("e"), 16886 Hireable: Bool(true), 16887 Bio: String("b"), 16888 TwitterUsername: String("t"), 16889 PublicRepos: Int(1), 16890 Followers: Int(1), 16891 Following: Int(1), 16892 CreatedAt: &Timestamp{referenceTime}, 16893 SuspendedAt: &Timestamp{referenceTime}, 16894 }, 16895 AccessTokensURL: String("atu"), 16896 RepositoriesURL: String("ru"), 16897 HTMLURL: String("hu"), 16898 TargetType: String("tt"), 16899 SingleFileName: String("sfn"), 16900 RepositorySelection: String("rs"), 16901 Events: []string{"e"}, 16902 SingleFilePaths: []string{"s"}, 16903 Permissions: &InstallationPermissions{ 16904 Actions: String("a"), 16905 Administration: String("ad"), 16906 Checks: String("c"), 16907 Contents: String("co"), 16908 ContentReferences: String("cr"), 16909 Deployments: String("d"), 16910 Environments: String("e"), 16911 Issues: String("i"), 16912 Metadata: String("md"), 16913 Members: String("m"), 16914 OrganizationAdministration: String("oa"), 16915 OrganizationHooks: String("oh"), 16916 OrganizationPlan: String("op"), 16917 OrganizationPreReceiveHooks: String("opr"), 16918 OrganizationProjects: String("op"), 16919 OrganizationSecrets: String("os"), 16920 OrganizationSelfHostedRunners: String("osh"), 16921 OrganizationUserBlocking: String("oub"), 16922 Packages: String("pkg"), 16923 Pages: String("pg"), 16924 PullRequests: String("pr"), 16925 RepositoryHooks: String("rh"), 16926 RepositoryProjects: String("rp"), 16927 RepositoryPreReceiveHooks: String("rprh"), 16928 Secrets: String("s"), 16929 SecretScanningAlerts: String("ssa"), 16930 SecurityEvents: String("se"), 16931 SingleFile: String("sf"), 16932 Statuses: String("s"), 16933 TeamDiscussions: String("td"), 16934 VulnerabilityAlerts: String("va"), 16935 Workflows: String("w"), 16936 }, 16937 CreatedAt: &Timestamp{referenceTime}, 16938 UpdatedAt: &Timestamp{referenceTime}, 16939 HasMultipleSingleFiles: Bool(false), 16940 SuspendedBy: &User{ 16941 Login: String("l"), 16942 ID: Int64(1), 16943 URL: String("u"), 16944 AvatarURL: String("a"), 16945 GravatarID: String("g"), 16946 Name: String("n"), 16947 Company: String("c"), 16948 Blog: String("b"), 16949 Location: String("l"), 16950 Email: String("e"), 16951 Hireable: Bool(true), 16952 Bio: String("b"), 16953 TwitterUsername: String("t"), 16954 PublicRepos: Int(1), 16955 Followers: Int(1), 16956 Following: Int(1), 16957 CreatedAt: &Timestamp{referenceTime}, 16958 SuspendedAt: &Timestamp{referenceTime}, 16959 }, 16960 SuspendedAt: &Timestamp{referenceTime}, 16961 }, 16962 Organization: &Organization{ 16963 BillingEmail: String("be"), 16964 Blog: String("b"), 16965 Company: String("c"), 16966 Email: String("e"), 16967 TwitterUsername: String("tu"), 16968 Location: String("loc"), 16969 Name: String("n"), 16970 Description: String("d"), 16971 IsVerified: Bool(true), 16972 HasOrganizationProjects: Bool(true), 16973 HasRepositoryProjects: Bool(true), 16974 DefaultRepoPermission: String("drp"), 16975 MembersCanCreateRepos: Bool(true), 16976 MembersCanCreateInternalRepos: Bool(true), 16977 MembersCanCreatePrivateRepos: Bool(true), 16978 MembersCanCreatePublicRepos: Bool(false), 16979 MembersAllowedRepositoryCreationType: String("marct"), 16980 MembersCanCreatePages: Bool(true), 16981 MembersCanCreatePublicPages: Bool(false), 16982 MembersCanCreatePrivatePages: Bool(true), 16983 }, 16984 Repository: &Repository{ 16985 ID: Int64(1), 16986 URL: String("s"), 16987 Name: String("n"), 16988 }, 16989 Sender: &User{ 16990 Login: String("l"), 16991 ID: Int64(1), 16992 NodeID: String("n"), 16993 URL: String("u"), 16994 ReposURL: String("r"), 16995 EventsURL: String("e"), 16996 AvatarURL: String("a"), 16997 }, 16998 } 16999 17000 want := `{ 17001 "action": "published", 17002 "security_advisory": { 17003 "ghsa_id": "GHSA-rf4j-j272-some", 17004 "summary": "Siuuuuuuuuu", 17005 "cvss": { 17006 "score": 1.0, 17007 "vector_string": "vs" 17008 }, 17009 "cwes": [ 17010 { 17011 "cwe_id": "cweid", 17012 "name": "n" 17013 } 17014 ], 17015 "description": "desc", 17016 "severity": "moderate", 17017 "identifiers": [ 17018 { 17019 "value": "GHSA-rf4j-j272-some", 17020 "type": "GHSA" 17021 } 17022 ], 17023 "references": [ 17024 { 17025 "url": "https://some-url" 17026 } 17027 ], 17028 "published_at": ` + referenceTimeStr + `, 17029 "updated_at": ` + referenceTimeStr + `, 17030 "withdrawn_at": null, 17031 "vulnerabilities": [ 17032 { 17033 "package": { 17034 "ecosystem": "ucl", 17035 "name": "penaldo" 17036 }, 17037 "severity": "moderate", 17038 "vulnerable_version_range": ">= 2.0.0, < 2.0.2", 17039 "first_patched_version": { 17040 "identifier": "2.0.2" 17041 } 17042 } 17043 ] 17044 }, 17045 "enterprise": { 17046 "id": 1, 17047 "slug": "s", 17048 "name": "n", 17049 "node_id": "nid", 17050 "avatar_url": "au", 17051 "description": "d", 17052 "website_url": "wu", 17053 "html_url": "hu", 17054 "created_at": ` + referenceTimeStr + `, 17055 "updated_at": ` + referenceTimeStr + ` 17056 }, 17057 "installation": { 17058 "id": 1, 17059 "node_id": "nid", 17060 "app_id": 1, 17061 "app_slug": "as", 17062 "target_id": 1, 17063 "account": { 17064 "login": "l", 17065 "id": 1, 17066 "avatar_url": "a", 17067 "gravatar_id": "g", 17068 "name": "n", 17069 "company": "c", 17070 "blog": "b", 17071 "location": "l", 17072 "email": "e", 17073 "hireable": true, 17074 "bio": "b", 17075 "twitter_username": "t", 17076 "public_repos": 1, 17077 "followers": 1, 17078 "following": 1, 17079 "created_at": ` + referenceTimeStr + `, 17080 "suspended_at": ` + referenceTimeStr + `, 17081 "url": "u" 17082 }, 17083 "access_tokens_url": "atu", 17084 "repositories_url": "ru", 17085 "html_url": "hu", 17086 "target_type": "tt", 17087 "single_file_name": "sfn", 17088 "repository_selection": "rs", 17089 "events": [ 17090 "e" 17091 ], 17092 "single_file_paths": [ 17093 "s" 17094 ], 17095 "permissions": { 17096 "actions": "a", 17097 "administration": "ad", 17098 "checks": "c", 17099 "contents": "co", 17100 "content_references": "cr", 17101 "deployments": "d", 17102 "environments": "e", 17103 "issues": "i", 17104 "metadata": "md", 17105 "members": "m", 17106 "organization_administration": "oa", 17107 "organization_hooks": "oh", 17108 "organization_plan": "op", 17109 "organization_pre_receive_hooks": "opr", 17110 "organization_projects": "op", 17111 "organization_secrets": "os", 17112 "organization_self_hosted_runners": "osh", 17113 "organization_user_blocking": "oub", 17114 "packages": "pkg", 17115 "pages": "pg", 17116 "pull_requests": "pr", 17117 "repository_hooks": "rh", 17118 "repository_projects": "rp", 17119 "repository_pre_receive_hooks": "rprh", 17120 "secrets": "s", 17121 "secret_scanning_alerts": "ssa", 17122 "security_events": "se", 17123 "single_file": "sf", 17124 "statuses": "s", 17125 "team_discussions": "td", 17126 "vulnerability_alerts": "va", 17127 "workflows": "w" 17128 }, 17129 "created_at": ` + referenceTimeStr + `, 17130 "updated_at": ` + referenceTimeStr + `, 17131 "has_multiple_single_files": false, 17132 "suspended_by": { 17133 "login": "l", 17134 "id": 1, 17135 "avatar_url": "a", 17136 "gravatar_id": "g", 17137 "name": "n", 17138 "company": "c", 17139 "blog": "b", 17140 "location": "l", 17141 "email": "e", 17142 "hireable": true, 17143 "bio": "b", 17144 "twitter_username": "t", 17145 "public_repos": 1, 17146 "followers": 1, 17147 "following": 1, 17148 "created_at": ` + referenceTimeStr + `, 17149 "suspended_at": ` + referenceTimeStr + `, 17150 "url": "u" 17151 }, 17152 "suspended_at": ` + referenceTimeStr + ` 17153 }, 17154 "organization": { 17155 "name": "n", 17156 "company": "c", 17157 "blog": "b", 17158 "location": "loc", 17159 "email": "e", 17160 "twitter_username": "tu", 17161 "description": "d", 17162 "billing_email": "be", 17163 "is_verified": true, 17164 "has_organization_projects": true, 17165 "has_repository_projects": true, 17166 "default_repository_permission": "drp", 17167 "members_can_create_repositories": true, 17168 "members_can_create_public_repositories": false, 17169 "members_can_create_private_repositories": true, 17170 "members_can_create_internal_repositories": true, 17171 "members_allowed_repository_creation_type": "marct", 17172 "members_can_create_pages": true, 17173 "members_can_create_public_pages": false, 17174 "members_can_create_private_pages": true 17175 }, 17176 "repository": { 17177 "id": 1, 17178 "url": "s", 17179 "name": "n" 17180 }, 17181 "sender": { 17182 "login": "l", 17183 "id": 1, 17184 "node_id": "n", 17185 "avatar_url": "a", 17186 "url": "u", 17187 "events_url": "e", 17188 "repos_url": "r" 17189 } 17190 }` 17191 17192 testJSONMarshal(t, u, want) 17193 } 17194 17195 func TestSecurityAndAnalysisEvent_Marshal(t *testing.T) { 17196 testJSONMarshal(t, &SecurityAndAnalysisEvent{}, "{}") 17197 17198 u := &SecurityAndAnalysisEvent{ 17199 Changes: &SecurityAndAnalysisChange{ 17200 From: &SecurityAndAnalysisChangeFrom{ 17201 SecurityAndAnalysis: &SecurityAndAnalysis{ 17202 AdvancedSecurity: &AdvancedSecurity{ 17203 Status: String("enabled"), 17204 }, 17205 SecretScanning: &SecretScanning{ 17206 Status: String("enabled"), 17207 }, 17208 SecretScanningPushProtection: &SecretScanningPushProtection{ 17209 Status: String("enabled"), 17210 }, 17211 DependabotSecurityUpdates: &DependabotSecurityUpdates{ 17212 Status: String("enabled"), 17213 }, 17214 }, 17215 }, 17216 }, 17217 Enterprise: &Enterprise{ 17218 ID: Int(1), 17219 Slug: String("s"), 17220 Name: String("n"), 17221 NodeID: String("nid"), 17222 AvatarURL: String("au"), 17223 Description: String("d"), 17224 WebsiteURL: String("wu"), 17225 HTMLURL: String("hu"), 17226 CreatedAt: &Timestamp{referenceTime}, 17227 UpdatedAt: &Timestamp{referenceTime}, 17228 }, 17229 Installation: &Installation{ 17230 ID: Int64(1), 17231 NodeID: String("nid"), 17232 AppID: Int64(1), 17233 AppSlug: String("as"), 17234 TargetID: Int64(1), 17235 Account: &User{ 17236 Login: String("l"), 17237 ID: Int64(1), 17238 URL: String("u"), 17239 AvatarURL: String("a"), 17240 GravatarID: String("g"), 17241 Name: String("n"), 17242 Company: String("c"), 17243 Blog: String("b"), 17244 Location: String("l"), 17245 Email: String("e"), 17246 Hireable: Bool(true), 17247 Bio: String("b"), 17248 TwitterUsername: String("t"), 17249 PublicRepos: Int(1), 17250 Followers: Int(1), 17251 Following: Int(1), 17252 CreatedAt: &Timestamp{referenceTime}, 17253 SuspendedAt: &Timestamp{referenceTime}, 17254 }, 17255 AccessTokensURL: String("atu"), 17256 RepositoriesURL: String("ru"), 17257 HTMLURL: String("hu"), 17258 TargetType: String("tt"), 17259 SingleFileName: String("sfn"), 17260 RepositorySelection: String("rs"), 17261 Events: []string{"e"}, 17262 SingleFilePaths: []string{"s"}, 17263 Permissions: &InstallationPermissions{ 17264 Actions: String("a"), 17265 Administration: String("ad"), 17266 Checks: String("c"), 17267 Contents: String("co"), 17268 ContentReferences: String("cr"), 17269 Deployments: String("d"), 17270 Environments: String("e"), 17271 Issues: String("i"), 17272 Metadata: String("md"), 17273 Members: String("m"), 17274 OrganizationAdministration: String("oa"), 17275 OrganizationHooks: String("oh"), 17276 OrganizationPlan: String("op"), 17277 OrganizationPreReceiveHooks: String("opr"), 17278 OrganizationProjects: String("op"), 17279 OrganizationSecrets: String("os"), 17280 OrganizationSelfHostedRunners: String("osh"), 17281 OrganizationUserBlocking: String("oub"), 17282 Packages: String("pkg"), 17283 Pages: String("pg"), 17284 PullRequests: String("pr"), 17285 RepositoryHooks: String("rh"), 17286 RepositoryProjects: String("rp"), 17287 RepositoryPreReceiveHooks: String("rprh"), 17288 Secrets: String("s"), 17289 SecretScanningAlerts: String("ssa"), 17290 SecurityEvents: String("se"), 17291 SingleFile: String("sf"), 17292 Statuses: String("s"), 17293 TeamDiscussions: String("td"), 17294 VulnerabilityAlerts: String("va"), 17295 Workflows: String("w"), 17296 }, 17297 CreatedAt: &Timestamp{referenceTime}, 17298 UpdatedAt: &Timestamp{referenceTime}, 17299 HasMultipleSingleFiles: Bool(false), 17300 SuspendedBy: &User{ 17301 Login: String("l"), 17302 ID: Int64(1), 17303 URL: String("u"), 17304 AvatarURL: String("a"), 17305 GravatarID: String("g"), 17306 Name: String("n"), 17307 Company: String("c"), 17308 Blog: String("b"), 17309 Location: String("l"), 17310 Email: String("e"), 17311 Hireable: Bool(true), 17312 Bio: String("b"), 17313 TwitterUsername: String("t"), 17314 PublicRepos: Int(1), 17315 Followers: Int(1), 17316 Following: Int(1), 17317 CreatedAt: &Timestamp{referenceTime}, 17318 SuspendedAt: &Timestamp{referenceTime}, 17319 }, 17320 SuspendedAt: &Timestamp{referenceTime}, 17321 }, 17322 Organization: &Organization{ 17323 BillingEmail: String("be"), 17324 Blog: String("b"), 17325 Company: String("c"), 17326 Email: String("e"), 17327 TwitterUsername: String("tu"), 17328 Location: String("loc"), 17329 Name: String("n"), 17330 Description: String("d"), 17331 IsVerified: Bool(true), 17332 HasOrganizationProjects: Bool(true), 17333 HasRepositoryProjects: Bool(true), 17334 DefaultRepoPermission: String("drp"), 17335 MembersCanCreateRepos: Bool(true), 17336 MembersCanCreateInternalRepos: Bool(true), 17337 MembersCanCreatePrivateRepos: Bool(true), 17338 MembersCanCreatePublicRepos: Bool(false), 17339 MembersAllowedRepositoryCreationType: String("marct"), 17340 MembersCanCreatePages: Bool(true), 17341 MembersCanCreatePublicPages: Bool(false), 17342 MembersCanCreatePrivatePages: Bool(true), 17343 }, 17344 Repository: &Repository{ 17345 ID: Int64(1), 17346 URL: String("s"), 17347 Name: String("n"), 17348 }, 17349 Sender: &User{ 17350 Login: String("l"), 17351 ID: Int64(1), 17352 NodeID: String("n"), 17353 URL: String("u"), 17354 ReposURL: String("r"), 17355 EventsURL: String("e"), 17356 AvatarURL: String("a"), 17357 }, 17358 } 17359 17360 want := `{ 17361 "changes": { 17362 "from": { 17363 "security_and_analysis": { 17364 "advanced_security": { 17365 "status": "enabled" 17366 }, 17367 "secret_scanning": { 17368 "status": "enabled" 17369 }, 17370 "secret_scanning_push_protection": { 17371 "status": "enabled" 17372 }, 17373 "dependabot_security_updates": { 17374 "status": "enabled" 17375 } 17376 } 17377 } 17378 }, 17379 "enterprise": { 17380 "id": 1, 17381 "slug": "s", 17382 "name": "n", 17383 "node_id": "nid", 17384 "avatar_url": "au", 17385 "description": "d", 17386 "website_url": "wu", 17387 "html_url": "hu", 17388 "created_at": ` + referenceTimeStr + `, 17389 "updated_at": ` + referenceTimeStr + ` 17390 }, 17391 "installation": { 17392 "id": 1, 17393 "node_id": "nid", 17394 "app_id": 1, 17395 "app_slug": "as", 17396 "target_id": 1, 17397 "account": { 17398 "login": "l", 17399 "id": 1, 17400 "avatar_url": "a", 17401 "gravatar_id": "g", 17402 "name": "n", 17403 "company": "c", 17404 "blog": "b", 17405 "location": "l", 17406 "email": "e", 17407 "hireable": true, 17408 "bio": "b", 17409 "twitter_username": "t", 17410 "public_repos": 1, 17411 "followers": 1, 17412 "following": 1, 17413 "created_at": ` + referenceTimeStr + `, 17414 "suspended_at": ` + referenceTimeStr + `, 17415 "url": "u" 17416 }, 17417 "access_tokens_url": "atu", 17418 "repositories_url": "ru", 17419 "html_url": "hu", 17420 "target_type": "tt", 17421 "single_file_name": "sfn", 17422 "repository_selection": "rs", 17423 "events": [ 17424 "e" 17425 ], 17426 "single_file_paths": [ 17427 "s" 17428 ], 17429 "permissions": { 17430 "actions": "a", 17431 "administration": "ad", 17432 "checks": "c", 17433 "contents": "co", 17434 "content_references": "cr", 17435 "deployments": "d", 17436 "environments": "e", 17437 "issues": "i", 17438 "metadata": "md", 17439 "members": "m", 17440 "organization_administration": "oa", 17441 "organization_hooks": "oh", 17442 "organization_plan": "op", 17443 "organization_pre_receive_hooks": "opr", 17444 "organization_projects": "op", 17445 "organization_secrets": "os", 17446 "organization_self_hosted_runners": "osh", 17447 "organization_user_blocking": "oub", 17448 "packages": "pkg", 17449 "pages": "pg", 17450 "pull_requests": "pr", 17451 "repository_hooks": "rh", 17452 "repository_projects": "rp", 17453 "repository_pre_receive_hooks": "rprh", 17454 "secrets": "s", 17455 "secret_scanning_alerts": "ssa", 17456 "security_events": "se", 17457 "single_file": "sf", 17458 "statuses": "s", 17459 "team_discussions": "td", 17460 "vulnerability_alerts": "va", 17461 "workflows": "w" 17462 }, 17463 "created_at": ` + referenceTimeStr + `, 17464 "updated_at": ` + referenceTimeStr + `, 17465 "has_multiple_single_files": false, 17466 "suspended_by": { 17467 "login": "l", 17468 "id": 1, 17469 "avatar_url": "a", 17470 "gravatar_id": "g", 17471 "name": "n", 17472 "company": "c", 17473 "blog": "b", 17474 "location": "l", 17475 "email": "e", 17476 "hireable": true, 17477 "bio": "b", 17478 "twitter_username": "t", 17479 "public_repos": 1, 17480 "followers": 1, 17481 "following": 1, 17482 "created_at": ` + referenceTimeStr + `, 17483 "suspended_at": ` + referenceTimeStr + `, 17484 "url": "u" 17485 }, 17486 "suspended_at": ` + referenceTimeStr + ` 17487 }, 17488 "organization": { 17489 "name": "n", 17490 "company": "c", 17491 "blog": "b", 17492 "location": "loc", 17493 "email": "e", 17494 "twitter_username": "tu", 17495 "description": "d", 17496 "billing_email": "be", 17497 "is_verified": true, 17498 "has_organization_projects": true, 17499 "has_repository_projects": true, 17500 "default_repository_permission": "drp", 17501 "members_can_create_repositories": true, 17502 "members_can_create_public_repositories": false, 17503 "members_can_create_private_repositories": true, 17504 "members_can_create_internal_repositories": true, 17505 "members_allowed_repository_creation_type": "marct", 17506 "members_can_create_pages": true, 17507 "members_can_create_public_pages": false, 17508 "members_can_create_private_pages": true 17509 }, 17510 "repository": { 17511 "id": 1, 17512 "url": "s", 17513 "name": "n" 17514 }, 17515 "sender": { 17516 "login": "l", 17517 "id": 1, 17518 "node_id": "n", 17519 "avatar_url": "a", 17520 "url": "u", 17521 "events_url": "e", 17522 "repos_url": "r" 17523 }, 17524 "target_type": "running" 17525 }` 17526 17527 testJSONMarshal(t, u, want) 17528 } 17529 17530 func TestCodeScanningAlertEvent_Marshal(t *testing.T) { 17531 testJSONMarshal(t, &CodeScanningAlertEvent{}, "{}") 17532 17533 u := &CodeScanningAlertEvent{ 17534 Action: String("reopened"), 17535 Alert: &Alert{ 17536 Number: Int(10), 17537 Rule: &Rule{ 17538 ID: String("Style/FrozenStringLiteralComment"), 17539 Severity: String("note"), 17540 Description: String("desc"), 17541 FullDescription: String("full desc"), 17542 Tags: []string{"style"}, 17543 Help: String("help"), 17544 }, 17545 Tool: &Tool{ 17546 Name: String("Rubocop"), 17547 Version: nil, 17548 }, 17549 CreatedAt: &Timestamp{referenceTime}, 17550 UpdatedAt: &Timestamp{referenceTime}, 17551 FixedAt: nil, 17552 State: String("open"), 17553 URL: String("a"), 17554 HTMLURL: String("a"), 17555 Instances: []*MostRecentInstance{ 17556 { 17557 Ref: String("refs/heads/main"), 17558 AnalysisKey: String(".github/workflows/workflow.yml:upload"), 17559 Environment: String("{}"), 17560 State: String("open"), 17561 }, 17562 }, 17563 DismissedBy: nil, 17564 DismissedAt: nil, 17565 DismissedReason: nil, 17566 }, 17567 Ref: String("refs/heads/main"), 17568 CommitOID: String("d6e4c75c141dbacecc279b721b8bsomeSHA"), 17569 Repo: &Repository{ 17570 ID: Int64(1234234535), 17571 NodeID: String("MDEwOlJlcG9zaXRvcnkxODY4NT=="), 17572 Owner: &User{ 17573 Login: String("Codertocat"), 17574 ID: Int64(21031067), 17575 NodeID: String("MDQ6VXNlcjIxMDMxMDY3"), 17576 AvatarURL: String("a"), 17577 GravatarID: String(""), 17578 URL: String("a"), 17579 HTMLURL: String("a"), 17580 Type: String("User"), 17581 SiteAdmin: Bool(false), 17582 FollowersURL: String("a"), 17583 FollowingURL: String("a"), 17584 EventsURL: String("a"), 17585 GistsURL: String("a"), 17586 OrganizationsURL: String("a"), 17587 ReceivedEventsURL: String("a"), 17588 ReposURL: String("a"), 17589 StarredURL: String("a"), 17590 SubscriptionsURL: String("a"), 17591 }, 17592 HTMLURL: String("a"), 17593 Name: String("Hello-World"), 17594 FullName: String("Codertocat/Hello-World"), 17595 Description: nil, 17596 Fork: Bool(false), 17597 Homepage: nil, 17598 DefaultBranch: String("main"), 17599 CreatedAt: &Timestamp{referenceTime}, 17600 PushedAt: &Timestamp{referenceTime}, 17601 UpdatedAt: &Timestamp{referenceTime}, 17602 CloneURL: String("a"), 17603 GitURL: String("a"), 17604 MirrorURL: nil, 17605 SSHURL: String("a"), 17606 SVNURL: String("a"), 17607 Language: nil, 17608 ForksCount: Int(0), 17609 OpenIssuesCount: Int(2), 17610 OpenIssues: Int(2), 17611 StargazersCount: Int(0), 17612 WatchersCount: Int(0), 17613 Watchers: Int(0), 17614 Size: Int(0), 17615 Archived: Bool(false), 17616 Disabled: Bool(false), 17617 License: nil, 17618 Private: Bool(false), 17619 HasIssues: Bool(true), 17620 HasWiki: Bool(true), 17621 HasPages: Bool(true), 17622 HasProjects: Bool(true), 17623 HasDownloads: Bool(true), 17624 URL: String("a"), 17625 ArchiveURL: String("a"), 17626 AssigneesURL: String("a"), 17627 BlobsURL: String("a"), 17628 BranchesURL: String("a"), 17629 CollaboratorsURL: String("a"), 17630 CommentsURL: String("a"), 17631 CommitsURL: String("a"), 17632 CompareURL: String("a"), 17633 ContentsURL: String("a"), 17634 ContributorsURL: String("a"), 17635 DeploymentsURL: String("a"), 17636 DownloadsURL: String("a"), 17637 EventsURL: String("a"), 17638 ForksURL: String("a"), 17639 GitCommitsURL: String("a"), 17640 GitRefsURL: String("a"), 17641 GitTagsURL: String("a"), 17642 HooksURL: String("a"), 17643 IssueCommentURL: String("a"), 17644 IssueEventsURL: String("a"), 17645 IssuesURL: String("a"), 17646 KeysURL: String("a"), 17647 LabelsURL: String("a"), 17648 LanguagesURL: String("a"), 17649 MergesURL: String("a"), 17650 MilestonesURL: String("a"), 17651 NotificationsURL: String("a"), 17652 PullsURL: String("a"), 17653 ReleasesURL: String("a"), 17654 StargazersURL: String("a"), 17655 StatusesURL: String("a"), 17656 SubscribersURL: String("a"), 17657 SubscriptionURL: String("a"), 17658 TagsURL: String("a"), 17659 TreesURL: String("a"), 17660 TeamsURL: String("a"), 17661 }, 17662 Org: &Organization{ 17663 Login: String("Octocoders"), 17664 ID: Int64(6), 17665 NodeID: String("MDEyOk9yZ2FuaXphdGlvbjY="), 17666 AvatarURL: String("a"), 17667 Description: String(""), 17668 URL: String("a"), 17669 EventsURL: String("a"), 17670 HooksURL: String("a"), 17671 IssuesURL: String("a"), 17672 MembersURL: String("a"), 17673 PublicMembersURL: String("a"), 17674 ReposURL: String("a"), 17675 }, 17676 Sender: &User{ 17677 Login: String("github"), 17678 ID: Int64(9919), 17679 NodeID: String("MDEyOk9yZ2FuaXphdGlvbjk5MTk="), 17680 AvatarURL: String("a"), 17681 HTMLURL: String("a"), 17682 GravatarID: String(""), 17683 Type: String("Organization"), 17684 SiteAdmin: Bool(false), 17685 URL: String("a"), 17686 EventsURL: String("a"), 17687 FollowingURL: String("a"), 17688 FollowersURL: String("a"), 17689 GistsURL: String("a"), 17690 OrganizationsURL: String("a"), 17691 ReceivedEventsURL: String("a"), 17692 ReposURL: String("a"), 17693 StarredURL: String("a"), 17694 SubscriptionsURL: String("a"), 17695 }, 17696 } 17697 17698 want := `{ 17699 "action": "reopened", 17700 "alert": { 17701 "number": 10, 17702 "created_at": ` + referenceTimeStr + `, 17703 "updated_at": ` + referenceTimeStr + `, 17704 "url": "a", 17705 "html_url": "a", 17706 "instances": [ 17707 { 17708 "ref": "refs/heads/main", 17709 "analysis_key": ".github/workflows/workflow.yml:upload", 17710 "environment": "{}", 17711 "state": "open" 17712 } 17713 ], 17714 "state": "open", 17715 "fixed_at": null, 17716 "dismissed_by": null, 17717 "dismissed_at": null, 17718 "dismissed_reason": null, 17719 "rule": { 17720 "id": "Style/FrozenStringLiteralComment", 17721 "severity": "note", 17722 "description": "desc", 17723 "full_description": "full desc", 17724 "tags": [ 17725 "style" 17726 ], 17727 "help": "help" 17728 }, 17729 "tool": { 17730 "name": "Rubocop", 17731 "version": null 17732 } 17733 }, 17734 "ref": "refs/heads/main", 17735 "commit_oid": "d6e4c75c141dbacecc279b721b8bsomeSHA", 17736 "repository": { 17737 "id": 1234234535, 17738 "node_id": "MDEwOlJlcG9zaXRvcnkxODY4NT==", 17739 "name": "Hello-World", 17740 "full_name": "Codertocat/Hello-World", 17741 "private": false, 17742 "owner": { 17743 "login": "Codertocat", 17744 "id": 21031067, 17745 "node_id": "MDQ6VXNlcjIxMDMxMDY3", 17746 "avatar_url": "a", 17747 "gravatar_id": "", 17748 "url": "a", 17749 "html_url": "a", 17750 "followers_url": "a", 17751 "following_url": "a", 17752 "gists_url": "a", 17753 "starred_url": "a", 17754 "subscriptions_url": "a", 17755 "organizations_url": "a", 17756 "repos_url": "a", 17757 "events_url": "a", 17758 "received_events_url": "a", 17759 "type": "User", 17760 "site_admin": false 17761 }, 17762 "html_url": "a", 17763 "description": null, 17764 "fork": false, 17765 "url": "a", 17766 "forks_url": "a", 17767 "keys_url": "a", 17768 "collaborators_url": "a", 17769 "teams_url": "a", 17770 "hooks_url": "a", 17771 "issue_events_url": "a", 17772 "events_url": "a", 17773 "assignees_url": "a", 17774 "branches_url": "a", 17775 "tags_url": "a", 17776 "blobs_url": "a", 17777 "git_tags_url": "a", 17778 "git_refs_url": "a", 17779 "trees_url": "a", 17780 "statuses_url": "a", 17781 "languages_url": "a", 17782 "stargazers_url": "a", 17783 "contributors_url": "a", 17784 "subscribers_url": "a", 17785 "subscription_url": "a", 17786 "commits_url": "a", 17787 "git_commits_url": "a", 17788 "comments_url": "a", 17789 "issue_comment_url": "a", 17790 "contents_url": "a", 17791 "compare_url": "a", 17792 "merges_url": "a", 17793 "archive_url": "a", 17794 "downloads_url": "a", 17795 "issues_url": "a", 17796 "pulls_url": "a", 17797 "milestones_url": "a", 17798 "notifications_url": "a", 17799 "labels_url": "a", 17800 "releases_url": "a", 17801 "deployments_url": "a", 17802 "created_at": ` + referenceTimeStr + `, 17803 "updated_at": ` + referenceTimeStr + `, 17804 "pushed_at": ` + referenceTimeStr + `, 17805 "git_url": "a", 17806 "ssh_url": "a", 17807 "clone_url": "a", 17808 "svn_url": "a", 17809 "homepage": null, 17810 "size": 0, 17811 "stargazers_count": 0, 17812 "watchers_count": 0, 17813 "language": null, 17814 "has_issues": true, 17815 "has_projects": true, 17816 "has_downloads": true, 17817 "has_wiki": true, 17818 "has_pages": true, 17819 "forks_count": 0, 17820 "mirror_url": null, 17821 "archived": false, 17822 "disabled": false, 17823 "open_issues_count": 2, 17824 "license": null, 17825 "forks": 0, 17826 "open_issues": 2, 17827 "watchers": 0, 17828 "default_branch": "main" 17829 }, 17830 "organization": { 17831 "login": "Octocoders", 17832 "id": 6, 17833 "node_id": "MDEyOk9yZ2FuaXphdGlvbjY=", 17834 "url": "a", 17835 "repos_url": "a", 17836 "events_url": "a", 17837 "hooks_url": "a", 17838 "issues_url": "a", 17839 "members_url": "a", 17840 "public_members_url": "a", 17841 "avatar_url": "a", 17842 "description": "" 17843 }, 17844 "sender": { 17845 "login": "github", 17846 "id": 9919, 17847 "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", 17848 "avatar_url": "a", 17849 "gravatar_id": "", 17850 "url": "a", 17851 "html_url": "a", 17852 "followers_url": "a", 17853 "following_url": "a", 17854 "gists_url": "a", 17855 "starred_url": "a", 17856 "subscriptions_url": "a", 17857 "organizations_url": "a", 17858 "repos_url": "a", 17859 "events_url": "a", 17860 "received_events_url": "a", 17861 "type": "Organization", 17862 "site_admin": false 17863 } 17864 }` 17865 17866 testJSONMarshal(t, u, want) 17867 }