// BenchmarkServeHTTPHMACSimpleBL-4 100000 16037 ns/op 3808 B/op 82 allocs/op Go 1.5.0 func BenchmarkServeHTTPHMACSimpleBL(b *testing.B) { bl := ctxjwt.NewSimpleMapBlackList() password := []byte(`Rump3lst!lzch3n`) bmServeHTTP(b, ctxjwt.WithPassword(password), ctxjwt.WithBlacklist(bl), ) b.Logf("Blacklist Items %d", bl.Len()) }
func TestInvalidSigningMethod(t *testing.T) { password := []byte(`Rump3lst!lzch3n`) jm, err := ctxjwt.NewService( ctxjwt.WithPassword(password), ) assert.NoError(t, err) tk := jwt.New(jwt.SigningMethodHS256) tk.Claims["exp"] = time.Now().Add(time.Hour).Unix() tk.Claims["iat"] = time.Now().Unix() tk.Header["alg"] = "HS384" malformedToken, err := tk.SignedString(password) assert.NoError(t, err) mt, err := jm.Parse(malformedToken) assert.EqualError(t, err, ctxjwt.ErrUnexpectedSigningMethod.Error()) assert.Nil(t, mt) }
func ExampleWithInitStoreByToken() { initStore() ctx := store.NewContextReader(context.Background(), testStoreService) jwtService, err := ctxjwt.NewService(ctxjwt.WithPassword([]byte(`GÒph3r`))) finalHandler := ctxhttp.Chain( ctxhttp.HandlerFunc(func(ctx context.Context, w http.ResponseWriter, r *http.Request) error { _, haveReqStore, err := store.FromContextReader(ctx) if err != nil { return err } // now we know that the current request depends on the store view DE. fmt.Fprintf(w, "StoreCode: %s\n", haveReqStore.StoreCode()) return nil }), // executed 3rd store.WithInitStoreByToken(), // executed 2nd jwtService.WithParseAndValidate(), // executed 1st ) ts := httptest.NewServer(ctxhttp.NewAdapter(ctx, finalHandler)) defer ts.Close() // Setup GET request token, _, err := jwtService.GenerateToken( map[string]interface{}{ // Despite default store for Website ID 1 is AT we are currently // in the store context of DE. store.ParamName: "de", }, ) if err != nil { log.Fatal("jwtService.GenerateToken", "err", err) } req, err := http.NewRequest("GET", ts.URL, nil) if err != nil { log.Fatal("http.Get", "err", err) } ctxjwt.SetHeaderAuthorization(req, token) res, err := http.DefaultClient.Do(req) if err != nil { log.Fatal("http.DefaultClient.Do", "err", err) } response, err := ioutil.ReadAll(res.Body) if errC := res.Body.Close(); errC != nil { log.Fatal("res.Body.Close", "err", errC) } if err != nil { log.Fatal("ioutil.ReadAll", "err", err) } fmt.Printf("Response: %s\n", response) fmt.Printf("Log: %s\n", testDebugLogBuf.String()) // Output: // Response: StoreCode: de // // Log: }
// BenchmarkServeHTTPHMAC-4 100000 15851 ns/op 3808 B/op 82 allocs/op Go 1.5.0 func BenchmarkServeHTTPHMAC(b *testing.B) { password := []byte(`Rump3lst!lzch3n`) bmServeHTTP(b, ctxjwt.WithPassword(password)) }