|
9 | 9 | let(:backend_config) { base_backend_config } |
10 | 10 | let(:base_backend_config) do |
11 | 11 | { |
12 | | - "org" => "kittensinc", |
13 | | - "token" => "CuteAndCuddlyKittens", |
14 | | - "type" => "github_org", |
15 | | - "base" => "ou=kittensinc,ou=GitHub,dc=github,dc=com" |
| 12 | + "org" => "kittensinc", |
| 13 | + "token" => "CuteAndCuddlyKittens", |
| 14 | + "type" => "github_org", |
| 15 | + "base" => "ou=kittensinc,ou=GitHub,dc=github,dc=com", |
| 16 | + "ignore_not_found" => false |
16 | 17 | } |
17 | 18 | end |
18 | 19 | let(:group_name) { "foo-githuborg" } |
|
98 | 99 | it "logs expected output and returns expected actions" do |
99 | 100 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
100 | 101 | .with("foo-githuborg", { |
101 | | - "base" => "ou=kittensinc,ou=GitHub,dc=github,dc=com", |
102 | | - "org" => "kittensinc", |
103 | | - "token" => "CuteAndCuddlyKittens" |
| 102 | + "base" => "ou=kittensinc,ou=GitHub,dc=github,dc=com", |
| 103 | + "org" => "kittensinc", |
| 104 | + "token" => "CuteAndCuddlyKittens", |
| 105 | + "ignore_not_found" => false |
104 | 106 | }).and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
105 | 107 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
106 | 108 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
179 | 181 | end |
180 | 182 |
|
181 | 183 | it "logs expected output and returns expected actions" do |
182 | | - allow(Entitlements::Data::Groups::Calculated).to receive(:read_all).with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 184 | + allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
| 185 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
183 | 186 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
184 | 187 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
185 | 188 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
263 | 266 | end |
264 | 267 |
|
265 | 268 | it "logs expected output and returns expected actions" do |
266 | | - allow(Entitlements::Data::Groups::Calculated).to receive(:read_all).with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 269 | + allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
| 270 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
267 | 271 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
268 | 272 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
269 | 273 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
328 | 332 |
|
329 | 333 | it "does not run actions" do |
330 | 334 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
331 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 335 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
332 | 336 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
333 | 337 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
334 | 338 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
374 | 378 |
|
375 | 379 | it "handles removals and role changes but does not invite" do |
376 | 380 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
377 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>%w[remove], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 381 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>%w[remove], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
378 | 382 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
379 | 383 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
380 | 384 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
437 | 441 |
|
438 | 442 | it "reports as a no-op" do |
439 | 443 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
440 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>%w[remove], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 444 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>%w[remove], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
441 | 445 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
442 | 446 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
443 | 447 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
486 | 490 |
|
487 | 491 | it "handles removals and role changes but does not invite" do |
488 | 492 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
489 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>%w[invite], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 493 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>%w[invite], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
490 | 494 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
491 | 495 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
492 | 496 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
555 | 559 |
|
556 | 560 | it "reports as a no-op" do |
557 | 561 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
558 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>%w[invite], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 562 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>%w[invite], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
559 | 563 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
560 | 564 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
561 | 565 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
591 | 595 | cache[:predictive_state] = { by_dn: { org1_admin_dn => { members: admins, metadata: nil }, org1_member_dn => { members:, metadata: nil } }, invalid: Set.new } |
592 | 596 |
|
593 | 597 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
594 | | - .with("foo-githuborg", { |
595 | | - "base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens" |
596 | | - }).and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
| 598 | + .with("foo-githuborg", { "base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
| 599 | + .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
597 | 600 |
|
598 | 601 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
599 | 602 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
663 | 666 |
|
664 | 667 | it "handles removals and role changes but does not invite" do |
665 | 668 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
666 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>[], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 669 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>[], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
667 | 670 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
668 | 671 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
669 | 672 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
726 | 729 |
|
727 | 730 | it "reports as a no-op" do |
728 | 731 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
729 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>[], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 732 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "features"=>[], "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
730 | 733 | .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
731 | 734 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_admin_dn).and_return(org1_admin_group) |
732 | 735 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(org1_member_dn).and_return(org1_member_group) |
|
837 | 840 | describe "#validate_github_org_ous!" do |
838 | 841 | it "raises if an admin or member group is missing" do |
839 | 842 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
840 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 843 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
841 | 844 | .and_return(Set.new(%w[member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
842 | 845 |
|
843 | 846 | github_double = instance_double(Entitlements::Backend::GitHubOrg::Provider) |
|
857 | 860 | dns = %w[admin member kittens cats].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" } |
858 | 861 |
|
859 | 862 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
860 | | - .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens"}) |
| 863 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
861 | 864 | .and_return(Set.new(dns)) |
862 | 865 |
|
863 | 866 | allow(Entitlements::Backend::GitHubOrg::Service).to receive(:new).and_return(service) |
|
897 | 900 |
|
898 | 901 | it "raises due to duplicate users" do |
899 | 902 | allow(Entitlements::Data::Groups::Calculated).to receive(:read_all) |
900 | | - .with("foo-githuborg", { |
901 | | - "base" => "ou=kittensinc,ou=GitHub,dc=github,dc=com", |
902 | | - "org" => "kittensinc", |
903 | | - "token" => "CuteAndCuddlyKittens" |
904 | | - }).and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
| 903 | + .with("foo-githuborg", {"base"=>"ou=kittensinc,ou=GitHub,dc=github,dc=com", "org"=>"kittensinc", "token"=>"CuteAndCuddlyKittens", "ignore_not_found"=>false}) |
| 904 | + .and_return(Set.new(%w[admin member].map { |cn| "cn=#{cn},ou=kittensinc,ou=GitHub,dc=github,dc=com" })) |
905 | 905 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(admin_dn).and_return(admin_group) |
906 | 906 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(member_dn).and_return(member_group) |
907 | 907 | allow(Entitlements::Data::Groups::Calculated).to receive(:read).with(member_dn).and_return(member_group) |
|
0 commit comments