1
2
3
4
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("[")
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 }
133
View as plain text