# Copyright 2017 gRPC authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. require 'spec_helper' describe GRPC::InterceptorRegistry do let(:server) { new_rpc_server_for_testing } let(:interceptor) { TestServerInterceptor.new } let(:interceptors) { [interceptor] } let(:registry) { described_class.new(interceptors) } describe 'initialization' do subject { registry } context 'with an interceptor extending GRPC::ServerInterceptor' do it 'should add the interceptor to the registry' do subject is = registry.instance_variable_get('@interceptors') expect(is.count).to eq 1 expect(is.first).to eq interceptor end end context 'with multiple interceptors' do let(:interceptor2) { TestServerInterceptor.new } let(:interceptor3) { TestServerInterceptor.new } let(:interceptors) { [interceptor, interceptor2, interceptor3] } it 'should maintain order of insertion when iterated against' do subject is = registry.instance_variable_get('@interceptors') expect(is.count).to eq 3 is.each_with_index do |i, idx| case idx when 0 expect(i).to eq interceptor when 1 expect(i).to eq interceptor2 when 2 expect(i).to eq interceptor3 end end end end context 'with an interceptor not extending GRPC::ServerInterceptor' do let(:interceptor) { Class } let(:err) { GRPC::InterceptorRegistry::DescendantError } it 'should raise an InvalidArgument exception' do expect { subject }.to raise_error(err) end end end end