| # 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) { RpcServer.new } |
| 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 |