public void GetShouldFireEvents()
        {
            BamServer server;
            SecureServiceProxyClient <Echo> sspc;

            ServiceProxyTestHelpers.StartTestServerGetEchoClient(out server, out sspc);

            bool?firedIngEvent = false;
            bool?firedEdEvent  = false;

            sspc.Getting += (s, a) =>
            {
                firedIngEvent = true;
            };
            sspc.Got += (s, a) =>
            {
                firedEdEvent = true;
            };
            try
            {
                sspc.Get("TestStringParameter", new object[] { "monkey" }); // array forces resolution to the correct method
            }
            catch (Exception ex)
            {
                server.Stop();
                Expect.Fail(ex.Message);
            }

            server.Stop();

            Expect.IsTrue(firedIngEvent.Value, "Getting event didn't fire");
            Expect.IsTrue(firedEdEvent.Value, "Got event didn't fire");
        }
        public void GetShouldBeCancelable()
        {
            BamServer server;
            SecureServiceProxyClient <Echo> sspc;

            ServiceProxyTestHelpers.StartTestServerGetEchoClient(out server, out sspc);

            bool?firedIngEvent = false;
            bool?firedEdEvent  = false;

            sspc.Getting += (s, a) =>
            {
                firedIngEvent  = true;
                a.CancelInvoke = true; // should cancel the call
            };
            sspc.Got += (s, a) =>
            {
                firedEdEvent = true;
            };

            try
            {
                sspc.Get("TestStringParameter", new object[] { "monkey" });
            }
            catch (Exception ex)
            {
                server.Stop();
                Expect.Fail(ex.Message);
            }

            server.Stop();

            Expect.IsTrue(firedIngEvent.Value, "Getting didn't fire");
            Expect.IsFalse(firedEdEvent.Value, "Got fired but should not have");
        }
        public void SecureServiceProxyInvokeWithInvalidTokenShouldFail()
        {
            CleanUp();
            BamServer server;

            SecureChannel.Debug = true;
            SecureServiceProxyClient <ApiKeyRequiredEcho> sspc;

            ServiceProxyTestHelpers.StartSecureChannelTestServerGetApiKeyRequiredEchoClient(out server, out sspc);

            string value  = "InputValue_".RandomLetters(8);
            bool?  thrown = false;

            sspc.InvocationException += (client, ex) =>
            {
                thrown = true;
            };

            ApiKeyResolver resolver = new ApiKeyResolver(new InvalidKeyProvider());

            sspc.ApiKeyResolver = resolver;
            string result = sspc.Invoke <string>("Send", new object[] { value });

            Expect.IsTrue(thrown.Value);
            CleanUp();
        }
        public void StartSession()
        {
            BamServer server;
            SecureServiceProxyClient <Echo> sspc;

            ServiceProxyTestHelpers.StartSecureChannelTestServerGetEchoClient(out server, out sspc);

            sspc.StartSession();
            server.Stop();
        }
        public void SecureServiceProxyInvokeShouldSucceed()
        {
            BamServer server;
            SecureServiceProxyClient <Echo> sspc;

            ServiceProxyTestHelpers.StartSecureChannelTestServerGetEchoClient(out server, out sspc);

            string value  = "InputValue_".RandomLetters(8);
            string result = sspc.Invoke <string>("Send", new object[] { value });

            server.Stop();
            Expect.AreEqual(value, result);
        }
        public void SecureServiceProxyInvokeShouldFireSessionStarting()
        {
            BamServer server;
            SecureServiceProxyClient <Echo> sspc;

            ServiceProxyTestHelpers.StartSecureChannelTestServerGetEchoClient(out server, out sspc);
            bool?sessionStartingCalled = false;

            sspc.SessionStarting += (c) =>
            {
                sessionStartingCalled = true;
            };

            sspc.Invoke <string>("Send", new object[] { "banana" });
            server.Stop();
            Expect.IsTrue(sessionStartingCalled.Value, "SessionStarting did not fire");
        }
        public void SecureServiceProxyInvokeWithApiKeyShouldSucceed()
        {
            CleanUp();
            string    methodName = MethodBase.GetCurrentMethod().Name;
            BamServer server;

            SecureChannel.Debug = true;

            string baseAddress;

            ServiceProxyTestHelpers.CreateServer(out baseAddress, out server);
            ServiceProxyTestHelpers.Servers.Add(server); // makes sure it gets stopped after test run
            SecureServiceProxyClient <ApiKeyRequiredEcho> sspc = new SecureServiceProxyClient <ApiKeyRequiredEcho>(baseAddress);

            IApplicationNameProvider nameProvider = new TestApplicationNameProvider(methodName);
            IApiKeyProvider          keyProvider  = new LocalApiKeyProvider();
            ApiKeyResolver           keyResolver  = new ApiKeyResolver(keyProvider, nameProvider);

            SecureChannel channel = new SecureChannel();

            channel.ApiKeyResolver = keyResolver;

            server.AddCommonService <SecureChannel>(channel);
            server.AddCommonService <ApiKeyRequiredEcho>();

            server.Start();

            string value  = "InputValue_".RandomLetters(8);
            bool?  thrown = false;

            sspc.InvocationException += (client, ex) =>
            {
                thrown = true;
            };

            sspc.ApiKeyResolver = keyResolver;
            string result = sspc.Invoke <string>("Send", new object[] { value });

            Expect.IsFalse(thrown.Value, "Exception was thrown");
            Expect.AreEqual(value, result);
            CleanUp();
        }
        public void SecureServiceProxyInvokeShouldEstablishSessionIfSecureChannelServerRegistered()
        {
            BamServer server;
            SecureServiceProxyClient <Echo> sspc;

            ServiceProxyTestHelpers.StartSecureChannelTestServerGetEchoClient(out server, out sspc);

            Expect.IsFalse(sspc.SessionEstablished);
            string value  = "InputValue_".RandomLetters(8);
            string result = sspc.Invoke <string>("Send", new object[] { value });

            server.Stop();

            string msg = sspc.SessionStartException != null ? sspc.SessionStartException.Message : string.Empty;

            Expect.IsNull(sspc.SessionStartException, "SessionStartException: {0}"._Format(msg));
            Expect.IsTrue(sspc.SessionEstablished, "Session was not established");

            server.Stop();
        }
