github.com/google/go-github/v33@v33.0.0/github/git_blobs_test.go (about)

     1  // Copyright 2014 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  	"bytes"
    10  	"context"
    11  	"encoding/json"
    12  	"fmt"
    13  	"net/http"
    14  	"reflect"
    15  	"testing"
    16  )
    17  
    18  func TestGitService_GetBlob(t *testing.T) {
    19  	client, mux, _, teardown := setup()
    20  	defer teardown()
    21  
    22  	mux.HandleFunc("/repos/o/r/git/blobs/s", func(w http.ResponseWriter, r *http.Request) {
    23  		testMethod(t, r, "GET")
    24  
    25  		fmt.Fprint(w, `{
    26  			  "sha": "s",
    27  			  "content": "blob content"
    28  			}`)
    29  	})
    30  
    31  	blob, _, err := client.Git.GetBlob(context.Background(), "o", "r", "s")
    32  	if err != nil {
    33  		t.Errorf("Git.GetBlob returned error: %v", err)
    34  	}
    35  
    36  	want := Blob{
    37  		SHA:     String("s"),
    38  		Content: String("blob content"),
    39  	}
    40  
    41  	if !reflect.DeepEqual(*blob, want) {
    42  		t.Errorf("Blob.Get returned %+v, want %+v", *blob, want)
    43  	}
    44  }
    45  
    46  func TestGitService_GetBlob_invalidOwner(t *testing.T) {
    47  	client, _, _, teardown := setup()
    48  	defer teardown()
    49  
    50  	_, _, err := client.Git.GetBlob(context.Background(), "%", "%", "%")
    51  	testURLParseError(t, err)
    52  }
    53  
    54  func TestGitService_GetBlobRaw(t *testing.T) {
    55  	client, mux, _, teardown := setup()
    56  	defer teardown()
    57  
    58  	mux.HandleFunc("/repos/o/r/git/blobs/s", func(w http.ResponseWriter, r *http.Request) {
    59  		testMethod(t, r, "GET")
    60  		testHeader(t, r, "Accept", "application/vnd.github.v3.raw")
    61  
    62  		fmt.Fprint(w, `raw contents here`)
    63  	})
    64  
    65  	blob, _, err := client.Git.GetBlobRaw(context.Background(), "o", "r", "s")
    66  	if err != nil {
    67  		t.Errorf("Git.GetBlobRaw returned error: %v", err)
    68  	}
    69  
    70  	want := []byte("raw contents here")
    71  	if !bytes.Equal(blob, want) {
    72  		t.Errorf("GetBlobRaw returned %q, want %q", blob, want)
    73  	}
    74  }
    75  
    76  func TestGitService_CreateBlob(t *testing.T) {
    77  	client, mux, _, teardown := setup()
    78  	defer teardown()
    79  
    80  	input := &Blob{
    81  		SHA:      String("s"),
    82  		Content:  String("blob content"),
    83  		Encoding: String("utf-8"),
    84  		Size:     Int(12),
    85  	}
    86  
    87  	mux.HandleFunc("/repos/o/r/git/blobs", func(w http.ResponseWriter, r *http.Request) {
    88  		v := new(Blob)
    89  		json.NewDecoder(r.Body).Decode(v)
    90  
    91  		testMethod(t, r, "POST")
    92  
    93  		want := input
    94  		if !reflect.DeepEqual(v, want) {
    95  			t.Errorf("Git.CreateBlob request body: %+v, want %+v", v, want)
    96  		}
    97  
    98  		fmt.Fprint(w, `{
    99  		 "sha": "s",
   100  		 "content": "blob content",
   101  		 "encoding": "utf-8",
   102  		 "size": 12
   103  		}`)
   104  	})
   105  
   106  	blob, _, err := client.Git.CreateBlob(context.Background(), "o", "r", input)
   107  	if err != nil {
   108  		t.Errorf("Git.CreateBlob returned error: %v", err)
   109  	}
   110  
   111  	want := input
   112  
   113  	if !reflect.DeepEqual(*blob, *want) {
   114  		t.Errorf("Git.CreateBlob returned %+v, want %+v", *blob, *want)
   115  	}
   116  }
   117  
   118  func TestGitService_CreateBlob_invalidOwner(t *testing.T) {
   119  	client, _, _, teardown := setup()
   120  	defer teardown()
   121  
   122  	_, _, err := client.Git.CreateBlob(context.Background(), "%", "%", &Blob{})
   123  	testURLParseError(t, err)
   124  }