2 Copyright (c) 2019 AT&T Intellectual Property.
3 Copyright (c) 2018-2019 Nokia.
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
9 http://www.apache.org/licenses/LICENSE-2.0
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
19 * This source code is part of the near-RT RIC (RAN Intelligent Controller)
20 * platform project (RICP).
31 "gerrit.o-ran-sc.org/r/ric-plt/sdlgo"
32 "github.com/stretchr/testify/assert"
33 "github.com/stretchr/testify/mock"
40 func (m *mockDB) SubscribeChannelDB(cb func(string, ...string), channelPrefix, eventSeparator string, channels ...string) {
41 m.Called(cb, channelPrefix, eventSeparator, channels)
44 func (m *mockDB) UnsubscribeChannelDB(channels ...string) {
48 func (m *mockDB) MSet(pairs ...interface{}) error {
53 func (m *mockDB) MSetMPub(channelsAndEvents []string, pairs ...interface{}) error {
54 a := m.Called(channelsAndEvents, pairs)
58 func (m *mockDB) MGet(keys []string) ([]interface{}, error) {
60 return a.Get(0).([]interface{}), a.Error(1)
63 func (m *mockDB) CloseDB() error {
68 func (m *mockDB) Del(keys []string) error {
73 func (m *mockDB) DelMPub(channelsAndEvents []string, keys []string) error {
74 a := m.Called(channelsAndEvents, keys)
78 func (m *mockDB) Keys(pattern string) ([]string, error) {
79 a := m.Called(pattern)
80 return a.Get(0).([]string), a.Error(1)
83 func (m *mockDB) SetIE(key string, oldData, newData interface{}) (bool, error) {
84 a := m.Called(key, oldData, newData)
85 return a.Bool(0), a.Error(1)
88 func (m *mockDB) SetIEPub(channelsAndEvents []string, key string, oldData, newData interface{}) (bool, error) {
89 a := m.Called(channelsAndEvents, key, oldData, newData)
90 return a.Bool(0), a.Error(1)
93 func (m *mockDB) SetNX(key string, data interface{}, expiration time.Duration) (bool, error) {
94 a := m.Called(key, data, expiration)
95 return a.Bool(0), a.Error(1)
98 func (m *mockDB) SetNXPub(channelsAndEvents []string, key string, data interface{}) (bool, error) {
99 a := m.Called(channelsAndEvents, key, data)
100 return a.Bool(0), a.Error(1)
103 func (m *mockDB) DelIE(key string, data interface{}) (bool, error) {
104 a := m.Called(key, data)
105 return a.Bool(0), a.Error(1)
108 func (m *mockDB) DelIEPub(channelsAndEvents []string, key string, data interface{}) (bool, error) {
109 a := m.Called(channelsAndEvents, key, data)
110 return a.Bool(0), a.Error(1)
113 func (m *mockDB) SAdd(key string, data ...interface{}) error {
114 a := m.Called(key, data)
118 func (m *mockDB) SRem(key string, data ...interface{}) error {
119 a := m.Called(key, data)
122 func (m *mockDB) SMembers(key string) ([]string, error) {
124 return a.Get(0).([]string), a.Error(1)
127 func (m *mockDB) SIsMember(key string, data interface{}) (bool, error) {
128 a := m.Called(key, data)
129 return a.Bool(0), a.Error(1)
132 func (m *mockDB) SCard(key string) (int64, error) {
134 return a.Get(0).(int64), a.Error(1)
137 func (m *mockDB) PTTL(key string) (time.Duration, error) {
139 return a.Get(0).(time.Duration), a.Error(1)
142 func (m *mockDB) PExpireIE(key string, data interface{}, expiration time.Duration) error {
143 a := m.Called(key, data, expiration)
147 func setup() (*mockDB, *sdlgo.SdlInstance) {
149 i := sdlgo.NewSdlInstanceForTest("namespace", m)
153 func verifySliceInOrder(a, b []string) bool {
154 for i, v := range a {
157 for j, x := range b {
158 if j%2 == 0 && x == v && a[i+1] == b[j+1] {
172 func TestSubscribeChannel(t *testing.T) {
175 expectedCB := func(channel string, events ...string) {}
176 expectedChannels := []string{"{namespace},channel1", "{namespace},channel2"}
178 m.On("SubscribeChannelDB", mock.AnythingOfType("func(string, ...string)"), "{namespace},", "___", expectedChannels).Return()
179 i.SubscribeChannel(expectedCB, "channel1", "channel2")
180 m.AssertExpectations(t)
183 func TestUnsubscribeChannel(t *testing.T) {
186 expectedChannels := []string{"{namespace},channel1", "{namespace},channel2"}
188 m.On("UnsubscribeChannelDB", expectedChannels).Return()
189 i.UnsubscribeChannel("channel1", "channel2")
190 m.AssertExpectations(t)
192 func TestGetOneKey(t *testing.T) {
195 mgetExpected := []string{"{namespace},key"}
196 mReturn := []interface{}{"somevalue"}
197 mReturnExpected := make(map[string]interface{})
198 mReturnExpected["key"] = "somevalue"
200 m.On("MGet", mgetExpected).Return(mReturn, nil)
201 retVal, err := i.Get([]string{"key"})
203 assert.Equal(t, mReturnExpected, retVal)
204 m.AssertExpectations(t)
207 func TestGetSeveralKeys(t *testing.T) {
210 mgetExpected := []string{"{namespace},key1", "{namespace},key2", "{namespace},key3"}
211 mReturn := []interface{}{"somevalue1", 2, "someothervalue"}
212 mReturnExpected := make(map[string]interface{})
213 mReturnExpected["key1"] = "somevalue1"
214 mReturnExpected["key2"] = 2
215 mReturnExpected["key3"] = "someothervalue"
217 m.On("MGet", mgetExpected).Return(mReturn, nil)
218 retVal, err := i.Get([]string{"key1", "key2", "key3"})
220 assert.Equal(t, mReturnExpected, retVal)
221 m.AssertExpectations(t)
224 func TestGetSeveralKeysSomeFail(t *testing.T) {
227 mgetExpected := []string{"{namespace},key1", "{namespace},key2", "{namespace},key3"}
228 mReturn := []interface{}{"somevalue1", nil, "someothervalue"}
229 mReturnExpected := make(map[string]interface{})
230 mReturnExpected["key1"] = "somevalue1"
231 mReturnExpected["key2"] = nil
232 mReturnExpected["key3"] = "someothervalue"
234 m.On("MGet", mgetExpected).Return(mReturn, nil)
235 retVal, err := i.Get([]string{"key1", "key2", "key3"})
237 assert.Equal(t, mReturnExpected, retVal)
238 m.AssertExpectations(t)
241 func TestGetKeyReturnError(t *testing.T) {
244 mgetExpected := []string{"{namespace},key"}
245 mReturn := []interface{}{nil}
246 mReturnExpected := make(map[string]interface{})
248 m.On("MGet", mgetExpected).Return(mReturn, errors.New("Some error"))
249 retVal, err := i.Get([]string{"key"})
250 assert.NotNil(t, err)
251 assert.Equal(t, mReturnExpected, retVal)
252 m.AssertExpectations(t)
255 func TestGetEmptyList(t *testing.T) {
258 mgetExpected := []string{}
260 retval, err := i.Get([]string{})
262 assert.Len(t, retval, 0)
263 m.AssertNotCalled(t, "MGet", mgetExpected)
266 func TestWriteOneKey(t *testing.T) {
269 msetExpected := []interface{}{"{namespace},key1", "data1"}
271 m.On("MSet", msetExpected).Return(nil)
272 err := i.Set("key1", "data1")
274 m.AssertExpectations(t)
277 func TestWriteByteSliceAsValue(t *testing.T) {
280 msetExpected := []interface{}{"{namespace},key1", []byte{1, 2, 3, 4, 5}}
282 m.On("MSet", msetExpected).Return(nil)
283 err := i.Set("key1", []byte{1, 2, 3, 4, 5})
285 m.AssertExpectations(t)
288 func TestWriteByteSliceAsValueMixed(t *testing.T) {
291 msetExpected := []interface{}{"{namespace},key1", []byte{1, 2, 3, 4, 5}, "{namespace},key2", "value2"}
293 m.On("MSet", msetExpected).Return(nil)
294 err := i.Set("key1", []byte{1, 2, 3, 4, 5}, []string{"key2", "value2"})
296 m.AssertExpectations(t)
299 func TestWriteByteArrayAsValue(t *testing.T) {
302 msetExpected := []interface{}{"{namespace},key1", [5]byte{1, 2, 3, 4, 5}}
304 m.On("MSet", msetExpected).Return(nil)
305 err := i.Set("key1", [5]byte{1, 2, 3, 4, 5})
307 m.AssertExpectations(t)
310 func TestWriteMapAsInput(t *testing.T) {
313 setExpected := []interface{}{"{namespace},key1", "string123",
314 "{namespace},key22", 12,
315 "{namespace},key333", []byte{1, 2, 3, 4, 5}}
316 inputMap := map[string]interface{}{
319 "key333": []byte{1, 2, 3, 4, 5},
322 m.On("MSet", mock.MatchedBy(func(input []interface{}) bool {
323 for _, v := range input {
325 for _, x := range setExpected {
326 found = reflect.DeepEqual(x, v)
338 err := i.Set(inputMap)
340 m.AssertExpectations(t)
343 func TestWriteMixed(t *testing.T) {
346 msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", "data2", "{namespace},key3", "data3"}
348 m.On("MSet", msetExpected).Return(nil)
349 err := i.Set("key1", "data1", []string{"key2", "data2"}, [2]string{"key3", "data3"})
351 m.AssertExpectations(t)
354 func TestWriteIncorrectMixed(t *testing.T) {
357 msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", "data2", "{namespace},key3", "data3"}
359 m.AssertNotCalled(t, "MSet", msetExpected)
360 err := i.Set("key1", []string{"key2", "data2"}, [2]string{"key3", "data3"})
361 assert.NotNil(t, err)
362 m.AssertExpectations(t)
364 func TestWriteIncorrectPairs(t *testing.T) {
367 msetExpected := []interface{}{}
369 m.AssertNotCalled(t, "MSet", msetExpected)
371 assert.NotNil(t, err)
372 m.AssertExpectations(t)
374 func TestWriteSeveralKeysSlice(t *testing.T) {
377 msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", 22}
379 m.On("MSet", msetExpected).Return(nil)
380 err := i.Set([]interface{}{"key1", "data1", "key2", 22})
382 m.AssertExpectations(t)
386 func TestWriteSeveralKeysIncorrectSlice(t *testing.T) {
389 msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", 22}
391 m.AssertNotCalled(t, "MSet", msetExpected)
392 err := i.Set([]interface{}{"key1", "data1", "key2"})
393 assert.NotNil(t, err)
394 m.AssertExpectations(t)
398 func TestWriteSeveralKeysArray(t *testing.T) {
401 msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", "data2"}
403 m.On("MSet", msetExpected).Return(nil)
404 err := i.Set([4]string{"key1", "data1", "key2", "data2"})
406 m.AssertExpectations(t)
409 func TestWriteSeveralKeysIncorrectArray(t *testing.T) {
412 msetExpected := []interface{}{}
414 m.AssertNotCalled(t, "MSet", msetExpected)
415 err := i.Set([3]string{"key1", "data1", "key2"})
416 assert.NotNil(t, err)
417 m.AssertExpectations(t)
420 func TestWriteFail(t *testing.T) {
423 msetExpected := []interface{}{"{namespace},key1", "data1"}
425 m.On("MSet", msetExpected).Return(errors.New("Some error"))
426 err := i.Set("key1", "data1")
427 assert.NotNil(t, err)
428 m.AssertExpectations(t)
431 func TestWriteEmptyList(t *testing.T) {
434 msetExpected := []interface{}{}
437 m.AssertNotCalled(t, "MSet", msetExpected)
440 func TestWriteAndPublishOneKeyOneChannel(t *testing.T) {
443 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
444 expectedKeyVal := []interface{}{"{namespace},key1", "data1"}
446 m.On("MSetMPub", expectedChannelAndEvent, expectedKeyVal).Return(nil)
447 m.AssertNotCalled(t, "MSet", expectedKeyVal)
448 err := i.SetAndPublish([]string{"channel", "event"}, "key1", "data1")
450 m.AssertExpectations(t)
453 func TestWriteAndPublishSeveralChannelsAndEvents(t *testing.T) {
456 expectedChannelsAndEvents := []string{"{namespace},channel1", "event1___event2",
457 "{namespace},channel2", "event3___event4"}
458 expectedKeyVal := []interface{}{"{namespace},key", "data"}
460 verifyChannelAndEvent := func(input []string) bool {
461 return verifySliceInOrder(input, expectedChannelsAndEvents)
463 m.On("MSetMPub", mock.MatchedBy(verifyChannelAndEvent), expectedKeyVal).Return(nil)
464 m.AssertNotCalled(t, "MSet", expectedKeyVal)
465 err := i.SetAndPublish([]string{"channel1", "event1", "channel2", "event3", "channel1", "event2", "channel2", "event4"},
468 m.AssertExpectations(t)
471 func TestWriteAndPublishOneKeyOneChannelTwoEvents(t *testing.T) {
474 expectedChannelAndEvents := []string{"{namespace},channel", "event1___event2"}
475 expectedKeyVal := []interface{}{"{namespace},key1", "data1"}
477 m.On("MSetMPub", expectedChannelAndEvents, expectedKeyVal).Return(nil)
478 m.AssertNotCalled(t, "MSet", expectedKeyVal)
479 err := i.SetAndPublish([]string{"channel", "event1", "channel", "event2"}, "key1", "data1")
481 m.AssertExpectations(t)
484 func TestWriteAndPublishIncorrectChannelAndEvent(t *testing.T) {
487 expectedChannelAndEvent := []string{}
488 expectedKeyVal := []interface{}{"{namespace},key1", "data1"}
489 m.AssertNotCalled(t, "MSetMPub", expectedChannelAndEvent, expectedKeyVal)
490 m.AssertNotCalled(t, "MSet", expectedKeyVal)
491 err := i.SetAndPublish([]string{"channel", "event1", "channel"}, "key1", "data1")
492 assert.NotNil(t, err)
493 m.AssertExpectations(t)
496 func TestWriteAndPublishNotAllowedCharactersInEvents(t *testing.T) {
499 expectedChannelAndEvent := []string{}
500 expectedKeyVal := []interface{}{"{namespace},key1", "data1"}
501 m.AssertNotCalled(t, "MSetMPub", expectedChannelAndEvent, expectedKeyVal)
502 m.AssertNotCalled(t, "MSet", expectedKeyVal)
503 err := i.SetAndPublish([]string{"channel", "event1___event2"}, "key1", "data1")
504 assert.NotNil(t, err)
505 m.AssertExpectations(t)
508 func TestWriteAndPublishNoData(t *testing.T) {
511 expectedChannelAndEvent := []string{}
512 expectedKeyVal := []interface{}{"key"}
514 m.AssertNotCalled(t, "MSetMPub", expectedChannelAndEvent, expectedKeyVal)
515 m.AssertNotCalled(t, "MSet", expectedKeyVal)
516 err := i.SetAndPublish([]string{"channel", "event"}, []interface{}{"key"})
517 assert.NotNil(t, err)
518 m.AssertExpectations(t)
521 func TestWriteAndPublishNoChannelEvent(t *testing.T) {
524 expectedKeyVal := []interface{}{"{namespace},key1", "data1"}
526 m.On("MSet", expectedKeyVal).Return(nil)
527 m.AssertNotCalled(t, "MSetMPub", "", "", expectedKeyVal)
528 err := i.SetAndPublish([]string{}, "key1", "data1")
530 m.AssertExpectations(t)
534 func TestRemoveAndPublishSuccessfully(t *testing.T) {
537 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
538 expectedKeys := []string{"{namespace},key1", "{namespace},key2"}
540 m.On("DelMPub", expectedChannelAndEvent, expectedKeys).Return(nil)
541 err := i.RemoveAndPublish([]string{"channel", "event"}, []string{"key1", "key2"})
543 m.AssertExpectations(t)
546 func TestRemoveAndPublishSeveralChannelsAndEventsSuccessfully(t *testing.T) {
549 expectedChannelAndEvent := []string{"{namespace},channel1", "event1___event2",
550 "{namespace},channel2", "event3___event4"}
551 expectedKeys := []string{"{namespace},key1", "{namespace},key2"}
553 verifyChannelAndEvent := func(input []string) bool {
554 return verifySliceInOrder(input, expectedChannelAndEvent)
556 m.On("DelMPub", mock.MatchedBy(verifyChannelAndEvent), expectedKeys).Return(nil)
557 err := i.RemoveAndPublish([]string{"channel1", "event1", "channel2", "event3",
558 "channel1", "event2", "channel2", "event4"},
559 []string{"key1", "key2"})
561 m.AssertExpectations(t)
563 func TestRemoveAndPublishFail(t *testing.T) {
566 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
567 expectedKeys := []string{"{namespace},key1", "{namespace},key2"}
569 m.On("DelMPub", expectedChannelAndEvent, expectedKeys).Return(errors.New("Some error"))
570 err := i.RemoveAndPublish([]string{"channel", "event"}, []string{"key1", "key2"})
571 assert.NotNil(t, err)
572 m.AssertExpectations(t)
575 func TestRemoveAndPublishNoChannels(t *testing.T) {
578 expectedKeys := []string{"{namespace},key1", "{namespace},key2"}
580 m.On("Del", expectedKeys).Return(nil)
581 err := i.RemoveAndPublish([]string{}, []string{"key1", "key2"})
583 m.AssertExpectations(t)
586 func TestRemoveAndPublishIncorrectChannel(t *testing.T) {
589 notExpectedChannelAndEvent := []string{}
590 notExpectedKeys := []string{"{namespace},key"}
592 m.AssertNotCalled(t, "DelMPub", notExpectedChannelAndEvent, notExpectedKeys)
593 m.AssertNotCalled(t, "Del", notExpectedKeys)
594 err := i.RemoveAndPublish([]string{"channel", "event", "channel2"}, []string{})
596 m.AssertExpectations(t)
599 func TestRemoveAndPublishNoKeys(t *testing.T) {
602 notExpectedChannelAndEvent := []string{}
603 notExpectedKeys := []string{"{namespace},key"}
605 m.AssertNotCalled(t, "DelMPub", notExpectedChannelAndEvent, notExpectedKeys)
606 m.AssertNotCalled(t, "Del", notExpectedKeys)
607 err := i.RemoveAndPublish([]string{"channel", "event"}, []string{})
609 m.AssertExpectations(t)
611 func TestRemoveAndPublishNoChannelsError(t *testing.T) {
614 expectedKeys := []string{"{namespace},key1", "{namespace},key2"}
616 m.On("Del", expectedKeys).Return(errors.New("Some error"))
617 err := i.RemoveAndPublish([]string{}, []string{"key1", "key2"})
618 assert.NotNil(t, err)
619 m.AssertExpectations(t)
621 func TestRemoveSuccessfully(t *testing.T) {
624 msetExpected := []string{"{namespace},key1", "{namespace},key2"}
625 m.On("Del", msetExpected).Return(nil)
627 err := i.Remove([]string{"key1", "key2"})
629 m.AssertExpectations(t)
632 func TestRemoveFail(t *testing.T) {
635 msetExpected := []string{"{namespace},key"}
636 m.On("Del", msetExpected).Return(errors.New("Some error"))
638 err := i.Remove([]string{"key"})
639 assert.NotNil(t, err)
640 m.AssertExpectations(t)
643 func TestRemoveEmptyList(t *testing.T) {
646 err := i.Remove([]string{})
648 m.AssertNotCalled(t, "Del", []string{})
651 func TestGetAllSuccessfully(t *testing.T) {
654 mKeysExpected := string("{namespace},*")
655 mReturnExpected := []string{"{namespace},key1", "{namespace},key2"}
656 expectedReturn := []string{"key1", "key2"}
657 m.On("Keys", mKeysExpected).Return(mReturnExpected, nil)
658 retVal, err := i.GetAll()
660 assert.Equal(t, expectedReturn, retVal)
661 m.AssertExpectations(t)
664 func TestGetAllFail(t *testing.T) {
667 mKeysExpected := string("{namespace},*")
668 mReturnExpected := []string{}
669 m.On("Keys", mKeysExpected).Return(mReturnExpected, errors.New("some error"))
670 retVal, err := i.GetAll()
671 assert.NotNil(t, err)
672 assert.Nil(t, retVal)
673 assert.Equal(t, len(retVal), 0)
674 m.AssertExpectations(t)
677 func TestGetAllReturnEmpty(t *testing.T) {
680 mKeysExpected := string("{namespace},*")
681 var mReturnExpected []string = nil
682 m.On("Keys", mKeysExpected).Return(mReturnExpected, nil)
683 retVal, err := i.GetAll()
685 assert.Nil(t, retVal)
686 assert.Equal(t, len(retVal), 0)
687 m.AssertExpectations(t)
691 func TestRemoveAllSuccessfully(t *testing.T) {
694 mKeysExpected := string("{namespace},*")
695 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
696 mDelExpected := mKeysReturn
697 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
698 m.On("Del", mDelExpected).Return(nil)
701 m.AssertExpectations(t)
704 func TestRemoveAllNoKeysFound(t *testing.T) {
707 mKeysExpected := string("{namespace},*")
708 var mKeysReturn []string = nil
709 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
710 m.AssertNumberOfCalls(t, "Del", 0)
713 m.AssertExpectations(t)
716 func TestRemoveAllKeysReturnError(t *testing.T) {
719 mKeysExpected := string("{namespace},*")
720 var mKeysReturn []string = nil
721 m.On("Keys", mKeysExpected).Return(mKeysReturn, errors.New("Some error"))
722 m.AssertNumberOfCalls(t, "Del", 0)
724 assert.NotNil(t, err)
725 m.AssertExpectations(t)
728 func TestRemoveAllDelReturnError(t *testing.T) {
731 mKeysExpected := string("{namespace},*")
732 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
733 mDelExpected := mKeysReturn
734 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
735 m.On("Del", mDelExpected).Return(errors.New("Some Error"))
737 assert.NotNil(t, err)
738 m.AssertExpectations(t)
741 func TestSetIfSuccessfullyOkStatus(t *testing.T) {
744 mSetIEExpectedKey := string("{namespace},key1")
745 mSetIEExpectedOldData := interface{}("olddata")
746 mSetIEExpectedNewData := interface{}("newdata")
747 m.On("SetIE", mSetIEExpectedKey, mSetIEExpectedOldData, mSetIEExpectedNewData).Return(true, nil)
748 status, err := i.SetIf("key1", "olddata", "newdata")
750 assert.True(t, status)
751 m.AssertExpectations(t)
754 func TestSetIfSuccessfullyNOKStatus(t *testing.T) {
757 mSetIEExpectedKey := string("{namespace},key1")
758 mSetIEExpectedOldData := interface{}("olddata")
759 mSetIEExpectedNewData := interface{}("newdata")
760 m.On("SetIE", mSetIEExpectedKey, mSetIEExpectedOldData, mSetIEExpectedNewData).Return(false, nil)
761 status, err := i.SetIf("key1", "olddata", "newdata")
763 assert.False(t, status)
764 m.AssertExpectations(t)
767 func TestSetIfFailure(t *testing.T) {
770 mSetIEExpectedKey := string("{namespace},key1")
771 mSetIEExpectedOldData := interface{}("olddata")
772 mSetIEExpectedNewData := interface{}("newdata")
773 m.On("SetIE", mSetIEExpectedKey, mSetIEExpectedOldData, mSetIEExpectedNewData).Return(false, errors.New("Some error"))
774 status, err := i.SetIf("key1", "olddata", "newdata")
775 assert.NotNil(t, err)
776 assert.False(t, status)
777 m.AssertExpectations(t)
780 func TestSetIfAndPublishSuccessfully(t *testing.T) {
783 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
784 expectedKey := "{namespace},key"
785 expectedOldData := interface{}("olddata")
786 expectedNewData := interface{}("newdata")
787 m.On("SetIEPub", expectedChannelAndEvent, expectedKey, expectedOldData, expectedNewData).Return(true, nil)
788 status, err := i.SetIfAndPublish([]string{"channel", "event"}, "key", "olddata", "newdata")
790 assert.True(t, status)
791 m.AssertExpectations(t)
794 func TestSetIfAndPublishIncorrectChannelAndEvent(t *testing.T) {
797 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
798 expectedKey := "{namespace},key"
799 expectedOldData := interface{}("olddata")
800 expectedNewData := interface{}("newdata")
801 m.AssertNotCalled(t, "SetIEPub", expectedChannelAndEvent, expectedKey, expectedOldData, expectedNewData)
802 m.AssertNotCalled(t, "SetIE", expectedKey, expectedOldData, expectedNewData)
803 status, err := i.SetIfAndPublish([]string{"channel", "event1", "channel"}, "key", "olddata", "newdata")
804 assert.NotNil(t, err)
805 assert.False(t, status)
806 m.AssertExpectations(t)
808 func TestSetIfAndPublishNOKStatus(t *testing.T) {
811 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
812 expectedKey := "{namespace},key"
813 expectedOldData := interface{}("olddata")
814 expectedNewData := interface{}("newdata")
815 m.On("SetIEPub", expectedChannelAndEvent, expectedKey, expectedOldData, expectedNewData).Return(false, nil)
816 status, err := i.SetIfAndPublish([]string{"channel", "event"}, "key", "olddata", "newdata")
818 assert.False(t, status)
819 m.AssertExpectations(t)
822 func TestSetIfAndPublishNoChannels(t *testing.T) {
825 expectedKey := "{namespace},key"
826 expectedOldData := interface{}("olddata")
827 expectedNewData := interface{}("newdata")
828 m.On("SetIE", expectedKey, expectedOldData, expectedNewData).Return(true, nil)
829 status, err := i.SetIfAndPublish([]string{}, "key", "olddata", "newdata")
831 assert.True(t, status)
832 m.AssertExpectations(t)
835 func TestSetIfNotExistsAndPublishSuccessfully(t *testing.T) {
838 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
839 expectedKey := "{namespace},key"
840 expectedData := interface{}("data")
842 m.On("SetNXPub", expectedChannelAndEvent, expectedKey, expectedData).Return(true, nil)
843 status, err := i.SetIfNotExistsAndPublish([]string{"channel", "event"}, "key", "data")
845 assert.True(t, status)
846 m.AssertExpectations(t)
849 func TestSetIfNotExistsAndPublishSeveralEvents(t *testing.T) {
852 expectedChannelAndEvent := []string{"{namespace},channel", "event1___event2"}
853 expectedKey := "{namespace},key"
854 expectedData := interface{}("data")
856 m.On("SetNXPub", expectedChannelAndEvent, expectedKey, expectedData).Return(true, nil)
857 status, err := i.SetIfNotExistsAndPublish([]string{"channel", "event1", "channel", "event2"}, "key", "data")
859 assert.True(t, status)
860 m.AssertExpectations(t)
863 func TestSetIfNotExistsAndPublishNoChannels(t *testing.T) {
866 expectedKey := "{namespace},key"
867 expectedData := interface{}("data")
869 m.On("SetNX", expectedKey, expectedData, time.Duration(0)).Return(true, nil)
870 status, err := i.SetIfNotExistsAndPublish([]string{}, "key", "data")
872 assert.True(t, status)
873 m.AssertExpectations(t)
876 func TestSetIfNotExistsAndPublishFail(t *testing.T) {
879 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
880 expectedKey := "{namespace},key"
881 expectedData := interface{}("data")
883 m.On("SetNXPub", expectedChannelAndEvent, expectedKey, expectedData).Return(false, nil)
884 status, err := i.SetIfNotExistsAndPublish([]string{"channel", "event"}, "key", "data")
886 assert.False(t, status)
887 m.AssertExpectations(t)
890 func TestSetIfNotExistsAndPublishIncorrectChannels(t *testing.T) {
893 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
894 expectedKey := "{namespace},key"
895 expectedData := interface{}("data")
897 m.AssertNotCalled(t, "SetNXPub", expectedChannelAndEvent, expectedKey, expectedData)
898 m.AssertNotCalled(t, "SetNX", expectedKey, expectedData, 0)
899 status, err := i.SetIfNotExistsAndPublish([]string{"channel", "event", "channel2"}, "key", "data")
900 assert.NotNil(t, err)
901 assert.False(t, status)
902 m.AssertExpectations(t)
905 func TestSetIfNotExistsAndPublishError(t *testing.T) {
908 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
909 expectedKey := "{namespace},key"
910 expectedData := interface{}("data")
912 m.On("SetNXPub", expectedChannelAndEvent, expectedKey, expectedData).Return(false, errors.New("Some error"))
913 status, err := i.SetIfNotExistsAndPublish([]string{"channel", "event"}, "key", "data")
914 assert.NotNil(t, err)
915 assert.False(t, status)
916 m.AssertExpectations(t)
919 func TestSetIfNotExistsSuccessfullyOkStatus(t *testing.T) {
922 mSetNXExpectedKey := string("{namespace},key1")
923 mSetNXExpectedData := interface{}("data")
924 m.On("SetNX", mSetNXExpectedKey, mSetNXExpectedData, time.Duration(0)).Return(true, nil)
925 status, err := i.SetIfNotExists("key1", "data")
927 assert.True(t, status)
928 m.AssertExpectations(t)
931 func TestSetIfNotExistsSuccessfullyNOKStatus(t *testing.T) {
934 mSetNXExpectedKey := string("{namespace},key1")
935 mSetNXExpectedData := interface{}("data")
936 m.On("SetNX", mSetNXExpectedKey, mSetNXExpectedData, time.Duration(0)).Return(false, nil)
937 status, err := i.SetIfNotExists("key1", "data")
939 assert.False(t, status)
940 m.AssertExpectations(t)
943 func TestSetIfNotExistsFailure(t *testing.T) {
946 mSetNXExpectedKey := string("{namespace},key1")
947 mSetNXExpectedData := interface{}("data")
948 m.On("SetNX", mSetNXExpectedKey, mSetNXExpectedData, time.Duration(0)).Return(false, errors.New("Some error"))
949 status, err := i.SetIfNotExists("key1", "data")
950 assert.NotNil(t, err)
951 assert.False(t, status)
952 m.AssertExpectations(t)
955 func TestRemoveIfAndPublishSuccessfully(t *testing.T) {
958 expectedChannelAndEvent := []string{"{namespace},channel", "event1___event2"}
959 expectedKey := "{namespace},key"
960 expectedValue := interface{}("data")
962 m.On("DelIEPub", expectedChannelAndEvent, expectedKey, expectedValue).Return(true, nil)
963 status, err := i.RemoveIfAndPublish([]string{"channel", "event1", "channel", "event2"}, "key", "data")
965 assert.True(t, status)
966 m.AssertExpectations(t)
969 func TestRemoveIfAndPublishNok(t *testing.T) {
972 expectedChannelAndEvent := []string{"{namespace},channel", "event1___event2"}
973 expectedKey := "{namespace},key"
974 expectedValue := interface{}("data")
976 m.On("DelIEPub", expectedChannelAndEvent, expectedKey, expectedValue).Return(false, nil)
977 status, err := i.RemoveIfAndPublish([]string{"channel", "event1", "channel", "event2"}, "key", "data")
979 assert.False(t, status)
980 m.AssertExpectations(t)
983 func TestRemoveIfAndPublishError(t *testing.T) {
986 expectedChannelAndEvent := []string{"{namespace},channel", "event1___event2"}
987 expectedKey := "{namespace},key"
988 expectedValue := interface{}("data")
990 m.On("DelIEPub", expectedChannelAndEvent, expectedKey, expectedValue).Return(false, errors.New("Some error"))
991 status, err := i.RemoveIfAndPublish([]string{"channel", "event1", "channel", "event2"}, "key", "data")
992 assert.NotNil(t, err)
993 assert.False(t, status)
994 m.AssertExpectations(t)
997 func TestRemoveIfAndPublishIncorrectChannel(t *testing.T) {
1000 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
1001 expectedKey := "{namespace},key"
1002 expectedValue := interface{}("data")
1004 m.AssertNotCalled(t, "DelIEPub", expectedChannelAndEvent, expectedKey, expectedValue)
1005 m.AssertNotCalled(t, "DelIE", expectedKey, expectedValue)
1006 status, err := i.RemoveIfAndPublish([]string{"channel", "event1", "channel"}, "key", "data")
1007 assert.NotNil(t, err)
1008 assert.False(t, status)
1009 m.AssertExpectations(t)
1012 func TestRemoveIfAndPublishNoChannels(t *testing.T) {
1015 expectedKey := "{namespace},key"
1016 expectedValue := interface{}("data")
1018 m.On("DelIE", expectedKey, expectedValue).Return(true, nil)
1019 status, err := i.RemoveIfAndPublish([]string{}, "key", "data")
1021 assert.True(t, status)
1022 m.AssertExpectations(t)
1025 func TestRemoveIfSuccessfullyOkStatus(t *testing.T) {
1028 mDelIEExpectedKey := string("{namespace},key1")
1029 mDelIEExpectedData := interface{}("data")
1030 m.On("DelIE", mDelIEExpectedKey, mDelIEExpectedData).Return(true, nil)
1031 status, err := i.RemoveIf("key1", "data")
1033 assert.True(t, status)
1034 m.AssertExpectations(t)
1037 func TestRemoveIfSuccessfullyNOKStatus(t *testing.T) {
1040 mDelIEExpectedKey := string("{namespace},key1")
1041 mDelIEExpectedData := interface{}("data")
1042 m.On("DelIE", mDelIEExpectedKey, mDelIEExpectedData).Return(false, nil)
1043 status, err := i.RemoveIf("key1", "data")
1045 assert.False(t, status)
1046 m.AssertExpectations(t)
1049 func TestRemoveIfFailure(t *testing.T) {
1052 mDelIEExpectedKey := string("{namespace},key1")
1053 mDelIEExpectedData := interface{}("data")
1054 m.On("DelIE", mDelIEExpectedKey, mDelIEExpectedData).Return(true, errors.New("Some error"))
1055 status, err := i.RemoveIf("key1", "data")
1056 assert.NotNil(t, err)
1057 assert.False(t, status)
1058 m.AssertExpectations(t)
1061 func TestRemoveAllAndPublishSuccessfully(t *testing.T) {
1064 mKeysExpected := string("{namespace},*")
1065 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
1066 mDelExpected := mKeysReturn
1067 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
1068 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
1069 m.On("DelMPub", expectedChannelAndEvent, mDelExpected).Return(nil)
1070 err := i.RemoveAllAndPublish([]string{"channel", "event"})
1072 m.AssertExpectations(t)
1075 func TestRemoveAllAndPublishKeysReturnError(t *testing.T) {
1078 mKeysExpected := string("{namespace},*")
1079 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
1080 mDelExpected := mKeysReturn
1081 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
1082 m.On("Keys", mKeysExpected).Return(mKeysReturn, errors.New("Some error"))
1083 m.AssertNotCalled(t, "DelMPub", expectedChannelAndEvent, mDelExpected)
1084 err := i.RemoveAllAndPublish([]string{"channel", "event"})
1085 assert.NotNil(t, err)
1086 m.AssertExpectations(t)
1089 func TestRemoveAllAndPublishKeysDelReturnsError(t *testing.T) {
1092 mKeysExpected := string("{namespace},*")
1093 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
1094 mDelExpected := mKeysReturn
1095 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
1096 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
1097 m.On("DelMPub", expectedChannelAndEvent, mDelExpected).Return(errors.New("Some error"))
1098 err := i.RemoveAllAndPublish([]string{"channel", "event"})
1099 assert.NotNil(t, err)
1100 m.AssertExpectations(t)
1103 func TestRemoveAllAndPublishKeysEventsWithIllegalCharacters(t *testing.T) {
1106 mKeysExpected := string("{namespace},*")
1107 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
1108 mDelExpected := mKeysReturn
1109 expectedChannelAndEvent := []string{"{namespace},channel", "event"}
1110 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
1111 m.AssertNotCalled(t, "DelMPub", expectedChannelAndEvent, mDelExpected)
1112 err := i.RemoveAllAndPublish([]string{"channel", "event___anotherEvent"})
1113 assert.NotNil(t, err)
1114 m.AssertExpectations(t)
1118 func TestRemoveAllAndPublishNoChannels(t *testing.T) {
1121 mKeysExpected := string("{namespace},*")
1122 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
1123 mDelExpected := mKeysReturn
1124 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
1125 m.On("Del", mDelExpected).Return(nil)
1126 m.AssertNotCalled(t, "DelMPub", "", "", mDelExpected)
1127 err := i.RemoveAllAndPublish([]string{})
1129 m.AssertExpectations(t)
1132 func TestRemoveAllAndPublishIncorrectChannel(t *testing.T) {
1135 mKeysExpected := string("{namespace},*")
1136 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
1137 mDelExpected := mKeysReturn
1138 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
1139 m.AssertNotCalled(t, "DelMPub", "", "", mDelExpected)
1140 err := i.RemoveAllAndPublish([]string{"channel", "event", "channel2"})
1141 assert.NotNil(t, err)
1142 m.AssertExpectations(t)
1146 func TestAddMemberSuccessfully(t *testing.T) {
1149 groupExpected := string("{namespace},group")
1150 membersExpected := []interface{}{"member1", "member2"}
1152 m.On("SAdd", groupExpected, membersExpected).Return(nil)
1154 err := i.AddMember("group", "member1", "member2")
1156 m.AssertExpectations(t)
1159 func TestAddMemberFail(t *testing.T) {
1162 groupExpected := string("{namespace},group")
1163 membersExpected := []interface{}{"member1", "member2"}
1165 m.On("SAdd", groupExpected, membersExpected).Return(errors.New("Some error"))
1167 err := i.AddMember("group", "member1", "member2")
1168 assert.NotNil(t, err)
1169 m.AssertExpectations(t)
1171 func TestRemoveMemberSuccessfully(t *testing.T) {
1174 groupExpected := string("{namespace},group")
1175 membersExpected := []interface{}{"member1", "member2"}
1177 m.On("SRem", groupExpected, membersExpected).Return(nil)
1179 err := i.RemoveMember("group", "member1", "member2")
1181 m.AssertExpectations(t)
1184 func TestRemoveMemberFail(t *testing.T) {
1187 groupExpected := string("{namespace},group")
1188 membersExpected := []interface{}{"member1", "member2"}
1190 m.On("SRem", groupExpected, membersExpected).Return(errors.New("Some error"))
1192 err := i.RemoveMember("group", "member1", "member2")
1193 assert.NotNil(t, err)
1194 m.AssertExpectations(t)
1197 func TestRemoveGroupSuccessfully(t *testing.T) {
1200 groupExpected := []string{"{namespace},group"}
1202 m.On("Del", groupExpected).Return(nil)
1204 err := i.RemoveGroup("group")
1206 m.AssertExpectations(t)
1208 func TestRemoveGroupFail(t *testing.T) {
1211 groupExpected := []string{"{namespace},group"}
1213 m.On("Del", groupExpected).Return(errors.New("Some error"))
1215 err := i.RemoveGroup("group")
1216 assert.NotNil(t, err)
1217 m.AssertExpectations(t)
1220 func TestGetMembersSuccessfully(t *testing.T) {
1223 groupExpected := "{namespace},group"
1224 returnExpected := []string{"member1", "member2"}
1226 m.On("SMembers", groupExpected).Return(returnExpected, nil)
1228 result, err := i.GetMembers("group")
1230 assert.Equal(t, result, returnExpected)
1231 m.AssertExpectations(t)
1233 func TestGetMembersFail(t *testing.T) {
1236 groupExpected := "{namespace},group"
1237 returnExpected := []string{"member1", "member2"}
1239 m.On("SMembers", groupExpected).Return(returnExpected, errors.New("Some error"))
1241 result, err := i.GetMembers("group")
1242 assert.NotNil(t, err)
1243 assert.Equal(t, []string{}, result)
1244 m.AssertExpectations(t)
1247 func TestIsMemberSuccessfullyIsMember(t *testing.T) {
1250 groupExpected := "{namespace},group"
1251 memberExpected := "member"
1253 m.On("SIsMember", groupExpected, memberExpected).Return(true, nil)
1255 result, err := i.IsMember("group", "member")
1257 assert.True(t, result)
1258 m.AssertExpectations(t)
1260 func TestIsMemberSuccessfullyIsNotMember(t *testing.T) {
1263 groupExpected := "{namespace},group"
1264 memberExpected := "member"
1266 m.On("SIsMember", groupExpected, memberExpected).Return(false, nil)
1268 result, err := i.IsMember("group", "member")
1270 assert.False(t, result)
1271 m.AssertExpectations(t)
1273 func TestIsMemberFailure(t *testing.T) {
1276 groupExpected := "{namespace},group"
1277 memberExpected := "member"
1279 m.On("SIsMember", groupExpected, memberExpected).Return(true, errors.New("Some error"))
1281 result, err := i.IsMember("group", "member")
1282 assert.NotNil(t, err)
1283 assert.False(t, result)
1284 m.AssertExpectations(t)
1287 func TestGroupSizeSuccessfully(t *testing.T) {
1290 var expectedSize int64
1292 groupExpected := "{namespace},group"
1294 m.On("SCard", groupExpected).Return(expectedSize, nil)
1296 result, err := i.GroupSize("group")
1298 assert.Equal(t, expectedSize, result)
1299 m.AssertExpectations(t)
1301 func TestGroupSizeFail(t *testing.T) {
1304 var expectedSize int64
1306 groupExpected := "{namespace},group"
1308 m.On("SCard", groupExpected).Return(expectedSize, errors.New("Some error"))
1310 result, err := i.GroupSize("group")
1311 assert.NotNil(t, err)
1312 assert.Equal(t, int64(0), result)
1313 m.AssertExpectations(t)
1316 func TestLockResourceSuccessfully(t *testing.T) {
1319 resourceExpected := "{namespace},resource"
1320 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, nil)
1322 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{})
1324 assert.NotNil(t, lock)
1325 m.AssertExpectations(t)
1328 func TestLockResourceFailure(t *testing.T) {
1331 resourceExpected := "{namespace},resource"
1332 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, errors.New("Some error"))
1334 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{})
1335 assert.NotNil(t, err)
1337 m.AssertExpectations(t)
1340 func TestLockResourceTrySeveralTimesSuccessfully(t *testing.T) {
1343 resourceExpected := "{namespace},resource"
1344 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(false, nil).Once()
1345 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, nil).Once()
1347 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{
1351 assert.NotNil(t, lock)
1352 m.AssertExpectations(t)
1355 func TestLockResourceTrySeveralTimesFailure(t *testing.T) {
1358 resourceExpected := "{namespace},resource"
1359 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(false, nil).Once()
1360 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, errors.New("Some error")).Once()
1362 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{
1365 assert.NotNil(t, err)
1367 m.AssertExpectations(t)
1370 func TestLockResourceTrySeveralTimesUnableToGetResource(t *testing.T) {
1373 resourceExpected := "{namespace},resource"
1374 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(false, nil).Once()
1375 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(false, nil).Once()
1377 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{
1380 assert.NotNil(t, err)
1381 assert.EqualError(t, err, "Lock not obtained")
1383 m.AssertExpectations(t)
1386 func TestReleaseResourceSuccessfully(t *testing.T) {
1389 resourceExpected := "{namespace},resource"
1390 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, nil).Once()
1391 m.On("DelIE", resourceExpected, mock.Anything).Return(true, nil).Once()
1393 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{
1396 err2 := lock.ReleaseResource()
1398 assert.NotNil(t, lock)
1400 m.AssertExpectations(t)
1403 func TestReleaseResourceFailure(t *testing.T) {
1406 resourceExpected := "{namespace},resource"
1407 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, nil).Once()
1408 m.On("DelIE", resourceExpected, mock.Anything).Return(true, errors.New("Some error")).Once()
1410 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{
1413 err2 := lock.ReleaseResource()
1415 assert.NotNil(t, lock)
1416 assert.NotNil(t, err2)
1417 m.AssertExpectations(t)
1420 func TestReleaseResourceLockNotHeld(t *testing.T) {
1423 resourceExpected := "{namespace},resource"
1424 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, nil).Once()
1425 m.On("DelIE", resourceExpected, mock.Anything).Return(false, nil).Once()
1427 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{
1430 err2 := lock.ReleaseResource()
1432 assert.NotNil(t, lock)
1433 assert.NotNil(t, err2)
1434 assert.EqualError(t, err2, "Lock not held")
1435 m.AssertExpectations(t)
1438 func TestRefreshResourceSuccessfully(t *testing.T) {
1441 resourceExpected := "{namespace},resource"
1442 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, nil).Once()
1443 m.On("PExpireIE", resourceExpected, mock.Anything, time.Duration(1)).Return(nil).Once()
1445 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{
1448 err2 := lock.RefreshResource(time.Duration(1))
1450 assert.NotNil(t, lock)
1452 m.AssertExpectations(t)
1455 func TestRefreshResourceFailure(t *testing.T) {
1458 resourceExpected := "{namespace},resource"
1459 m.On("SetNX", resourceExpected, mock.Anything, time.Duration(1)).Return(true, nil).Once()
1460 m.On("PExpireIE", resourceExpected, mock.Anything, time.Duration(1)).Return(errors.New("Some error")).Once()
1462 lock, err := i.LockResource("resource", time.Duration(1), &sdlgo.Options{
1465 err2 := lock.RefreshResource(time.Duration(1))
1467 assert.NotNil(t, lock)
1468 assert.NotNil(t, err2)
1469 m.AssertExpectations(t)
1472 func TestCheckResourceSuccessfully(t *testing.T) {
1475 resourceExpected := "{namespace},resource"
1476 m.On("PTTL", resourceExpected).Return(time.Duration(1), nil)
1477 result, err := i.CheckResource("resource")
1479 assert.Equal(t, result, time.Duration(1))
1480 m.AssertExpectations(t)
1483 func TestCheckResourceFailure(t *testing.T) {
1486 resourceExpected := "{namespace},resource"
1487 m.On("PTTL", resourceExpected).Return(time.Duration(1), errors.New("Some error"))
1488 result, err := i.CheckResource("resource")
1489 assert.NotNil(t, err)
1490 assert.EqualError(t, err, "Some error")
1491 assert.Equal(t, result, time.Duration(0))
1492 m.AssertExpectations(t)
1495 func TestCheckResourceInvalidResource(t *testing.T) {
1498 resourceExpected := "{namespace},resource"
1499 m.On("PTTL", resourceExpected).Return(time.Duration(-1), nil)
1500 result, err := i.CheckResource("resource")
1501 assert.NotNil(t, err)
1502 assert.EqualError(t, err, "invalid resource given, no expiration time attached")
1503 assert.Equal(t, result, time.Duration(0))
1504 m.AssertExpectations(t)