public async Task TestStoreAsync()
        {
            var  insert = InsertTestData(_clientStore, _scopeStore, _tokenHandleStore, _refreshTokenHandleStore, 1);
            Guid id     = insert[0].Id;
            var  result = await _refreshTokenHandleStore.RetrieveAsync(id);

            var tokenHandleRecord = new RefreshTokenHandleRecord(result);

            Assert.AreEqual(tokenHandleRecord.Id, id);

            tokenHandleRecord.Record.SubjectId             = Guid.NewGuid().ToString();
            tokenHandleRecord.Record.AccessToken.SubjectId = tokenHandleRecord.Record.SubjectId;
            tokenHandleRecord.Record.Key = Guid.NewGuid().ToString();
            var key = tokenHandleRecord.Record.Key;
            var rt  = await tokenHandleRecord.Record.MakeRefreshTokenAsync(_clientStore);


            await _refreshTokenHandleStore.StoreAsync(key, rt);

            var storedResult = await _refreshTokenHandleStore.GetAsync(key);

            Assert.IsNotNull(storedResult);


            Assert.AreEqual(rt.SubjectId, storedResult.SubjectId);
        }
        public static List <RefreshTokenHandleRecord> InsertTestData(ClientStore clientStore, ScopeStore scopeStore, TokenHandleStore ths, RefreshTokenStore store, int count = 1)
        {
            List <RefreshTokenHandleRecord> result = new List <RefreshTokenHandleRecord>();
            var insert      = TokenHandleStoreTest.InsertTestData(clientStore, scopeStore, ths, count);
            var subjectSeed = Guid.NewGuid().ToString();
            var clientId    = insert[0].Record.ClientId;

            foreach (var item in insert)
            {
                RefreshTokenHandle tokenHandle = new RefreshTokenHandle
                {
                    ClientId     = clientId,
                    AccessToken  = item.Record,
                    CreationTime = DateTimeOffset.UtcNow,
                    Key          = Guid.NewGuid().ToString(),
                    Expires      = DateTimeOffset.UtcNow.AddMinutes(5),
                    LifeTime     = 5,
                    SubjectId    = item.Record.SubjectId,
                    Version      = 1
                };
                var tokenHandleRecord = new RefreshTokenHandleRecord(tokenHandle);
                store.CreateAsync(tokenHandleRecord.Record);
                result.Add(tokenHandleRecord);
            }
            return(result);
        }
        public void TestCreateAsync()
        {
            var  insert            = InsertTestData(_clientStore, _scopeStore, _tokenHandleStore, _refreshTokenHandleStore, 1);
            Guid id                = insert[0].Id;
            var  result            = _refreshTokenHandleStore.RetrieveAsync(id);
            var  tokenHandleRecord = new RefreshTokenHandleRecord(result.Result);

            Assert.AreEqual(tokenHandleRecord.Id, id);
        }
        public void TestGetAsync()
        {
            var  insert            = InsertTestData(_clientStore, _scopeStore, _tokenHandleStore, _refreshTokenHandleStore, 1);
            Guid id                = insert[0].Id;
            var  result            = _refreshTokenHandleStore.RetrieveAsync(id);
            var  tokenHandleRecord = new RefreshTokenHandleRecord(result.Result);

            Assert.AreEqual(tokenHandleRecord.Id, id);


            var storedResult = _refreshTokenHandleStore.GetAsync(tokenHandleRecord.Record.Key);


            Assert.IsNotNull(result.Result);
            Assert.AreEqual(result.Result.ClientId, insert[0].Record.ClientId);
        }
        public void TestUpdateAsync()
        {
            var  insert            = InsertTestData(_clientStore, _scopeStore, _tokenHandleStore, _refreshTokenHandleStore, 1);
            Guid id                = insert[0].Id;
            var  result            = _refreshTokenHandleStore.RetrieveAsync(id);
            var  tokenHandleRecord = new RefreshTokenHandleRecord(result.Result);

            Assert.AreEqual(tokenHandleRecord.Id, id);

            var testValue = Guid.NewGuid().ToString();

            tokenHandleRecord.Record.SubjectId = testValue;

            _refreshTokenHandleStore.UpdateAsync(tokenHandleRecord.Record);
            result            = _refreshTokenHandleStore.RetrieveAsync(id);
            tokenHandleRecord = new RefreshTokenHandleRecord(result.Result);
            Assert.AreEqual(tokenHandleRecord.Id, id);
            Assert.AreEqual(tokenHandleRecord.Record.SubjectId, testValue);
        }