|
340 | 340 | )
|
341 | 341 | end
|
342 | 342 |
|
| 343 | + let(:team_metadata_add_maintainer) do |
| 344 | + Entitlements::Backend::GitHubTeam::Models::Team.new( |
| 345 | + team_id: 1001, |
| 346 | + team_name: "russian-blues", |
| 347 | + members: Set.new(%w[blackmanx ragamuffin MAINECOON]), |
| 348 | + ou: "ou=kittensinc,dc=github,dc=com", |
| 349 | + metadata: { |
| 350 | + "parent_team_name" => "cuddly-kittens", |
| 351 | + "team_maintainers" => "blackmanx,ragamuffin" |
| 352 | + } |
| 353 | + ) |
| 354 | + end |
| 355 | + let(:team_metadata_maintainer_old) do |
| 356 | + Entitlements::Backend::GitHubTeam::Models::Team.new( |
| 357 | + team_id: 1001, |
| 358 | + team_name: "russian-blues", |
| 359 | + members: Set.new(%w[blackmanx ragamuffin MAINECOON]), |
| 360 | + ou: "ou=kittensinc,dc=github,dc=com", |
| 361 | + metadata: { |
| 362 | + "parent_team_name" => "cuddly-kittens", |
| 363 | + "team_maintainers" => "ragamuffin" |
| 364 | + } |
| 365 | + ) |
| 366 | + end |
| 367 | + let(:team_metadata_remove_all_maintainers) do |
| 368 | + Entitlements::Backend::GitHubTeam::Models::Team.new( |
| 369 | + team_id: 1001, |
| 370 | + team_name: "russian-blues", |
| 371 | + members: Set.new(%w[blackmanx ragamuffin MAINECOON]), |
| 372 | + ou: "ou=kittensinc,dc=github,dc=com", |
| 373 | + metadata: { |
| 374 | + "parent_team_name" => "cuddly-kittens", |
| 375 | + } |
| 376 | + ) |
| 377 | + end |
| 378 | + let(:team_metadata_add_non_member_maintainer) do |
| 379 | + Entitlements::Backend::GitHubTeam::Models::Team.new( |
| 380 | + team_id: 1001, |
| 381 | + team_name: "russian-blues", |
| 382 | + members: Set.new(%w[blackmanx ragamuffin MAINECOON]), |
| 383 | + ou: "ou=kittensinc,dc=github,dc=com", |
| 384 | + metadata: { |
| 385 | + "parent_team_name" => "cuddly-kittens", |
| 386 | + "team_maintainers" => "krukow,ragamuffin" |
| 387 | + } |
| 388 | + ) |
| 389 | + end |
343 | 390 | let(:team_metadata_remove) do
|
344 | 391 | Entitlements::Backend::GitHubTeam::Models::Team.new(
|
345 | 392 | team_id: 1001,
|
|
401 | 448 | expect(result).to eq(true)
|
402 | 449 | end
|
403 | 450 |
|
| 451 | + it "returns true when there were metadata changes to add maintainer" do |
| 452 | + allow(subject).to receive(:read_team).with(team_metadata_add_maintainer).and_return(team_metadata_maintainer_old) |
| 453 | + expect(logger).to receive(:debug).with(/sync_team\(russian-blues=1001\): Maintainer members change found - From \["ragamuffin"\] to \["blackmanx", \"ragamuffin\"\]/) |
| 454 | + expect(subject).to receive(:add_user_to_team).with(user: "blackmanx", team: team_metadata_maintainer_old, role: "maintainer").and_return(true) |
| 455 | + expect(logger).to receive(:debug).with(/sync_team\(russian-blues=1001\): Added 0, removed 0/) |
| 456 | + result = subject.sync_team(team_metadata_add_maintainer, team_metadata_maintainer_old) |
| 457 | + expect(result).to eq(true) |
| 458 | + end |
| 459 | + |
| 460 | + it "returns false when there were metadata changes to remove ALL maintainers" do |
| 461 | + allow(subject).to receive(:read_team).with(team_metadata_remove_all_maintainers).and_return(team_metadata_maintainer_old) |
| 462 | + expect(logger).to receive(:debug).with(/sync_team\(russian-blues=1001\): IGNORING GitHub Team Maintainer DELETE/) |
| 463 | + expect(logger).to receive(:debug).with(/sync_team\(russian-blues=1001\): Added 0, removed 0/) |
| 464 | + result = subject.sync_team(team_metadata_remove_all_maintainers, team_metadata_maintainer_old) |
| 465 | + expect(result).to eq(false) |
| 466 | + end |
| 467 | + |
| 468 | + it "returns true when there were metadata changes to remove a maintainer" do |
| 469 | + allow(subject).to receive(:read_team).with(team_metadata_maintainer_old).and_return(team_metadata_add_maintainer) |
| 470 | + expect(logger).to receive(:debug).with(/sync_team\(russian-blues=1001\): Maintainer members change found - From \["blackmanx", "ragamuffin"\] to \["ragamuffin"\]/) |
| 471 | + expect(subject).to receive(:add_user_to_team).with(user: "blackmanx", team: team_metadata_maintainer_old, role: "member").and_return(true) |
| 472 | + expect(logger).to receive(:debug).with(/sync_team\(russian-blues=1001\): Added 0, removed 0/) |
| 473 | + result = subject.sync_team(team_metadata_maintainer_old, team_metadata_add_maintainer) |
| 474 | + expect(result).to eq(true) |
| 475 | + end |
| 476 | + |
| 477 | + it "returns false when there were metadata changes to add maintainer who is NOT in the team" do |
| 478 | + allow(subject).to receive(:read_team).with(team_metadata_add_non_member_maintainer).and_return(team_metadata_maintainer_old) |
| 479 | + expect(logger).to receive(:warn).with(/sync_team\(russian-blues=1001\): Maintainers must be a subset of team members. Desired maintainers: \["krukow"\] are not members. Ignoring./) |
| 480 | + expect(logger).to receive(:debug).with(/sync_team\(russian-blues=1001\): Textual change but no semantic change in maintainers. It is remains: \["ragamuffin\"\]./) |
| 481 | + expect(logger).to receive(:debug).with(/sync_team\(russian-blues=1001\): Added 0, removed 0/) |
| 482 | + result = subject.sync_team(team_metadata_add_non_member_maintainer, team_metadata_maintainer_old) |
| 483 | + expect(result).to eq(false) |
| 484 | + end |
| 485 | + |
404 | 486 | # TODO: I'm hard-coding a block for deletes, for now. I'm doing that by making sure we dont set the desired parent_team_id to nil for teams where it is already set
|
405 | 487 | it "returns false while deletes are prevented" do
|
406 | 488 | allow(subject).to receive(:read_team).with(team_metadata_add).and_return(team_metadata_remove)
|
|
0 commit comments