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

     1  package chef
     2  
     3  import (
     4  	"encoding/json"
     5  	"github.com/stretchr/testify/assert"
     6  	"io"
     7  	"log"
     8  	"net/http"
     9  	"os"
    10  	"testing"
    11  )
    12  
    13  var (
    14  	testAuthenticateJSON = "test/authenticate.json"
    15  )
    16  
    17  func TestAuthenticateFromJSONDecoder(t *testing.T) {
    18  	if file, err := os.Open(testAuthenticateJSON); err != nil {
    19  		t.Error("Unexpected error '", err, "' during os.Open on", testAuthenticateJSON)
    20  	} else {
    21  		dec := json.NewDecoder(file)
    22  		var g Authenticate
    23  		if err := dec.Decode(&g); err == io.EOF {
    24  			log.Fatal(g)
    25  		} else if err != nil {
    26  			log.Fatal(err)
    27  		}
    28  	}
    29  }
    30  
    31  func TestAuthenticatesCreate(t *testing.T) {
    32  	setup()
    33  	defer teardown()
    34  
    35  	mux.HandleFunc("/authenticate_user", func(w http.ResponseWriter, r *http.Request) {
    36  		dec := json.NewDecoder(r.Body)
    37  		var request Authenticate
    38  		dec.Decode(&request)
    39  		switch {
    40  		case r.Method == "POST":
    41  			if request.Password == "password" {
    42  				w.WriteHeader(200)
    43  			} else {
    44  				w.WriteHeader(401)
    45  			}
    46  		}
    47  	})
    48  	var request Authenticate
    49  	request.UserName = "user1"
    50  	request.Password = "invalid"
    51  	err := client.AuthenticateUser.Authenticate(request)
    52  	if assert.NotNil(t, err) {
    53  		assert.Contains(t, err.Error(), "401")
    54  	}
    55  
    56  	request.UserName = "user1"
    57  	request.Password = "password"
    58  	err = client.AuthenticateUser.Authenticate(request)
    59  	if err != nil {
    60  		t.Errorf("Authenticate returned error: %+v", err)
    61  	}
    62  }