authinterceptor_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package serverinterceptors
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/alicebob/miniredis"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/tal-tech/go-zero/core/stores/redis"
  8. "github.com/tal-tech/go-zero/rpcx/internal/auth"
  9. "google.golang.org/grpc/metadata"
  10. )
  11. func TestUnaryAuthorizeInterceptor(t *testing.T) {
  12. tests := []struct {
  13. name string
  14. strict bool
  15. }{
  16. {
  17. name: "strict=true",
  18. strict: true,
  19. },
  20. {
  21. name: "strict=false",
  22. strict: false,
  23. },
  24. }
  25. r := miniredis.NewMiniRedis()
  26. assert.Nil(t, r.Start())
  27. defer r.Close()
  28. for _, test := range tests {
  29. t.Run(test.name, func(t *testing.T) {
  30. store := redis.NewRedis(r.Addr(), redis.NodeType)
  31. authenticator, err := auth.NewAuthenticator(store, "apps", test.strict)
  32. assert.Nil(t, err)
  33. interceptor := UnaryAuthorizeInterceptor(authenticator)
  34. md := metadata.New(map[string]string{
  35. "app": "name",
  36. "token": "key",
  37. })
  38. ctx := metadata.NewIncomingContext(context.Background(), md)
  39. _, err = interceptor(ctx, nil, nil,
  40. func(ctx context.Context, req interface{}) (interface{}, error) {
  41. return nil, nil
  42. })
  43. if test.strict {
  44. assert.NotNil(t, err)
  45. } else {
  46. assert.Nil(t, err)
  47. }
  48. })
  49. }
  50. }