|
142 | 142 | rhsm_baseurl: 'https://katello01.example.com/pulp/repos', |
143 | 143 | } |
144 | 144 |
|
| 145 | + raw_help_data = <<-EOH |
| 146 | + usage: subscription-manager config [OPTIONS] |
| 147 | +
|
| 148 | +List, set, or remove the configuration parameters in use by this system |
| 149 | +
|
| 150 | +optional arguments: |
| 151 | + -h, --help show this help message and exit |
| 152 | + --list list the configuration for this system |
| 153 | + --remove REMOVE remove configuration entry by section.name |
| 154 | + --server.proxy_scheme SERVER.PROXY_SCHEME |
| 155 | + Section: server, Name: proxy_scheme |
| 156 | + --server.server_timeout SERVER.SERVER_TIMEOUT |
| 157 | + Section: server, Name: server_timeout |
| 158 | + --server.proxy_hostname SERVER.PROXY_HOSTNAME |
| 159 | + Section: server, Name: proxy_hostname |
| 160 | + --server.no_proxy SERVER.NO_PROXY |
| 161 | + Section: server, Name: no_proxy |
| 162 | + --server.insecure SERVER.INSECURE |
| 163 | + Section: server, Name: insecure |
| 164 | + EOH |
| 165 | + |
| 166 | + help_values = [ |
| 167 | + "server.proxy_scheme", |
| 168 | + "server.server_timeout", |
| 169 | + "server.proxy_hostname", |
| 170 | + "server.no_proxy", |
| 171 | + "server.insecure" |
| 172 | + ] |
| 173 | + |
145 | 174 | let(:resource) do |
146 | 175 | Puppet::Type.type(:rhsm_config).new(properties) |
147 | 176 | end |
|
241 | 270 | res.provider.set(server_port: 443) |
242 | 271 | res[:server_port] = 8080 |
243 | 272 | expect(res.provider).to receive(:exists?).and_call_original |
| 273 | + expect(res.provider).to receive(:config_help_options).and_return([ |
| 274 | + 'server.port','server.insecure' |
| 275 | + ]) |
244 | 276 | expect(res.provider).to receive(:build_config_parameters).with(:remove).and_call_original |
245 | 277 | expect(res.provider).to receive(:subscription_manager).with( |
246 | 278 | 'config', '--remove=server.insecure' |
|
452 | 484 | end |
453 | 485 | end |
454 | 486 |
|
| 487 | + describe 'config_help_options' do |
| 488 | + it 'returns nothing for an empty configuration' do |
| 489 | + resource = Puppet::Type.type(:rhsm_config).new( |
| 490 | + provider: provider, name: title, |
| 491 | + ) |
| 492 | + expect(provider.class).to receive(:subscription_manager).with(['config', '--help']).and_return('') |
| 493 | + expect(resource.provider.config_help_options()).to eq([]) |
| 494 | + end |
| 495 | + it 'returns expected values for a given configuration' do |
| 496 | + resource = Puppet::Type.type(:rhsm_config).new( |
| 497 | + provider: provider, name: title, |
| 498 | + ) |
| 499 | + expect(provider.class).to receive(:subscription_manager).with(['config', '--help']).and_return(raw_help_data) |
| 500 | + expect(resource.provider).to receive(:conf_help_parse).and_return(help_values) |
| 501 | + expect(resource.provider.config_help_options()).to eq(help_values) |
| 502 | + end |
| 503 | + end |
| 504 | + |
| 505 | + describe 'conf_help_parse' do |
| 506 | + it 'returns nothing for an empty configuration' do |
| 507 | + resource = Puppet::Type.type(:rhsm_config).new( |
| 508 | + provider: provider, name: title, |
| 509 | + ) |
| 510 | + expect(resource.provider.conf_help_parse('')).to eq([]) |
| 511 | + end |
| 512 | + it 'returns nothing for garbage' do |
| 513 | + resource = Puppet::Type.type(:rhsm_config).new( |
| 514 | + provider: provider, name: title, |
| 515 | + ) |
| 516 | + expect(resource.provider.conf_help_parse('asdlk;j12349567[[]]')).to eq([]) |
| 517 | + end |
| 518 | + help_values.each do |key| |
| 519 | + it "parse the #{key} option" do |
| 520 | + resource = Puppet::Type.type(:rhsm_config).new( |
| 521 | + provider: provider, name: title, |
| 522 | + ) |
| 523 | + expect(resource.provider.conf_help_parse(raw_help_data)).to include(key) |
| 524 | + end |
| 525 | + end |
| 526 | + end |
| 527 | + |
455 | 528 | describe 'build_config_parameters' do |
456 | 529 | it 'returns nothing when provider or title are the only parameters' do |
457 | 530 | resource = Puppet::Type.type(:rhsm_config).new( |
458 | 531 | provider: provider, name: title, |
459 | 532 | ) |
| 533 | + expect(resource.provider).to receive(:config_help_options).and_return(nil) |
460 | 534 | expect(resource.provider.build_config_parameters(:apply)).to eq( |
461 | 535 | apply: nil, remove: nil, |
462 | 536 | ) |
|
474 | 548 | expect(resource.provider).to receive(:resolve_value).with(:remove, :server_insecure, '').and_return(nil) |
475 | 549 | expect(resource.provider).to receive(:resolve_value).with(:remove, :server_port, '').and_return(nil) |
476 | 550 | expect(resource.provider).to receive(:resolve_value).with(:remove, :rhsm_ca_cert_dir, '').and_return(nil) |
| 551 | + expect(resource.provider).to receive(:config_help_options).and_return([ |
| 552 | + 'server.insecure', 'server.port', 'rhsm.ca_cert_dir' |
| 553 | + ]) |
477 | 554 | result = resource.provider.build_config_parameters(:remove) |
478 | 555 | expect(result).not_to eq(nil) |
479 | 556 | expect(result.keys.sort).to eq([:apply, :remove]) |
|
497 | 574 | binary_opt = Puppet::Type.type(:rhsm_config).binary_options[key] |
498 | 575 | value = (properties[key] == true) ? 1 : 0 |
499 | 576 | expect(resource.provider).to receive(:resolve_value).and_return(value) |
| 577 | + expect(resource.provider).to receive(:config_help_options).and_return([binary_opt]) |
500 | 578 | expect(resource.provider.build_config_parameters(:apply)[:apply]).to eq([ |
501 | 579 | "--#{binary_opt}=#{value}", |
502 | 580 | ]) |
503 | 581 | expect(resource.provider).to receive(:resolve_value).and_return(nil) |
| 582 | + expect(resource.provider).to receive(:config_help_options).and_return([binary_opt]) |
504 | 583 | expect(resource.provider.build_config_parameters(:remove)[:remove]).to eq(["--remove=#{binary_opt}"]) |
505 | 584 | else |
506 | 585 | text_opt = resource.class.text_options[key] |
507 | 586 | value = properties[key].to_s |
508 | 587 | expect(resource.provider).to receive(:resolve_value).and_call_original |
| 588 | + expect(resource.provider).to receive(:config_help_options).and_return([text_opt]) |
509 | 589 | expect(resource.provider.build_config_parameters(:apply)[:apply]).to eq(["--#{text_opt}=#{value}"]) |
510 | 590 | expect(resource.provider).to receive(:resolve_value).and_return(nil) |
| 591 | + expect(resource.provider).to receive(:config_help_options).and_return([text_opt]) |
511 | 592 | expect(resource.provider.build_config_parameters(:remove)[:remove]).to eq(["--remove=#{text_opt}"]) |
512 | 593 | end |
513 | 594 | end |
|
521 | 602 | resource[:server_insecure] = 'true' |
522 | 603 | resource.provider.set(server_port: nil) |
523 | 604 | resource.provider.set(rhsm_ca_cert_dir: '/etc/rhsm/ca/') |
| 605 | + expect(resource.provider).to receive(:config_help_options).and_return([ |
| 606 | + 'rhsm.ca_cert_dir', 'server.insecure', 'server.port' |
| 607 | + ]) |
524 | 608 | combo = resource.provider.build_config_parameters(:apply) |
525 | 609 | apply_expected = ['--rhsm.ca_cert_dir=/etc/rhsm/ca/', |
526 | 610 | '--server.insecure=0'].sort |
|
535 | 619 | resource.provider.set(server_insecure: false) |
536 | 620 | resource.provider.set(server_port: 443) |
537 | 621 | resource.provider.set(rhsm_ca_cert_dir: '/etc/rhsm/ca/') |
| 622 | + expect(resource.provider).to receive(:config_help_options).and_return([ |
| 623 | + 'server.port','rhsm.ca_cert_dir','server.insecure' |
| 624 | + ]) |
538 | 625 | apply = resource.provider.build_config_parameters(:apply) |
539 | 626 | expect(apply[:apply].sort!).to eq([ |
540 | 627 | '--server.port=443', '--rhsm.ca_cert_dir=/etc/rhsm/ca/', '--server.insecure=0' |
541 | 628 | ].sort!) |
542 | 629 | expect(apply[:remove]).to eq(nil) |
| 630 | + expect(resource.provider).to receive(:config_help_options).and_return([ |
| 631 | + 'server.port', 'rhsm.ca_cert_dir', 'server.insecure' |
| 632 | + ]) |
543 | 633 | remove = resource.provider.build_config_parameters(:remove) |
544 | 634 | expect(remove[:apply]).to eq(nil) |
545 | 635 | expect(remove[:remove].sort!).to eq([ |
|
554 | 644 | resource.provider.set(server_port: 443) |
555 | 645 | resource.provider.set(rhsm_ca_cert_dir: '/etc/rhsm/ca/') |
556 | 646 | resource.provider.class.defaults_to = [:server_port] |
| 647 | + expect(resource.provider).to receive(:config_help_options).and_return(['server.insecure']) |
557 | 648 | apply = resource.provider.build_config_parameters(:apply)[:apply] |
558 | 649 | expect(apply).to include('--server.insecure=0') |
559 | 650 | end |
| 651 | + it 'does skip unsupported options' do |
| 652 | + resource = Puppet::Type.type(:rhsm_config).new( |
| 653 | + provider: provider, name: title, |
| 654 | + ) |
| 655 | + resource.provider.set(server_insecure: false) |
| 656 | + resource.provider.set(server_port: 443) |
| 657 | + resource.provider.set(rhsm_ca_cert_dir: '/etc/rhsm/ca/') |
| 658 | + resource.provider.class.defaults_to = [:server_port] |
| 659 | + expect(resource.provider).to receive(:config_help_options).and_return([]) |
| 660 | + apply = resource.provider.build_config_parameters(:apply)[:apply] |
| 661 | + expect(apply).to eq(nil) |
| 662 | + end |
560 | 663 | end |
561 | 664 | end |
0 commit comments