Ejemplo n.º 1
0
        private NameCacheEntity BuildNameCacheFromTableEntity(NameCacheTableEntity tableEntity)
        {
            if (tableEntity == null)
            {
                return(null);
            }

            var parameters = new List <Parameter>();

            try
            {
                parameters = JsonConvert.DeserializeObject <List <Parameter> >(tableEntity.MethodParameters);
            }
            catch (Exception)
            {
                Trace.TraceError("Failed to deserialize object for method parameters: {0}", tableEntity.MethodParameters);
            }

            var nameCacheEntity = new NameCacheEntity
            {
                Name        = tableEntity?.Name,
                Parameters  = parameters,
                Description = tableEntity?.MethodDescription,
            };

            return(nameCacheEntity);
        }
        public async Task AddNameAsyncFailureTest()
        {
            var newNameCache = fixture.Create <NameCacheEntity>();
            NameCacheTableEntity tableEntity = null;
            var resp = new TableStorageResponse <NameCacheEntity>
            {
                Entity = newNameCache,
                Status = TableStorageResponseStatus.NotFound
            };

            _tableStorageClientMock.Setup(
                x =>
                x.DoTableInsertOrReplaceAsync(It.IsNotNull <NameCacheTableEntity>(),
                                              It.IsNotNull <Func <NameCacheTableEntity, NameCacheEntity> >()))
            .Callback <NameCacheTableEntity, Func <NameCacheTableEntity, NameCacheEntity> >(
                (entity, func) => tableEntity = null)
            .ReturnsAsync(resp);
            var tableEntities = fixture.Create <List <NameCacheTableEntity> >();

            _tableStorageClientMock.Setup(x => x.ExecuteQueryAsync(It.IsNotNull <TableQuery <NameCacheTableEntity> >()))
            .ReturnsAsync(tableEntities);
            var ret = await nameCacheRepository.AddNameAsync(NameCacheEntityType.DesiredProperty, newNameCache);

            Assert.False(ret);
            Assert.Null(tableEntity);
            await Assert.ThrowsAsync <ArgumentException>(async() =>
                                                         await nameCacheRepository.AddNameAsync(NameCacheEntityType.Property, newNameCache));
        }
        public async Task AddNameAsyncTest()
        {
            var newNameCache = fixture.Create <NameCacheEntity>();
            NameCacheTableEntity tableEntity = null;
            var resp = new TableStorageResponse <NameCacheEntity>
            {
                Entity = newNameCache,
                Status = TableStorageResponseStatus.Successful
            };

            _tableStorageClientMock.Setup(
                x =>
                x.DoTableInsertOrReplaceAsync(It.IsNotNull <NameCacheTableEntity>(),
                                              It.IsNotNull <Func <NameCacheTableEntity, NameCacheEntity> >()))
            .Callback <NameCacheTableEntity, Func <NameCacheTableEntity, NameCacheEntity> >(
                (entity, func) => tableEntity = entity)
            .ReturnsAsync(resp);
            var tableEntities = fixture.Create <List <NameCacheTableEntity> >();

            _tableStorageClientMock.Setup(x => x.ExecuteQueryAsync(It.IsNotNull <TableQuery <NameCacheTableEntity> >()))
            .ReturnsAsync(tableEntities);
            var ret = await nameCacheRepository.AddNameAsync(NameCacheEntityType.DesiredProperty, newNameCache);

            Assert.True(ret);
            Assert.NotNull(tableEntity);
            Assert.Equal(newNameCache.Name, tableEntity.Name);
            Assert.Equal(newNameCache.Description, tableEntity.MethodDescription);
            Assert.Equal(NameCacheEntityType.DesiredProperty.ToString(), tableEntity.PartitionKey);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Delete an existing name from repository.
        /// </summary>
        /// <param name="entityType"></param>
        /// <param name="name"></param>
        /// <returns>true if succeeded, false if failed.</returns>
        public async Task <bool> DeleteNameAsync(NameCacheEntityType entityType, string name)
        {
            CheckSingleEntityType(entityType);
            NameCacheTableEntity tableEntity = new NameCacheTableEntity(entityType, name);

            tableEntity.ETag = "*";
            var result = await _azureTableStorageClient.DoDeleteAsync <NameCacheEntity, NameCacheTableEntity>(tableEntity, BuildNameCacheFromTableEntity);

            return(result.Status == TableStorageResponseStatus.Successful);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Save a new name into the repository. Update it if it already exists.
        /// </summary>
        /// <param name="name"></param>
        /// <returns>true if succeeded, false if failed.</returns>
        public async Task <bool> AddNameAsync(NameCacheEntityType entityType, NameCacheEntity entity)
        {
            CheckSingleEntityType(entityType);
            NameCacheTableEntity tableEntity = new NameCacheTableEntity(entityType, entity.Name);

            tableEntity.MethodParameters  = JsonConvert.SerializeObject(entity.Parameters);
            tableEntity.MethodDescription = entity.Description;
            tableEntity.ETag = "*";
            var result = await _azureTableStorageClient.DoTableInsertOrReplaceAsync <NameCacheEntity, NameCacheTableEntity>(tableEntity, BuildNameCacheFromTableEntity);

            return(result.Status == TableStorageResponseStatus.Successful);
        }
        public async Task DeleteNameAsyncTest()
        {
            var newNameCache = fixture.Create <NameCacheEntity>();
            NameCacheTableEntity tableEntity = null;
            var resp = new TableStorageResponse <NameCacheEntity>
            {
                Entity = newNameCache,
                Status = TableStorageResponseStatus.Successful
            };

            _tableStorageClientMock.Setup(
                x =>
                x.DoDeleteAsync(It.IsNotNull <NameCacheTableEntity>(),
                                It.IsNotNull <Func <NameCacheTableEntity, NameCacheEntity> >()))
            .Callback <NameCacheTableEntity, Func <NameCacheTableEntity, NameCacheEntity> >(
                (entity, func) => tableEntity = entity)
            .ReturnsAsync(resp);
            var ret = await nameCacheRepository.DeleteNameAsync(NameCacheEntityType.DesiredProperty, newNameCache.Name);

            Assert.True(ret);
            Assert.NotNull(tableEntity);
            Assert.Equal(newNameCache.Name, tableEntity.Name);
        }