Example #9
0
        public void ShouldBeAbleToDownloadAndCompileCSharpProxy()
        {
            BamServer server;
            SecureServiceProxyClient <EncryptedEcho> sspc;

            ServiceProxyTestHelpers.StartSecureChannelTestServerGetEncryptedEchoClient(out server, out sspc);

            string   value    = Http.Get("http://localhost:8080/ServiceProxy/CSharpProxies?namespace=My.Test.Namespace&classes=EncryptedEcho");
            FileInfo codeFile = new FileInfo(".\\Tmp\\code.cs");

            if (codeFile.Directory.Exists)
            {
                codeFile.Directory.Delete(true);
            }
            codeFile.Directory.Create();
            value.SafeWriteToFile(codeFile.FullName, true);

            List <string> referenceAssemblies = new List <string>(DaoGenerator.DefaultReferenceAssemblies);

            referenceAssemblies.Add(typeof(ServiceProxyClient).Assembly.GetFileInfo().FullName);
            referenceAssemblies.Add(typeof(BamServer).Assembly.GetFileInfo().FullName);

            CompilerResults results = AdHocCSharpCompiler.CompileDirectories(new DirectoryInfo[] { codeFile.Directory }, ".\\Tmp\\TestClients.dll", referenceAssemblies.ToArray(), false);

            if (results.Errors.Count > 0)
            {
                StringBuilder message = new StringBuilder();
                foreach (CompilerError err in results.Errors)
                {
                    message.AppendLine(string.Format("File=>{0}\r\n{1}:::Line {2}, Column {3}::{4}",
                                                     err.FileName, err.ErrorNumber, err.Line, err.Column, err.ErrorText));
                }
                OutLine(message.ToString(), ConsoleColor.Red);
            }

            Expect.AreEqual(0, results.Errors.Count);

            Expect.IsTrue(results.CompiledAssembly.GetFileInfo().Exists);

            server.Stop();
        }
 public void StopServersAfterUnitTests()
 {
     ServiceProxyTestHelpers.StopServers();
 }
Example #11
0
 public static void ClearAppsAndStopServers()
 {
     ClearApps();
     ServiceProxyTestHelpers.StopServers();
 }