github.com/go-chef/chef@v0.30.1/license_test.go (about)

     1  package chef
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"io"
     7  	"log"
     8  	"net/http"
     9  	"os"
    10  	"reflect"
    11  	"testing"
    12  )
    13  
    14  var (
    15  	testLicenseJSON = "test/license.json"
    16  )
    17  
    18  func TestLicenseFromJSONDecoder(t *testing.T) {
    19  	if file, err := os.Open(testLicenseJSON); err != nil {
    20  		t.Error("Unexpected error '", err, "' during os.Open on", testLicenseJSON)
    21  	} else {
    22  		dec := json.NewDecoder(file)
    23  		var g License
    24  		if err := dec.Decode(&g); err == io.EOF {
    25  			log.Fatal(g)
    26  		} else if err != nil {
    27  			log.Fatal(err)
    28  		}
    29  	}
    30  }
    31  
    32  func TestLicenseGet(t *testing.T) {
    33  	setup()
    34  	defer teardown()
    35  
    36  	mux.HandleFunc("/license", func(w http.ResponseWriter, r *http.Request) {
    37  		dec := json.NewDecoder(r.Body)
    38  		var request License
    39  		dec.Decode(&request)
    40  		switch {
    41  		case r.Method == "GET":
    42  			fmt.Fprintf(w, `{
    43                             "limit_exceeded": false,
    44                             "node_license": 25,
    45                             "node_count": 12,
    46                             "upgrade_url": "http://www.chef.io/contact/on-premises-simple"
    47  		        }`)
    48  		}
    49  	})
    50  
    51  	wantLicense := License{
    52  		LimitExceeded: false,
    53  		NodeLicense:   25,
    54  		NodeCount:     12,
    55  		UpgradeUrl:    "http://www.chef.io/contact/on-premises-simple",
    56  	}
    57  
    58  	license, err := client.License.Get()
    59  	if err != nil {
    60  		t.Errorf("License.Get returned error: %s", err.Error())
    61  	}
    62  	if !reflect.DeepEqual(license, wantLicense) {
    63  		t.Errorf("License.Get returned %+v, want %+v", license, wantLicense)
    64  	}
    65  
    66  }