diff options
Diffstat (limited to 'csharp/test/IceSSL/configuration/TestI.cs')
-rw-r--r-- | csharp/test/IceSSL/configuration/TestI.cs | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/csharp/test/IceSSL/configuration/TestI.cs b/csharp/test/IceSSL/configuration/TestI.cs new file mode 100644 index 00000000000..1c5a2b05d0f --- /dev/null +++ b/csharp/test/IceSSL/configuration/TestI.cs @@ -0,0 +1,130 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +using Test; +using System; +using System.Collections; +using System.Collections.Generic; + +internal sealed class ServerI : ServerDisp_ +{ + internal ServerI(Ice.Communicator communicator) + { + communicator_ = communicator; + } + + public override void + noCert(Ice.Current current) + { + try + { + IceSSL.NativeConnectionInfo info = (IceSSL.NativeConnectionInfo)current.con.getInfo(); + test(info.nativeCerts == null); + } + catch(Ice.LocalException) + { + test(false); + } + } + + public override void + checkCert(string subjectDN, string issuerDN, Ice.Current current) + { + try + { + IceSSL.NativeConnectionInfo info = (IceSSL.NativeConnectionInfo)current.con.getInfo(); + test(info.nativeCerts.Length == 2 && + info.nativeCerts[0].Subject.Equals(subjectDN) && + info.nativeCerts[0].Issuer.Equals(issuerDN)); + } + catch(Ice.LocalException) + { + test(false); + } + } + + public override void + checkCipher(string cipher, Ice.Current current) + { + try + { + IceSSL.NativeConnectionInfo info = (IceSSL.NativeConnectionInfo)current.con.getInfo(); + test(info.cipher.Equals(cipher)); + } + catch(Ice.LocalException) + { + test(false); + } + } + + internal void destroy() + { + communicator_.destroy(); + } + + private static void test(bool b) + { + if (!b) + { + throw new Exception(); + } + } + + private Ice.Communicator communicator_; +} + +internal sealed class ServerFactoryI : ServerFactoryDisp_ +{ + private static void test(bool b) + { + if (!b) + { + throw new Exception(); + } + } + + public override ServerPrx createServer(Dictionary<string, string> props, Ice.Current current) + { + Ice.InitializationData initData = new Ice.InitializationData(); + initData.properties = Ice.Util.createProperties(); + foreach(string key in props.Keys) + { + initData.properties.setProperty(key, props[key]); + } + + string[] args = new string[0]; + Ice.Communicator communicator = Ice.Util.initialize(ref args, initData); + Ice.ObjectAdapter adapter = communicator.createObjectAdapterWithEndpoints("ServerAdapter", "ssl"); + ServerI server = new ServerI(communicator); + Ice.ObjectPrx obj = adapter.addWithUUID(server); + servers_[obj.ice_getIdentity()] = server; + adapter.activate(); + + return ServerPrxHelper.uncheckedCast(obj); + } + + public override void destroyServer(ServerPrx srv, Ice.Current current) + { + Ice.Identity key = srv.ice_getIdentity(); + if(servers_.Contains(key)) + { + ServerI server = servers_[key] as ServerI; + server.destroy(); + servers_.Remove(key); + } + } + + public override void shutdown(Ice.Current current) + { + test(servers_.Count == 0); + current.adapter.getCommunicator().shutdown(); + } + + private Hashtable servers_ = new Hashtable(); +} |