Example #1
0
        public void PopulateFromWriteModel(SignalWriteModel writeModel)
        {
            var isBaseType = writeModel.Value.IsBaseType();

            Name       = writeModel.Name;
            Tags       = writeModel.Tags.IsNullOrEmpty() ? null : string.Join(",", writeModel.Tags);
            IsBaseType = isBaseType;
            ValueType  = writeModel.Value.GetSignalValueType();
            Value      = isBaseType ? writeModel.Value.ToString() : JsonConvert.SerializeObject(writeModel.Value);
        }
Example #2
0
        public async Task Should_Update_Signal_With_New_Encrypted_Object()
        {
            // Arrange
            _mediatorMock.Setup(x => x.Send(It.IsAny <EncryptionRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync((EncryptionRequest encryptionRequest, CancellationToken token)
                                                                                                                          => Convert.ToBase64String(Encoding.UTF8.GetBytes(encryptionRequest.ToEncrypt)));
            _mediatorMock.Setup(x => x.Send(It.IsAny <GetSettingRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(Convert.ToBase64String(Encoding.UTF8.GetBytes("Test Public Key")));

            var          id       = Guid.NewGuid();
            const string oldValue = "Test Value";
            var          newValue = new SignalWriteModel {
                Name = "Test Name"
            };

            await _context.Signals.AddAsync(new Signal
            {
                Id              = 1,
                DateCreated     = DateTime.UtcNow,
                DateLastUpdated = DateTime.UtcNow,
                IsBaseType      = true,
                Name            = "Test",
                ResourceId      = id,
                Value           = oldValue,
                ValueType       = typeof(string).FullName,
                Tags            = Constants.EncryptedTag
            }).ConfigureAwait(false);

            await _context.SaveChangesAsync().ConfigureAwait(false);

            var request = new PatchSignalRequest
            {
                Id    = id,
                Patch = new JsonPatchDocument <SignalWriteModel>()
                        .Replace(x => x.Tags, new List <string> {
                    "Tag1", "Tag2"
                })
                        .Replace(x => x.Value, newValue)
            };

            // Act
            await _sut.Execute(request, CancellationToken.None).ConfigureAwait(false);

            // Assert
            var signal = await _context.Signals.FirstOrDefaultAsync(s => s.ResourceId == id).ConfigureAwait(false);

            signal.Value.ShouldNotBe(JsonConvert.SerializeObject(newValue));
            signal.Value.ShouldNotBe(oldValue);
            signal.Tags.ShouldNotBeNull();
            signal.Tags.ShouldContain(Constants.EncryptedTag);
        }
Example #3
0
        public void Should_Populate_From_Base_WriteModel()
        {
            // Arrange
            var writeModel = new SignalWriteModel
            {
                Name = "Test Name",
                Tags = new List <string> {
                    "Test", "Tags"
                },
                Encrypted = false,
                Value     = "Test Value"
            };
            var domainModel = new Signal();

            // Act
            domainModel.PopulateFromWriteModel(writeModel);

            // Assert
            domainModel.Name.ShouldBe(writeModel.Name);
            domainModel.Tags.ShouldBe(string.Join(",", writeModel.Tags));
            domainModel.Value.ShouldBe(writeModel.Value);
        }
Example #4
0
        /// <summary>
        /// Writes a value to the signal
        /// </summary>
        /// <param name="writeValue"></param>
        /// <returns></returns>
        public HttpResponseMessage Put([FromUri] SignalWriteModel writeValue)
        {
            string comments = "NULL";

            if (!string.IsNullOrWhiteSpace(writeValue.Comments))
            {
                comments = "'" + writeValue.Comments.Replace("'", "''") + "'";
            }
            string source = "NULL";

            if (!string.IsNullOrWhiteSpace(writeValue.Source))
            {
                source = "'" + writeValue.Source + "'";
            }
            string query = "EXEC rSetOPC_SigWrite @UserID = '" + writeValue.UserName + "'" +
                           ",@SignalID = '" + writeValue.SignalID + "'" +
                           ",@Value = '" + writeValue.Value + "'" +
                           ",@Comment = " + comments +
                           ",@Source = " + source;

            sqlObject.QuerySQL(query, ref sqlStatus);
            HttpResponseMessage response;

            if (sqlStatus == "Success")
            {
                response = Request.CreateResponse(HttpStatusCode.OK, sqlStatus);
            }
            else
            {
                response = Request.CreateResponse(HttpStatusCode.BadRequest, sqlStatus);
            }
            response.Content = new StringContent(sqlStatus, Encoding.Unicode);
            response.Headers.CacheControl = new CacheControlHeaderValue()
            {
                MaxAge = TimeSpan.FromMinutes(20)
            };
            return(response);
        }
Example #5
0
        public async Task Should_Update_Signal_With_New_Unencrypted_Object()
        {
            // Arrange
            var id       = Guid.NewGuid();
            var newValue = new SignalWriteModel {
                Name = "Test Name"
            };

            await _context.Signals.AddAsync(new Signal
            {
                Id              = 1,
                DateCreated     = DateTime.UtcNow,
                DateLastUpdated = DateTime.UtcNow,
                IsBaseType      = true,
                Name            = "Test",
                ResourceId      = id,
                Value           = "Test Value",
                ValueType       = typeof(string).FullName
            }).ConfigureAwait(false);

            await _context.SaveChangesAsync().ConfigureAwait(false);

            var request = new PatchSignalRequest
            {
                Id    = id,
                Patch = new JsonPatchDocument <SignalWriteModel>()
                        .Replace(x => x.Value, newValue)
            };

            // Act
            await _sut.Execute(request, CancellationToken.None).ConfigureAwait(false);

            // Assert
            var signal = await _context.Signals.FirstOrDefaultAsync(s => s.ResourceId == id).ConfigureAwait(false);

            signal.Value.ShouldBe(JsonConvert.SerializeObject(newValue));
        }
Example #6
0
        public void Should_Populate_From_Object_WriteModel()
        {
            // Arrange
            var writeModel = new SignalWriteModel
            {
                Name = "Test Name",
                Tags = new List <string> {
                    "Test", "Tags"
                },
                Encrypted = false,
                Value     = new SignalWriteModel {
                    Name = "Child"
                }
            };
            var domainModel = new Signal();

            // Act
            domainModel.PopulateFromWriteModel(writeModel);

            // Assert
            domainModel.Name.ShouldBe(writeModel.Name);
            domainModel.Tags.ShouldBe(string.Join(",", writeModel.Tags));
            domainModel.Value.ShouldBe(JsonConvert.SerializeObject(writeModel.Value));
        }