blob: 4d932db937d2fd58a664abe3227e8893be288292 [file] [log] [blame]
nnoble0c475f02014-12-05 15:37:39 -08001# Copyright 2014, Google Inc.
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are
6# met:
7#
8# * Redistributions of source code must retain the above copyright
9# notice, this list of conditions and the following disclaimer.
10# * Redistributions in binary form must reproduce the above
11# copyright notice, this list of conditions and the following disclaimer
12# in the documentation and/or other materials provided with the
13# distribution.
14# * Neither the name of Google Inc. nor the names of its
15# contributors may be used to endorse or promote products derived from
16# this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30require 'grpc'
31
32
33def load_test_certs
34 test_root = File.join(File.dirname(__FILE__), 'testdata')
35 files = ['ca.pem', 'server1.pem', 'server1.key']
36 files.map { |f| File.open(File.join(test_root, f)).read }
37end
38
39Credentials = GRPC::Core::Credentials
40
41describe Credentials do
42
43 describe '#new' do
44
45 it 'can be constructed with fake inputs' do
46 expect { Credentials.new('root_certs', 'key', 'cert') }.not_to raise_error
47 end
48
49 it 'it can be constructed using specific test certificates' do
50 certs = load_test_certs
51 expect { Credentials.new(*certs) }.not_to raise_error
52 end
53
54 it 'can be constructed with server roots certs only' do
55 root_cert, _, _ = load_test_certs
56 expect { Credentials.new(root_cert) }.not_to raise_error
57 end
58
59 it 'cannot be constructed with a nil server roots' do
60 _, client_key, client_chain = load_test_certs
61 blk = Proc.new { Credentials.new(nil, client_key, client_chain) }
62 expect(&blk).to raise_error
63 end
64
65 end
66
67 describe '#compose' do
68
69 it 'can be completed OK' do
70 certs = load_test_certs
71 cred1 = Credentials.new(*certs)
72 cred2 = Credentials.new(*certs)
73 expect { cred1.compose(cred2) }.to_not raise_error
74 end
75
76 end
77
78 describe 'Credentials#default' do
79
80 it 'is not implemented yet' do
81 expect { Credentials.default() }.to raise_error RuntimeError
82 end
83
84 end
85
86
87end