Ejemplo n.º 1
0
 def testConfigureMySQLDatastore(self, getpass_mock, connect_mock):
     # Mock user-inputs for MySQL prompts.
     self.input_mock.side_effect = [
         "",  # MySQL hostname (the default is localhost).
         "1234",  # MySQL port
         "grr-test-db",  # GRR db name.
         "grr-test-user",  # GRR db user.
         "n",  # No SSL.
     ]
     getpass_mock.return_value = "grr-test-password"  # DB password for GRR.
     connect_mock.return_value = mock.Mock(spec=connections.Connection)
     config = grr_config.CONFIG.CopyConfig()
     config_updater_util.ConfigureMySQLDatastore(config)
     connect_mock.assert_called_once_with(host="localhost",
                                          port=1234,
                                          db="grr-test-db",
                                          user="******",
                                          passwd="grr-test-password",
                                          charset="utf8")
     self.assertEqual(config.writeback_data["Mysql.host"], "localhost")
     self.assertEqual(config.writeback_data["Mysql.port"], 1234)
     self.assertEqual(config.writeback_data["Mysql.database_name"],
                      "grr-test-db")
     self.assertEqual(config.writeback_data["Mysql.database_username"],
                      "grr-test-user")
     self.assertEqual(config.writeback_data["Mysql.database_password"],
                      "grr-test-password")
Ejemplo n.º 2
0
 def testConfigureMySQLDatastore_ConnectionRetry(self, getpass_mock,
                                                 connect_mock):
   # Mock user-inputs for MySQL prompts.
   self.input_mock.side_effect = [
       "",  # MySQL hostname (the default is localhost).
       "1234",  # MySQL port
       "grr-test-db",  # GRR db name.
       "grr-test-user",  # GRR db user.
       "n"  # Exit config initialization after retries are depleted.
   ]
   getpass_mock.return_value = "grr-test-password"  # DB password for GRR.
   connect_mock.side_effect = MySQLdb.OperationalError(
       mysql_conn_errors.CONNECTION_ERROR, "Fake connection error.")
   config = grr_config.CONFIG.CopyConfig()
   with self.assertRaises(config_updater_util.ConfigInitError):
     config_updater_util.ConfigureMySQLDatastore(config)
   self.assertEqual(connect_mock.call_count, 2)
Ejemplo n.º 3
0
 def testConfigureMySQLDatastoreWithSSL(self, getpass_mock, connect_mock):
   # Mock user-inputs for MySQL prompts.
   self.input_mock.side_effect = [
       "Y",  # Use REL_DB as the primary data store.
       "",  # MySQL hostname (the default is localhost).
       "1234",  # MySQL port
       "grr-test-db",  # GRR db name.
       "grr-test-user",  # GRR db user.
       "Y",  # Configure SSL.
       "key_file_path",
       "cert_file_path",
       "ca_cert_file_path",
   ]
   getpass_mock.return_value = "grr-test-password"  # DB password for GRR.
   cursor_mock = mock.Mock()
   cursor_mock.fetchone = mock.Mock(return_value=["have_ssl", "YES"])
   connect_mock.return_value = mock.Mock(spec=connections.Connection)
   connect_mock.return_value.cursor = mock.Mock(return_value=cursor_mock)
   config = grr_config.CONFIG.CopyConfig()
   config_updater_util.ConfigureMySQLDatastore(config)
   connect_mock.assert_called_once_with(
       host="localhost",
       port=1234,
       db="grr-test-db",
       user="******",
       passwd="grr-test-password",
       charset="utf8",
       ssl={
           "key": "key_file_path",
           "cert": "cert_file_path",
           "ca": "ca_cert_file_path",
       })
   self.assertEqual(config.writeback_data["Mysql.host"], "localhost")
   self.assertEqual(config.writeback_data["Mysql.port"], 1234)
   self.assertEqual(config.writeback_data["Mysql.database_name"],
                    "grr-test-db")
   self.assertEqual(config.writeback_data["Mysql.database_username"],
                    "grr-test-user")
   self.assertEqual(config.writeback_data["Mysql.database_password"],
                    "grr-test-password")
   self.assertEqual(config.writeback_data["Mysql.client_key_path"],
                    "key_file_path")
   self.assertEqual(config.writeback_data["Mysql.client_cert_path"],
                    "cert_file_path")
   self.assertEqual(config.writeback_data["Mysql.ca_cert_path"],
                    "ca_cert_file_path")