Class: HybridPlatformsConductor::HpcPlugins::Test::DeployRemovesRootAccess

Inherits:
TestByService show all
Defined in:
lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb

Overview

Test that deploy removes root access

Constant Summary

Constants included from LoggerHelpers

LoggerHelpers::LEVELS_MODIFIERS, LoggerHelpers::LEVELS_TO_STDERR

Instance Attribute Summary

Attributes inherited from Test

#errors, #expected_failure, #name, #node, #platform

Instance Method Summary collapse

Methods inherited from TestByService

only_on_nodes

Methods inherited from Test

#assert_equal, #assert_match, #error, #executed, #executed?, #initialize, only_on_nodes, only_on_platforms, #to_s

Methods inherited from Plugin

extend_config_dsl_with, #initialize, valid?

Methods included from LoggerHelpers

#err, #init_loggers, #log_component=, #log_debug?, #log_level=, #out, #section, #set_loggers_format, #stderr_device, #stderr_device=, #stderr_displayed?, #stdout_device, #stdout_device=, #stdout_displayed?, #stdouts_to_s, #with_progress_bar

Constructor Details

This class inherits a constructor from HybridPlatformsConductor::Test

Instance Method Details

#test_for_nodeObject

Check my_test_plugin.rb.sample documentation for signature details.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb', line 14

def test_for_node
  @deployer.with_test_provisioned_instance(@config.tests_provisioner_id, @node, environment: 'deploy_removes_root_access', reuse_instance: log_debug?) do |deployer, instance|
    # Check that we can connect with root
    ssh_ok = false
    begin
      Net::SSH.start(instance.ip, 'root', password: 'root_pwd', auth_methods: ['password'], verify_host_key: :never) do |ssh|
        ssh_ok = ssh.exec!('echo Works').strip == 'Works'
      end
    rescue
    end
    assert_equal ssh_ok, true, 'Root does not have access from the empty image'
    if ssh_ok
      deployer.nbr_retries_on_error = 3
      deployer.deploy_on @node
      # As sshd is certainly being restarted, start and stop the container to reload it.
      deployer.restart @node
      # Check that we can't connect with root
      ssh_ok = false
      begin
        Net::SSH.start(instance.ip, 'root', password: 'root_pwd', auth_methods: ['password'], verify_host_key: :never) do |ssh|
          ssh_ok = ssh.exec!('echo Works').strip == 'Works'
        end
      rescue
      end
      assert_equal ssh_ok, false, 'Root can still connect on the image after deployment'
    end
  end
end