如何从服务器拦截器测试上下文密钥值集

时间:2019-03-27 13:28:06

标签: java grpc

我正在尝试为身份验证服务器拦截器编写单元测试。拦截器从附加的元数据标头中提取用户ID信息,并将其存储为ContextKey,以后将在服务调用中使用它。我是根据this线程中的指令完成此操作的。

基于HeaderServerInterceptorTest示例,我建立了自己的测试,该测试的确调用了拦截器。但是,当尝试声明用户ID值时,该值始终为null。

我的拦截器类是:

@Override
    public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers,
            ServerCallHandler<ReqT, RespT> next) {

// authentication and extracting user ID info

        Context context = Context.current();
        return Contexts.interceptCall(context.withValue(USER_ID, id), call, headers, next);
    }

由于USER_ID值为空,所以插入总是失败。

assertEquals("john_doe_ID", MyServerInterceptor.getUserID());

我猜我在测试中缺少Context的其他一些配置,但是找不到类似的东西...

0 个答案:

没有答案