...

Source file src/github.com/google/go-github/v45/github/event_test.go

Documentation: github.com/google/go-github/v45/github

     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  }
   133  

View as plain text