| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- //go:build integration
- package repository
- import "github.com/Wei-Shaw/sub2api/internal/service"
- func (s *ProxyExpirySuite) TestBackupReferencesAreDirectedAndShareable() {
- backupID := s.mkProxy("shared-backup", service.FallbackModeNone, nil, nil)
- firstID := s.mkProxy("first-primary", service.FallbackModeProxy, nil, &backupID)
- backup, err := s.repo.GetByID(s.ctx, backupID)
- s.Require().NoError(err)
- s.Require().Nil(backup.BackupProxyID, "assigning a backup must not overwrite its own configuration")
- secondID := s.mkProxy("second-primary", service.FallbackModeProxy, nil, &backupID)
- // Updating the shared backup must not clear its incoming references.
- backup.Name = "renamed-shared-backup"
- s.Require().NoError(s.repo.Update(s.ctx, backup))
- for _, id := range []int64{firstID, secondID} {
- primary, err := s.repo.GetByID(s.ctx, id)
- s.Require().NoError(err)
- s.Require().Equal(&backupID, primary.BackupProxyID)
- }
- backup, err = s.repo.GetByID(s.ctx, backupID)
- s.Require().NoError(err)
- s.Require().Nil(backup.BackupProxyID)
- }
- func (s *ProxyExpirySuite) TestBackupUpdateAndClearLeaveOtherReferencesIntact() {
- backupID := s.mkProxy("old-backup", service.FallbackModeNone, nil, nil)
- replacementID := s.mkProxy("new-backup", service.FallbackModeNone, nil, nil)
- firstID := s.mkProxy("primary-to-change", service.FallbackModeProxy, nil, &backupID)
- secondID := s.mkProxy("primary-to-keep", service.FallbackModeProxy, nil, &backupID)
- first, err := s.repo.GetByID(s.ctx, firstID)
- s.Require().NoError(err)
- first.BackupProxyID = &replacementID
- s.Require().NoError(s.repo.Update(s.ctx, first))
- first, err = s.repo.GetByID(s.ctx, firstID)
- s.Require().NoError(err)
- s.Require().Equal(&replacementID, first.BackupProxyID)
- first.BackupProxyID = nil
- first.FallbackMode = service.FallbackModeNone
- s.Require().NoError(s.repo.Update(s.ctx, first))
- first, err = s.repo.GetByID(s.ctx, firstID)
- s.Require().NoError(err)
- s.Require().Nil(first.BackupProxyID)
- second, err := s.repo.GetByID(s.ctx, secondID)
- s.Require().NoError(err)
- s.Require().Equal(&backupID, second.BackupProxyID)
- for _, id := range []int64{backupID, replacementID} {
- backup, err := s.repo.GetByID(s.ctx, id)
- s.Require().NoError(err)
- s.Require().Nil(backup.BackupProxyID)
- }
- }
- func (s *ProxyExpirySuite) TestBackupReferencesSupportDirectedChains() {
- lastID := s.mkProxy("chain-last", service.FallbackModeNone, nil, nil)
- middleID := s.mkProxy("chain-middle", service.FallbackModeProxy, nil, &lastID)
- firstID := s.mkProxy("chain-first", service.FallbackModeProxy, nil, &middleID)
- for _, pair := range [][2]int64{{firstID, middleID}, {middleID, lastID}} {
- primary, err := s.repo.GetByID(s.ctx, pair[0])
- s.Require().NoError(err)
- s.Require().Equal(&pair[1], primary.BackupProxyID)
- }
- last, err := s.repo.GetByID(s.ctx, lastID)
- s.Require().NoError(err)
- s.Require().Nil(last.BackupProxyID)
- }
|