def test_get_operator_indices(capsys, hostname): images = ["registry.io/index-image:4.5", "registry.io/index-image:4.6"] data = [{"path": image, "something": "else"} for image in images] ver = "4.5-4.6" org = "redhat" args = [ "dummy", "--pyxis-server", hostname, "--ocp-versions-range", ver, "--pyxis-ssl-crtfile", "/root/name.crt", "--pyxis-ssl-keyfile", "/root/name.key", "--organization", org, ] expected = json.dumps(data, sort_keys=True, indent=4, separators=(",", ": ")) with requests_mock.Mocker() as m: m.get( "{0}v1/operators/indices?ocp_versions_range={1}&organization={2}". format(hostname, ver, org), json={"data": data}, ) pyxis_ops.get_operator_indices_main(args) out, _ = capsys.readouterr() assert out == expected
def test_arg_parser_missing_ssl_option(mock_kerberos, mock_ssl, mock_client): bad_args = [ "dummy", "--pyxis-server", "https://pyxis.engineering.redhat.com/", "--ocp-versions-range", "4.5", "--pyxis-ssl-crtfile", "/root/name.crt", ] with pytest.raises(ValueError, match="Either Kerberos principal.*"): pyxis_ops.get_operator_indices_main(bad_args) bad_args2 = [ "dummy", "--pyxis-server", "https://pyxis.engineering.redhat.com/", "--ocp-versions-range", "4.5", "--pyxis-ssl-keyfile", "/root/name.key", ] with pytest.raises(ValueError, match="Either Kerberos principal.*"): pyxis_ops.get_operator_indices_main(bad_args2) mock_kerberos.assert_not_called() mock_ssl.assert_not_called()
def test_arg_parser_required_missing_server(mock_client): missing_server = ["dummy", "--ocp-versions-range", "4.5"] with pytest.raises(SystemExit) as system_error: pyxis_ops.get_operator_indices_main(missing_server) assert system_error.type == SystemExit assert system_error.value.code == 2
def test_arg_parser_required_missing_ocp_versions(mock_client): missing_ocp_versions = [ "dummy", "--pyxis-server", "https://pyxis.engineering.redhat.com/", ] with pytest.raises(SystemExit) as system_error: pyxis_ops.get_operator_indices_main(missing_ocp_versions) assert system_error.type == SystemExit assert system_error.value.code == 2
def test_arg_parser_required_missing_ocp_versions(mock_client, hostname): missing_ocp_versions = [ "dummy", "--pyxis-server", hostname, ] with pytest.raises(SystemExit) as system_error: pyxis_ops.get_operator_indices_main(missing_ocp_versions) assert system_error.type == SystemExit assert system_error.value.code == 2
def test_arg_parser_krb_verification(mock_kerberos, mock_ssl, mock_client, mock_json): good_args = [ "dummy", "--pyxis-server", "https://pyxis.engineering.redhat.com/", "--ocp-versions-range", "4.5", "--pyxis-krb-principal", "*****@*****.**", ] pyxis_ops.get_operator_indices_main(good_args) mock_kerberos.assert_called_once() mock_ssl.assert_not_called()
def test_arg_parser_no_verification(mock_kerberos, mock_ssl, mock_client, hostname): bad_args = [ "dummy", "--pyxis-server", hostname, "--ocp-versions-range", "4.5", ] with pytest.raises(ValueError, match="Either Kerberos principal.*"): pyxis_ops.get_operator_indices_main(bad_args) mock_kerberos.assert_not_called() mock_ssl.assert_not_called()
def test_arg_parser_ssl_verification(mock_kerberos, mock_ssl, mock_client, mock_json): good_args = [ "dummy", "--pyxis-server", "https://pyxis.engineering.redhat.com/", "--ocp-versions-range", "4.5", "--pyxis-ssl-crtfile", "/root/name.crt", "--pyxis-ssl-keyfile", "/root/name.key", ] pyxis_ops.get_operator_indices_main(good_args) mock_kerberos.assert_not_called() mock_ssl.assert_called_once()
def test_arg_parser_required(mock_client, mock_json, hostname): good_args = [ "dummy", "--pyxis-server", hostname, "--ocp-versions-range", "4.5", ] pyxis_ops.get_operator_indices_main(good_args) called_args, _ = mock_client.call_args assert called_args[0].ocp_versions_range == "4.5" assert called_args[0].pyxis_server == hostname assert called_args[0].organization is None assert called_args[0].pyxis_insecure is None assert called_args[0].pyxis_krb_ktfile is None assert called_args[0].pyxis_krb_principal is None assert called_args[0].pyxis_ssl_crtfile is None assert called_args[0].pyxis_ssl_keyfile is None
def test_arg_parser_both_verifications_krb_used(mock_kerberos, mock_ssl, mock_client, mock_json, hostname): good_args = [ "dummy", "--pyxis-server", hostname, "--ocp-versions-range", "4.5", "--pyxis-ssl-crtfile", "/root/name.crt", "--pyxis-ssl-keyfile", "/root/name.key", "--pyxis-krb-principal", "*****@*****.**", ] pyxis_ops.get_operator_indices_main(good_args) mock_kerberos.assert_called_once() mock_ssl.assert_not_called()