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