Inheritance: KeePass.Plugins.Plugin
        public void InitializeTest()
        {
            const string initalizeResultName = "KEEAGENT_INIT_RESULT";

              using (KeePassAppDomain testDomain1 = new KeePassAppDomain()) {
            testDomain1.StartKeePass(true, true, 1, true);
            testDomain1.DoCallBack(delegate()
            {
              IPluginHost td1PluginHost = KeePass.Program.MainForm.PluginHost;
              try {
            KeeAgentExt td1KeeAgentExt = new KeeAgentExt();
            KeePass.Program.MainForm.Invoke((MethodInvoker)delegate()
            {
              bool td1InitalizeResult = td1KeeAgentExt.Initialize(td1PluginHost);
              td1KeeAgentExt.Terminate();
              AppDomain.CurrentDomain.SetData(initalizeResultName,
                td1InitalizeResult);
            });
              } catch (Exception) {
            // TODO do we want to pass this exception back to test?
              }
            });

            bool expected = true;
            bool actual = (bool)testDomain1.GetData(initalizeResultName);
            Assert.AreEqual(expected, actual);
              }
        }
 public KeeAgentColumnProvider(KeeAgentExt ext)
 {
     if (ext == null)
     throw new ArgumentNullException("ext");
       this.ext = ext;
       ext.agent.KeyAdded += Agent_KeyAddedOrRemoved;
       ext.agent.KeyRemoved += Agent_KeyAddedOrRemoved;
       var agentModeAgent = ext.agent as Agent;
       if (agentModeAgent != null) {
       agentModeAgent.Locked += Agent_Locked;
       }
 }
        public void TestIOProtocolExt()
        {
            using (KeePassAppDomain testDomain1 = new KeePassAppDomain()) {
            testDomain1.StartKeePass(true, false, 1, true);
            testDomain1.DoCallBack(delegate()
            {
              KeePass.Program.MainForm.Invoke((MethodInvoker)delegate()
              {
            /* initialize plugins */

            KeeAgentExt td1KeeAgentExt = new KeeAgentExt();
            IOProtocolExtExt td1IOProtocolExt = new IOProtocolExtExt();

            IPluginHost td1PluginHost = KeePass.Program.MainForm.PluginHost;
            td1KeeAgentExt.Initialize(td1PluginHost);
            td1IOProtocolExt.Initialize(td1PluginHost);
            KeePass.Program.MainForm.FormClosing += delegate(
              Object source, FormClosingEventArgs args)
            {
              td1KeeAgentExt.Terminate();
              td1IOProtocolExt.Terminate();
            };

            var extType = td1KeeAgentExt.GetType ();
            var mAgentField = extType.GetField ("mAgent",
                                                BindingFlags.Instance | BindingFlags.NonPublic);
            var agent = mAgentField.GetValue (td1KeeAgentExt) as IAgent;

            // test not valid in client mode
            Assert.That(agent, Is.AssignableTo<Agent>());

            // override confirm callback so we don't have to click OK
            (agent as Agent).ConfirmUserPermissionCallback =
              delegate(ISshKey aKey)
              {
                return true;
              };

            /* load ssh key */
            var keyFileDir = Path.GetFullPath (Path.Combine (
              "..", "..", "..", "SshAgentLib", "SshAgentLibTests", "Resources"));
            var keyFilePath = Path.Combine(keyFileDir, "rsa_with_passphrase");
            Assert.That(File.Exists(keyFilePath), "Cannot locate key file: " + keyFilePath);

            KeyFormatter.GetPassphraseCallback getPassphraseCallback =
              delegate()
              {
                var passphrase = "passphrase";
                var securePassphrase = new SecureString();
                foreach (char c in passphrase) {
                  securePassphrase.AppendChar(c);
                }
                return securePassphrase;
              };
            var constraints = new List<Agent.KeyConstraint>();
            constraints.addConfirmConstraint();
            agent.AddKeyFromFile(keyFilePath, getPassphraseCallback, constraints);

            /* run test */
            IOConnectionInfo ioConnectionInfo = new IOConnectionInfo();
            ioConnectionInfo.Path = "sftp://satest/test.kdbx";
            ioConnectionInfo.UserName = "******";
            bool fileExists = IOConnection.FileExists(ioConnectionInfo);
            Assert.IsTrue(fileExists, "Is satest VM running?");

            /* the problem we are checking for is that IOConnection.FileExists
             * does not lock up. Originally, in KeeAgent, WinPagent ran on main
             * thread and caused lock-up here. So, we are looking to see if the
             * test times out or not. */
              });
            });
              }
        }
