|
27 | 27 | } |
28 | 28 | ) |
29 | 29 |
|
| 30 | +const ( |
| 31 | + targetKey = "delete-me" |
| 32 | + keepKey = "keep-me" |
| 33 | +) |
| 34 | + |
30 | 35 | func TestName(t *testing.T) { |
31 | 36 | t.Parallel() |
32 | 37 |
|
@@ -601,56 +606,89 @@ func (s *cleanSuite) TestFailFetchNoRRSet() { |
601 | 606 | s.NoError(err) |
602 | 607 | } |
603 | 608 |
|
604 | | -func (s *cleanSuite) TestFailDeleteNoRRSet() { |
| 609 | +func (s *cleanSuite) TestCleanUp_RemovesOnlyKey_DeletesRRSet() { |
605 | 610 | s.setupCommonMocks() |
| 611 | + |
| 612 | + req := &v1alpha1.ChallengeRequest{ |
| 613 | + Config: configJson, |
| 614 | + Key: targetKey, |
| 615 | + } |
| 616 | + |
606 | 617 | rrset := stackitdnsclient_new.RecordSet{ |
607 | 618 | Id: toPtr("1234"), |
| 619 | + Records: &[]stackitdnsclient_new.Record{ |
| 620 | + {Content: toPtr(targetKey)}, |
| 621 | + }, |
608 | 622 | } |
| 623 | + |
609 | 624 | s.mockRRSetRepository.EXPECT(). |
610 | 625 | FetchRRSetForZone(gomock.Any(), gomock.Any(), gomock.Any()). |
611 | 626 | Return(&rrset, nil) |
| 627 | + |
| 628 | + // Because it was the only key, the slice becomes empty, so we expect a DeleteRRSet |
612 | 629 | s.mockRRSetRepository.EXPECT(). |
613 | 630 | DeleteRRSet(gomock.Any(), *rrset.Id). |
614 | | - Return(repository.ErrRRSetNotFound) |
| 631 | + Return(nil) |
615 | 632 |
|
616 | | - err := s.resolver.CleanUp(challengeRequest) |
| 633 | + err := s.resolver.CleanUp(req) |
617 | 634 | s.NoError(err) |
618 | 635 | } |
619 | 636 |
|
620 | | -func (s *cleanSuite) TestFailDeleteRRSet() { |
| 637 | +func (s *cleanSuite) TestCleanUp_RemovesOneKey_UpdatesRRSet() { |
621 | 638 | s.setupCommonMocks() |
| 639 | + |
| 640 | + req := &v1alpha1.ChallengeRequest{ |
| 641 | + Config: configJson, |
| 642 | + Key: targetKey, |
| 643 | + } |
| 644 | + |
622 | 645 | rrset := stackitdnsclient_new.RecordSet{ |
623 | 646 | Id: toPtr("1234"), |
| 647 | + Records: &[]stackitdnsclient_new.Record{ |
| 648 | + {Content: toPtr(targetKey)}, |
| 649 | + {Content: toPtr(keepKey)}, |
| 650 | + }, |
624 | 651 | } |
| 652 | + |
625 | 653 | s.mockRRSetRepository.EXPECT(). |
626 | 654 | FetchRRSetForZone(gomock.Any(), gomock.Any(), gomock.Any()). |
627 | 655 | Return(&rrset, nil) |
| 656 | + |
| 657 | + // Because one key remains, we expect an UpdateRRSet, NOT a DeleteRRSet |
628 | 658 | s.mockRRSetRepository.EXPECT(). |
629 | | - DeleteRRSet(gomock.Any(), *rrset.Id). |
630 | | - Return(fmt.Errorf("error deleting rr set")) |
| 659 | + UpdateRRSet(gomock.Any(), matchedBy(func(updated stackitdnsclient_new.RecordSet) bool { |
| 660 | + return updated.Records != nil && |
| 661 | + len(*updated.Records) == 1 && |
| 662 | + *(*updated.Records)[0].Content == keepKey |
| 663 | + })). |
| 664 | + Return(nil) |
631 | 665 |
|
632 | | - err := s.resolver.CleanUp(challengeRequest) |
633 | | - s.Error(err) |
634 | | - s.Containsf( |
635 | | - err.Error(), |
636 | | - "error deleting rr set", |
637 | | - "error message should contain error from rrSetRepository", |
638 | | - ) |
| 666 | + err := s.resolver.CleanUp(req) |
| 667 | + s.NoError(err) |
639 | 668 | } |
640 | 669 |
|
641 | | -func (s *cleanSuite) TestSuccessDeleteRRSet() { |
| 670 | +func (s *cleanSuite) TestCleanUp_KeyNotFound_DoesNothing() { |
642 | 671 | s.setupCommonMocks() |
| 672 | + |
| 673 | + req := &v1alpha1.ChallengeRequest{ |
| 674 | + Config: configJson, |
| 675 | + Key: targetKey, |
| 676 | + } |
| 677 | + |
643 | 678 | rrset := stackitdnsclient_new.RecordSet{ |
644 | 679 | Id: toPtr("1234"), |
| 680 | + Records: &[]stackitdnsclient_new.Record{ |
| 681 | + {Content: toPtr(keepKey)}, |
| 682 | + }, |
645 | 683 | } |
| 684 | + |
646 | 685 | s.mockRRSetRepository.EXPECT(). |
647 | 686 | FetchRRSetForZone(gomock.Any(), gomock.Any(), gomock.Any()). |
648 | 687 | Return(&rrset, nil) |
649 | | - s.mockRRSetRepository.EXPECT(). |
650 | | - DeleteRRSet(gomock.Any(), *rrset.Id). |
651 | | - Return(nil) |
652 | 688 |
|
653 | | - err := s.resolver.CleanUp(challengeRequest) |
| 689 | + // We do NOT expect DeleteRRSet or UpdateRRSet to be called. |
| 690 | + |
| 691 | + err := s.resolver.CleanUp(req) |
654 | 692 | s.NoError(err) |
655 | 693 | } |
656 | 694 |
|
|
0 commit comments