text: # -*- coding: utf-8 -*-
  """
  unittests for terraform roster
  """
  # Import Python libs
  from __future__ import absolute_import, unicode_literals
  
  import os.path
  
  # Import Salt Libs
  import salt.config
  import salt.loader
  from salt.roster import terraform
  
  # Import Salt Testing Libs
  from tests.support.mixins import LoaderModuleMockMixin
  from tests.support.mock import patch
  from tests.support.runtests import RUNTIME_VARS
  from tests.support.unit import TestCase
  
  
  class TerraformTestCase(TestCase, LoaderModuleMockMixin):
      """
      Test cases for salt.roster.terraform
      """
  
      def setup_loader_modules(self):
          opts = salt.config.master_config(
              os.path.join(RUNTIME_VARS.TMP_CONF_DIR, "master")
          )
          utils = salt.loader.utils(opts, whitelist=["roster_matcher"])
          return {terraform: {"__utils__": utils, "__opts__": {}}}
  
      def test_default_output(self):
          """
          Test the output of a fixture tfstate file wich contains libvirt
          resources.
          """
          tfstate = os.path.join(
              os.path.dirname(__file__), "terraform.data", "terraform.tfstate"
          )
          pki_dir = os.path.abspath(
              os.path.join(os.path.dirname(__file__), "terraform.data")
          )
  
          with patch.dict(
              terraform.__opts__, {"roster_file": tfstate, "pki_dir": pki_dir}
          ):
              expected_result = {
                  "db0": {
                      "host": "192.168.122.174",
                      "user": "root",
                      "passwd": "dbpw",
                      "tty": True,
                      "priv": os.path.join(pki_dir, "ssh", "salt-ssh.rsa"),
                  },
                  "db1": {
                      "host": "192.168.122.190",
                      "user": "root",
                      "passwd": "dbpw",
                      "tty": True,
                      "priv": os.path.join(pki_dir, "ssh", "salt-ssh.rsa"),
                  },
                  "web0": {
                      "host": "192.168.122.106",
                      "user": "root",
                      "passwd": "linux",
                      "timeout": 22,
                      "priv": os.path.join(pki_dir, "ssh", "salt-ssh.rsa"),
                  },
                  "web1": {
                      "host": "192.168.122.235",
                      "user": "root",
                      "passwd": "linux",
                      "timeout": 22,
                      "priv": os.path.join(pki_dir, "ssh", "salt-ssh.rsa"),
                  },
              }
  
              ret = terraform.targets("*")
              self.assertDictEqual(expected_result, ret)
  
      def test_default_matching(self):
          """
          Test the output of a fixture tfstate file wich contains libvirt
          resources using matching
          """
          tfstate = os.path.join(
              os.path.dirname(__file__), "terraform.data", "terraform.tfstate"
          )
          pki_dir = os.path.abspath(
              os.path.join(os.path.dirname(__file__), "terraform.data")
          )
  
          with patch.dict(
              terraform.__opts__, {"roster_file": tfstate, "pki_dir": pki_dir}
          ):
              expected_result = {
                  "web0": {
                      "host": "192.168.122.106",
                      "user": "root",
                      "passwd": "linux",
                      "timeout": 22,
                      "priv": os.path.join(pki_dir, "ssh", "salt-ssh.rsa"),
                  },
                  "web1": {
                      "host": "192.168.122.235",
                      "user": "root",
                      "passwd": "linux",
                      "timeout": 22,
                      "priv": os.path.join(pki_dir, "ssh", "salt-ssh.rsa"),
                  },
              }
  
              ret = terraform.targets("*web*")
              self.assertDictEqual(expected_result, ret)
  