def test_oc_get_nodes(self, mock_get_nodes): ''' Test running 'oc get nodes (allowed) ''' node_list = '''NAME STATUS AGE ip-172-31-49-119.ec2.internal Ready,SchedulingDisabled 45d ip-172-31-49-14.ec2.internal Ready,SchedulingDisabled 45d ip-172-31-49-245.ec2.internal Ready,SchedulingDisabled 45d ip-172-31-50-220.ec2.internal Ready 45d ip-172-31-52-126.ec2.internal Ready,SchedulingDisabled 45d ip-172-31-55-174.ec2.internal Ready,SchedulingDisabled 45d ip-172-31-56-150.ec2.internal Ready,SchedulingDisabled 45d ip-172-31-57-154.ec2.internal Ready,SchedulingDisabled 45d ip-172-31-58-0.ec2.internal Ready 45d ip-172-31-60-174.ec2.internal Ready 45d ip-172-31-60-254.ec2.internal Ready,SchedulingDisabled 45d ip-172-31-61-118.ec2.internal Ready 45d ip-172-31-61-149.ec2.internal Ready 45d ip-172-31-61-94.ec2.internal Ready 45d ip-172-31-62-44.ec2.internal Ready,SchedulingDisabled 45d ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get nodes' dg = DevGet() mock_get_nodes.side_effect = [node_list] dg.main() assert mock_get_nodes.called
def test_oc_get_nodes_json(self, mock_get_nodes): ''' Test running oc get nodes -ojson (supported) ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get nodes -ndefault' dg = DevGet() mock_get_nodes.side_effect = ['json list of nodes '] dg.main() assert mock_get_nodes.called
def test_unsupported_command(self): ''' Test trying to run a command that isn't supported ''' os.environ['SSH_ORIGINAL_COMMAND'] = '/usr/bin/blah' dg = DevGet() with self.assertRaises(SystemExit) as cm: dg.main() self.assertEqual(cm.exception.code, 1)
def test_group_command_uname(self): ''' Test superperson membership in super_role (which allows 'uname') ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'uname' dg = DevGet() myfunc = MagicMock() myfunc.side_effect = ['Linux 4.x'] with patch.dict(dg._command_dict, {'uname': myfunc}): dg.main() assert myfunc.called
def test_invalid_param_value(self): ''' Test oc get pods -n-test ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get pods -n-test' with self.assertRaises(DevGetError): dg = DevGet() os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get pods -ntest-' with self.assertRaises(DevGetError): dg = DevGet()
def test_user_with_no_defined_roles(self, mock_rpm_qa): ''' Test user with no defined roles (ie only default role membership) ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'rpm -qa' sys.argv = ['devaccess_wrap.py', 'READ_SSH', 'noroleuser'] dg = DevGet() mock_rpm_qa.side_effect = ['rpm-4.13.0.1-1.fc25.x86_64'] dg.main() assert mock_rpm_qa.called
def test_oc_get_routes(self, mock_get_routes): ''' Test oc get routes -ndefault ''' route_list = '''NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD docker-registry registry.free-stg.openshift.com docker-registry <all> reencrypt None ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get routes -n default' dg = DevGet() mock_get_routes.side_effect = [route_list] dg.main() assert mock_get_routes.called
def test_param_without_value(self): ''' Test oc get pods -n (no actual namespace) ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get pods -n' with self.assertRaises(DevGetError): dg = DevGet() os.environ['SSH_ORIGINAL_COMMAND'] = 'oc logs pod -c' with self.assertRaises(DevGetError): dg = DevGet() os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get pods -o' with self.assertRaises(DevGetError): dg = DevGet()
def test_oc_get_pods(self, mock_get_pods): ''' Test oc get pods -ndefault ''' pod_list = '''NAME READY STATUS RESTARTS AGE docker-registry-10-ps647 1/1 Running 0 17d docker-registry-10-rx0zx 1/1 Running 1 18d oso-rhel7-zagg-web-1-k6hsk 1/1 Running 1 18d oso-rhel7-zagg-web-1-thn2z 1/1 Running 1 18d router-435-7xjn4 1/1 Running 0 17d router-435-zzx1x 1/1 Running 2 18d ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get pods -n default' dg = DevGet() mock_get_pods.side_effect = [pod_list] dg.main() assert mock_get_pods.called
def test_invalid_username(self): ''' Test invalid user name ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'test command' sys.argv = ['devaccess_wrap.py', 'READ_SSH', 'inval$d'] with self.assertRaises(DevGetError): dg = DevGet()
def test_params_with_same_value(self): ''' Test oc get pods -n test -o test (different params with same value) ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc get pods -n test -o test' dg = DevGet() assert dg._oc_cmd.normalized_cmd() == 'oc get pods -ntest -otest'
def test_leading_dash_param_single_token(self): ''' Test oc -n-blah (leading '-' as value of param) ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc -n-blah' with self.assertRaises(DevGetError): dg = DevGet()
def test_leading_dash_parameters(self): ''' Test oc -n -n (next token has leading '-') ''' os.environ['SSH_ORIGINAL_COMMAND'] = 'oc -n -n' with self.assertRaises(DevGetError): dg = DevGet()