github.com/google/go-github/v49@v49.1.0/github/event_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 TestPayload_Panic(t *testing.T) { 14 defer func() { 15 if r := recover(); r == nil { 16 t.Errorf("Payload did not panic but should have") 17 } 18 }() 19 20 name := "UserEvent" 21 body := json.RawMessage("[") // bogus JSON 22 e := &Event{Type: &name, RawPayload: &body} 23 e.Payload() 24 } 25 26 func TestPayload_NoPanic(t *testing.T) { 27 name := "UserEvent" 28 body := json.RawMessage("{}") 29 e := &Event{Type: &name, RawPayload: &body} 30 e.Payload() 31 } 32 33 func TestEvent_Marshal(t *testing.T) { 34 testJSONMarshal(t, &Event{}, "{}") 35 36 l := make(map[string]interface{}) 37 l["key"] = "value" 38 39 jsonMsg, _ := json.Marshal(&l) 40 41 u := &Event{ 42 Type: String("t"), 43 Public: Bool(false), 44 RawPayload: (*json.RawMessage)(&jsonMsg), 45 Repo: &Repository{ 46 ID: Int64(1), 47 URL: String("s"), 48 Name: String("n"), 49 }, 50 Actor: &User{ 51 Login: String("l"), 52 ID: Int64(1), 53 NodeID: String("n"), 54 URL: String("u"), 55 ReposURL: String("r"), 56 EventsURL: String("e"), 57 AvatarURL: String("a"), 58 }, 59 Org: &Organization{ 60 BillingEmail: String("be"), 61 Blog: String("b"), 62 Company: String("c"), 63 Email: String("e"), 64 TwitterUsername: String("tu"), 65 Location: String("loc"), 66 Name: String("n"), 67 Description: String("d"), 68 IsVerified: Bool(true), 69 HasOrganizationProjects: Bool(true), 70 HasRepositoryProjects: Bool(true), 71 DefaultRepoPermission: String("drp"), 72 MembersCanCreateRepos: Bool(true), 73 MembersCanCreateInternalRepos: Bool(true), 74 MembersCanCreatePrivateRepos: Bool(true), 75 MembersCanCreatePublicRepos: Bool(false), 76 MembersAllowedRepositoryCreationType: String("marct"), 77 MembersCanCreatePages: Bool(true), 78 MembersCanCreatePublicPages: Bool(false), 79 MembersCanCreatePrivatePages: Bool(true), 80 }, 81 CreatedAt: &referenceTime, 82 ID: String("id"), 83 } 84 85 want := `{ 86 "type": "t", 87 "public": false, 88 "payload": { 89 "key": "value" 90 }, 91 "repo": { 92 "id": 1, 93 "name": "n", 94 "url": "s" 95 }, 96 "actor": { 97 "login": "l", 98 "id": 1, 99 "node_id": "n", 100 "avatar_url": "a", 101 "url": "u", 102 "events_url": "e", 103 "repos_url": "r" 104 }, 105 "org": { 106 "name": "n", 107 "company": "c", 108 "blog": "b", 109 "location": "loc", 110 "email": "e", 111 "twitter_username": "tu", 112 "description": "d", 113 "billing_email": "be", 114 "is_verified": true, 115 "has_organization_projects": true, 116 "has_repository_projects": true, 117 "default_repository_permission": "drp", 118 "members_can_create_repositories": true, 119 "members_can_create_public_repositories": false, 120 "members_can_create_private_repositories": true, 121 "members_can_create_internal_repositories": true, 122 "members_allowed_repository_creation_type": "marct", 123 "members_can_create_pages": true, 124 "members_can_create_public_pages": false, 125 "members_can_create_private_pages": true 126 }, 127 "created_at": ` + referenceTimeStr + `, 128 "id": "id" 129 }` 130 131 testJSONMarshal(t, u, want) 132 }