Beispiel #4
0
        public void TestOptionsPersistance()
        {
            // used for passing Options objects to/from AppDomain
              const string optionsPropertyName = "KEEAGENT_OPTIONS";

              /* test case options */

              bool requestedLoggingEnabled = true;
              string requestedLogFileName =
              Environment.GetEnvironmentVariable("TEMP");
              if (string.IsNullOrEmpty(requestedLogFileName)) {
            requestedLogFileName =
            Environment.GetEnvironmentVariable("TMP");
              }
              if (string.IsNullOrEmpty(requestedLogFileName)) {
            requestedLogFileName = "/tmp";
              }
              Assert.That (Directory.Exists (requestedLogFileName));

              // verify that requested options are not default to ensure a
              // valid test
              Options requestedOptions = new Options();
              Assert.AreNotEqual(requestedOptions.LoggingEnabled,
              requestedLoggingEnabled);
              Assert.AreNotEqual(requestedOptions.LogFileName,
              requestedLogFileName);

              requestedOptions.LoggingEnabled = requestedLoggingEnabled;
              requestedOptions.LogFileName = requestedLogFileName;

              /* first instance of KeePass is used to set options to
               * requested values */

              using (KeePassAppDomain testDomain1 = new KeePassAppDomain()) {
            testDomain1.StartKeePass(true, false, 1, true);
            testDomain1.SetData(optionsPropertyName, requestedOptions);
            testDomain1.DoCallBack(delegate()
            {
              KeePass.Program.MainForm.Invoke((MethodInvoker)delegate()
              {
            KeeAgentExt td1KeeAgentExt = new KeeAgentExt();
            IPluginHost td1PluginHost =
                KeePass.Program.MainForm.PluginHost;
            Options td1RequestedOptions = (Options)AppDomain
                .CurrentDomain.GetData(optionsPropertyName);
            td1KeeAgentExt.Initialize(td1PluginHost);
            td1KeeAgentExt.Options.Notification =
                td1RequestedOptions.Notification;
            td1KeeAgentExt.Options.LoggingEnabled =
                td1RequestedOptions.LoggingEnabled;
            td1KeeAgentExt.Options.LogFileName =
                td1RequestedOptions.LogFileName;
            var extType = td1KeeAgentExt.GetType ();
            var saveGlobalOptionsMethod =
              extType.GetMethod ("SaveGlobalOptions",
                                 BindingFlags.Instance | BindingFlags.NonPublic);
            saveGlobalOptionsMethod.Invoke (td1KeeAgentExt, null);
            td1PluginHost.MainWindow.SaveConfig();
            AppDomain.CurrentDomain.SetData(optionsPropertyName,
                td1KeeAgentExt.Options);
              });
            });
              }

              /* second instance of KeePass reads options to verify that they
               * were saved in the .config file */

              using (KeePassAppDomain testDomain2 = new KeePassAppDomain()) {
            testDomain2.StartKeePass(true, false, 1, false);
            testDomain2.DoCallBack(delegate()
            {
              KeePass.Program.MainForm.Invoke((MethodInvoker)delegate()
              {
            KeeAgentExt td2KeeAgentExt = new KeeAgentExt();
            IPluginHost td2PluginHost =
                KeePass.Program.MainForm.PluginHost;
            td2KeeAgentExt.Initialize(td2PluginHost);
            AppDomain.CurrentDomain.SetData(optionsPropertyName,
                td2KeeAgentExt.Options);
              });
            });
            Options actual = (Options)testDomain2.GetData(optionsPropertyName);
            Assert.AreEqual(requestedLoggingEnabled, actual.LoggingEnabled);
            Assert.AreEqual(requestedLogFileName, actual.LogFileName);
              }
        }