|
140 | 140 | expect(logger).to receive(:debug).with("Loaded cn=grumpy-cats,ou=kittensinc,ou=GitHub,dc=github,dc=fake (id=1001) with 3 member(s)") |
141 | 141 |
|
142 | 142 | allow(subject).to receive(:github).and_return(github) |
143 | | - expect(github).to receive(:graphql_team_data).with(team_identifier).and_return(members: old_members, team_id: 1001, parent_team_name: nil) |
| 143 | + expect(github).to receive(:graphql_team_data).with(team_identifier).and_return(members: old_members, team_id: 1001, parent_team_name: nil, roles: Hash[*old_members.collect { |u| [u, "member"] }.flatten]) |
144 | 144 |
|
145 | 145 | expect(subject.diff(group)).to eq(empty_result) |
146 | 146 | end |
|
153 | 153 | cache[:predictive_state] = { by_dn: { team_dn => { members: old_members, metadata: nil } }, invalid: Set.new } |
154 | 154 |
|
155 | 155 | allow(subject).to receive(:github).and_return(github) |
156 | | - expect(github).to receive(:graphql_team_data).with(team_identifier).and_return(members: old_members, team_id: 1001, parent_team_name: nil) |
| 156 | + expect(github).to receive(:graphql_team_data).with(team_identifier).and_return(members: old_members, team_id: 1001, parent_team_name: nil, roles: Hash[*old_members.collect { |u| [u, "member"] }.flatten]) |
157 | 157 |
|
158 | 158 | expect(subject.diff(group)).to eq(added: Set.new(%w[mainecoon]), removed: Set.new(%w[russianblue])) |
159 | 159 | end |
|
360 | 360 | metadata: { parent_team: "remove" } |
361 | 361 | ) |
362 | 362 | end |
| 363 | + |
| 364 | + it "diffs team maintainers change" do |
| 365 | + entitlements_group = Entitlements::Models::Group.new( |
| 366 | + dn: "cn=diff-cats,ou=Github,dc=github,dc=fake", |
| 367 | + members: Set.new(%w[cuddles fluffy morris WHISKERS].map { |u| "uid=#{u},ou=People,dc=kittens,dc=net" }), |
| 368 | + metadata: { "team_maintainers" => "cuddles" } |
| 369 | + ) |
| 370 | + |
| 371 | + github_team = Entitlements::Backend::GitHubTeam::Models::Team.new( |
| 372 | + team_id: 2222, |
| 373 | + team_name: "diff-cats", |
| 374 | + members: Set.new(%w[cuddles fluffy morris WHISKERS].map { |u| "uid=#{u},ou=People,dc=kittens,dc=net" }), |
| 375 | + ou: "ou=kittensinc,ou=GitHub,dc=github,dc=fake", |
| 376 | + metadata: { "team_maintainers" => "cuddles,fluffy" } |
| 377 | + ) |
| 378 | + |
| 379 | + result = subject.diff_existing_updated(entitlements_group, github_team) |
| 380 | + expect(result).to eq( |
| 381 | + added: Set.new, |
| 382 | + removed: Set.new, |
| 383 | + metadata: { team_maintainers: "change" } |
| 384 | + ) |
| 385 | + end |
| 386 | + |
| 387 | + it "diffs team maintainers add" do |
| 388 | + entitlements_group = Entitlements::Models::Group.new( |
| 389 | + dn: "cn=diff-cats,ou=Github,dc=github,dc=fake", |
| 390 | + members: Set.new(%w[cuddles fluffy morris WHISKERS].map { |u| "uid=#{u},ou=People,dc=kittens,dc=net" }), |
| 391 | + metadata: { } |
| 392 | + ) |
| 393 | + |
| 394 | + github_team = Entitlements::Backend::GitHubTeam::Models::Team.new( |
| 395 | + team_id: 2222, |
| 396 | + team_name: "diff-cats", |
| 397 | + members: Set.new(%w[cuddles fluffy morris WHISKERS].map { |u| "uid=#{u},ou=People,dc=kittens,dc=net" }), |
| 398 | + ou: "ou=kittensinc,ou=GitHub,dc=github,dc=fake", |
| 399 | + metadata: { "team_maintainers" => "cuddles,fluffy" } |
| 400 | + ) |
| 401 | + |
| 402 | + result = subject.diff_existing_updated(entitlements_group, github_team) |
| 403 | + expect(result).to eq( |
| 404 | + added: Set.new, |
| 405 | + removed: Set.new, |
| 406 | + metadata: { team_maintainers: "add" } |
| 407 | + ) |
| 408 | + end |
| 409 | + |
| 410 | + it "diffs team maintainers removal" do |
| 411 | + entitlements_group = Entitlements::Models::Group.new( |
| 412 | + dn: "cn=diff-cats,ou=Github,dc=github,dc=fake", |
| 413 | + members: Set.new(%w[cuddles fluffy morris WHISKERS].map { |u| "uid=#{u},ou=People,dc=kittens,dc=net" }), |
| 414 | + metadata: { "team_maintainers" => "cuddles,fluffy" } |
| 415 | + ) |
| 416 | + |
| 417 | + github_team = Entitlements::Backend::GitHubTeam::Models::Team.new( |
| 418 | + team_id: 2222, |
| 419 | + team_name: "diff-cats", |
| 420 | + members: Set.new(%w[cuddles fluffy morris WHISKERS].map { |u| "uid=#{u},ou=People,dc=kittens,dc=net" }), |
| 421 | + ou: "ou=kittensinc,ou=GitHub,dc=github,dc=fake", |
| 422 | + metadata: { } |
| 423 | + ) |
| 424 | + |
| 425 | + result = subject.diff_existing_updated(entitlements_group, github_team) |
| 426 | + expect(result).to eq( |
| 427 | + added: Set.new, |
| 428 | + removed: Set.new, |
| 429 | + metadata: { team_maintainers: "remove" } |
| 430 | + ) |
| 431 | + end |
363 | 432 | end |
364 | 433 |
|
365 | 434 | describe "#create_github_team_group" do |
|
0 commit comments