hanayo/vendor/github.com/johnniedoe/contrib/jwt
2019-02-23 13:29:15 +00:00
..
example replace zxq.co/ripple/hanayo 2019-02-23 13:29:15 +00:00
Godeps replace zxq.co/ripple/hanayo 2019-02-23 13:29:15 +00:00
jwt.go replace zxq.co/ripple/hanayo 2019-02-23 13:29:15 +00:00
README.md replace zxq.co/ripple/hanayo 2019-02-23 13:29:15 +00:00

JWT middleware for go gonic.

JSON Web Token (JWT) more information: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html

EDIT: Below is the test for christopherL91/Go-API

package jwt_test

import (
	"encoding/json"
	. "github.com/smartystreets/goconvey/convey"
	"io/ioutil"
	"net/http"
	"strings"
	"testing"
)

type User struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

type Response struct {
	Token string `json:"token"`
}

func createNewsUser(username, password string) *User {
	return &User{username, password}
}

func TestLogin(t *testing.T) {
	Convey("Should be able to login", t, func() {
		user := createNewsUser("jonas", "1234")
		jsondata, _ := json.Marshal(user)
		post_data := strings.NewReader(string(jsondata))
		req, _ := http.NewRequest("POST", "http://localhost:3000/api/login", post_data)
		req.Header.Set("Content-Type", "application/json")
		client := &http.Client{}
		res, _ := client.Do(req)
		So(res.StatusCode, ShouldEqual, 200)

		Convey("Should be able to parse body", func() {
			body, err := ioutil.ReadAll(res.Body)
			defer res.Body.Close()
			So(err, ShouldBeNil)
			Convey("Should be able to get json back", func() {
				responseData := new(Response)
				err := json.Unmarshal(body, responseData)
				So(err, ShouldBeNil)

				Convey("Should be able to be authorized", func() {
					token := responseData.Token
					req, _ := http.NewRequest("GET", "http://localhost:3000/api/auth/testAuth", nil)
					req.Header.Set("Authorization", "Bearer "+token)
					client = &http.Client{}
					res, _ := client.Do(req)
					So(res.StatusCode, ShouldEqual, 200)
				})
			})
		})
	})
	Convey("Should not be able to login with false credentials", t, func() {
		user := createNewsUser("jnwfkjnkfneknvjwenv", "wenknfkwnfknfknkfjnwkfenw")
		jsondata, _ := json.Marshal(user)
		post_data := strings.NewReader(string(jsondata))
		req, _ := http.NewRequest("POST", "http://localhost:3000/api/login", post_data)
		req.Header.Set("Content-Type", "application/json")
		client := &http.Client{}
		res, _ := client.Do(req)
		So(res.StatusCode, ShouldEqual, 401)
	})

	Convey("Should not be able to authorize with false credentials", t, func() {
		token := ""
		req, _ := http.NewRequest("GET", "http://localhost:3000/api/auth/testAuth", nil)
		req.Header.Set("Authorization", "Bearer "+token)
		client := &http.Client{}
		res, _ := client.Do(req)
		So(res.StatusCode, ShouldEqual, 401)
	})
}