@@ -23,8 +23,10 @@ package backup
2323import (
2424 "sync"
2525 "testing"
26+ "time"
2627
2728 "github.com/stretchr/testify/require"
29+ meta "k8s.io/apimachinery/pkg/apis/meta/v1"
2830 "k8s.io/apimachinery/pkg/util/uuid"
2931
3032 "github.com/arangodb/go-driver"
@@ -66,6 +68,45 @@ func Test_State_Ready_Success(t *testing.T) {
6668 compareBackupMeta (t , backupMeta , newObj )
6769}
6870
71+ func Test_State_Ready_With_Lifetime (t * testing.T ) {
72+ // Arrange
73+ handler , mock := newErrorsFakeHandler (mockErrorsArangoClientBackup {})
74+
75+ obj , deployment := newObjectSet (backupApi .ArangoBackupStateReady )
76+ obj .Spec .Lifetime = & meta.Duration {Duration : 5 * time .Second }
77+
78+ createResponse , err := mock .Create ()
79+ require .NoError (t , err )
80+
81+ backupMeta , err := mock .Get (createResponse .ID )
82+ require .NoError (t , err )
83+
84+ obj .Status .Backup = createBackupFromMeta (backupMeta , nil )
85+
86+ // Act
87+ createArangoDeployment (t , handler , deployment )
88+ createArangoBackup (t , handler , obj )
89+
90+ t .Run ("First iteration" , func (t * testing.T ) {
91+ require .NoError (t , handler .Handle (newItemFromBackup (operation .Update , obj )))
92+
93+ // Assert
94+ newObj := refreshArangoBackup (t , handler , obj )
95+ checkBackup (t , newObj , backupApi .ArangoBackupStateReady , true )
96+ compareBackupMeta (t , backupMeta , newObj )
97+ })
98+
99+ t .Run ("Second iteration once Lifetime is expired" , func (t * testing.T ) {
100+ time .Sleep (10 * time .Second )
101+ require .NoError (t , handler .Handle (newItemFromBackup (operation .Update , obj )))
102+
103+ // Assert
104+ newObj := refreshArangoBackup (t , handler , obj )
105+ checkBackup (t , newObj , backupApi .ArangoBackupStateDeleted , false )
106+ compareBackupMeta (t , backupMeta , newObj )
107+ })
108+ }
109+
69110func Test_State_Ready_Unavailable (t * testing.T ) {
70111 // Arrange
71112 handler , mock := newErrorsFakeHandler (mockErrorsArangoClientBackup {})
0 commit comments