private Network GetNetwork(DataContext dataContext) { var network = dataContext.Network.Get("test network"); if (network != null) return network; network = new Network("test network"); dataContext.Network.Save(network); return network; }
public void Save(Network network) { if (network == null) throw new ArgumentNullException("network"); _mongo.EnsureIdentity(network); _mongo.Networks.Save(network); _mongo.Devices.Update(Query<Device>.EQ(e => e.NetworkID, network.ID), Update<Device>.Set(d => d.Network, network), new MongoUpdateOptions { Flags = UpdateFlags.Multi }); }
/// <summary> /// Initializes all required properties /// </summary> /// <param name="guid">Device global identifier</param> /// <param name="name">Device name</param> /// <param name="network">Associated network object</param> /// <param name="deviceClass">Associated device class object</param> public Device(string guid, string name, Network network, DeviceClass deviceClass) : this(guid) { if (string.IsNullOrEmpty(name)) throw new ArgumentException("Name is null or empty!", "name"); if (deviceClass == null) throw new ArgumentNullException("deviceClass"); this.Name = name; this.Network = network; this.DeviceClass = deviceClass; }
/// <summary> /// Initializes all required properties /// </summary> /// <param name="user">Associated user object</param> /// <param name="network">Associated network object</param> public UserNetwork(User user, Network network) { if (user == null) throw new ArgumentNullException("user"); if (network == null) throw new ArgumentNullException("network"); this.User = user; this.UserID = user.ID; this.Network = network; this.NetworkID = network.ID; }
public void Save(Network network) { if (network == null) throw new ArgumentNullException("network"); using (var context = new DeviceHiveContext()) { context.Networks.Add(network); if (network.ID > 0) { context.Entry(network).State = EntityState.Modified; } context.SaveChanges(); } }
/// <summary> /// Default constructor /// </summary> /// <param name="guid">Device global identifier</param> /// <param name="key">Device key</param> /// <param name="name">Device name</param> /// <param name="network">Associated network object</param> /// <param name="deviceClass">Associated device class object</param> public Device(Guid guid, string key, string name, Network network, DeviceClass deviceClass) { if (guid == Guid.Empty) throw new ArgumentException("GUID is empty!", "guid"); if (string.IsNullOrEmpty(key)) throw new ArgumentException("Key is null or empty!", "key"); if (string.IsNullOrEmpty(name)) throw new ArgumentException("Name is null or empty!", "name"); if (network == null) throw new ArgumentNullException("network"); if (deviceClass == null) throw new ArgumentNullException("deviceClass"); this.GUID = guid; this.Key = key; this.Name = name; this.Network = network; this.DeviceClass = deviceClass; }
public void Device() { var network = new Network("N1"); DataContext.Network.Save(network); RegisterTearDown(() => DataContext.Network.Delete(network.ID)); var deviceClass = new DeviceClass("D1", "V1"); DataContext.DeviceClass.Save(deviceClass); RegisterTearDown(() => DataContext.DeviceClass.Delete(deviceClass.ID)); var device = new Device(Guid.NewGuid().ToString(), "Test", network, deviceClass); DataContext.Device.Save(device); RegisterTearDown(() => DataContext.Device.Delete(device.ID)); // test GetByNetwork var devices = DataContext.Device.GetByNetwork(network.ID); Assert.Greater(devices.Count, 0); // test Get(id) var device1 = DataContext.Device.Get(device.ID); Assert.IsNotNull(device1); Assert.AreEqual(device.GUID, device1.GUID); Assert.IsNull(device1.Key); Assert.AreEqual("Test", device1.Name); Assert.AreEqual(network.ID, device1.NetworkID); Assert.AreEqual(deviceClass.ID, device1.DeviceClassID); Assert.IsNotNull(device1.Network); Assert.IsNotNull(device1.DeviceClass); // test Get(guid) var device2 = DataContext.Device.Get(device.GUID); Assert.IsNotNull(device2); Assert.AreEqual(device.GUID, device2.GUID); Assert.AreEqual("Test", device2.Name); Assert.AreEqual(network.ID, device2.NetworkID); Assert.AreEqual(deviceClass.ID, device2.DeviceClassID); Assert.IsNotNull(device2.Network); Assert.IsNotNull(device2.DeviceClass); // test Save device.Key = "key"; device.Name = "Test2"; device.Status = "Status"; device.Data = "{ }"; device.Network = null; device.NetworkID = null; DataContext.Device.Save(device); var device3 = DataContext.Device.Get(device.ID); Assert.AreEqual("key", device3.Key); Assert.AreEqual("Test2", device3.Name); Assert.AreEqual("Status", device3.Status); Assert.AreEqual("{ }", device3.Data); Assert.IsNull(device3.Network); Assert.IsNull(device3.NetworkID); // test update relationship var deviceClass2 = new DeviceClass("D2", "V2"); DataContext.DeviceClass.Save(deviceClass2); RegisterTearDown(() => DataContext.DeviceClass.Delete(deviceClass2.ID)); device.DeviceClass = deviceClass2; DataContext.Device.Save(device); var device4 = DataContext.Device.Get(device.ID); Assert.AreEqual(deviceClass2.ID, device4.DeviceClassID); Assert.IsNotNull(device4.DeviceClass); // test Delete DataContext.Device.Delete(device.ID); var device5 = DataContext.Device.Get(device.ID); Assert.IsNull(device5); }
public void DeviceTest() { var network = new Network("N1"); NetworkRepository.Save(network); var deviceClass = new DeviceClass("D1", "V1"); DeviceClassRepository.Save(deviceClass); var device = new Device(Guid.NewGuid(), "key", "Test", network, deviceClass); DeviceRepository.Save(device); // test GetByNetwork var devices = DeviceRepository.GetByNetwork(network.ID); Assert.Greater(devices.Count, 0); // test Get(id) var device1 = DeviceRepository.Get(device.ID); Assert.IsNotNull(device1); Assert.AreEqual(device.GUID, device1.GUID); Assert.AreEqual("Test", device1.Name); Assert.AreEqual(network.ID, device1.NetworkID); Assert.AreEqual(deviceClass.ID, device1.DeviceClassID); Assert.IsNotNull(device1.Network); Assert.IsNotNull(device1.DeviceClass); // test Get(guid) var device2 = DeviceRepository.Get(device.GUID); Assert.IsNotNull(device2); Assert.AreEqual(device.GUID, device2.GUID); Assert.AreEqual("Test", device2.Name); Assert.AreEqual(network.ID, device2.NetworkID); Assert.AreEqual(deviceClass.ID, device2.DeviceClassID); Assert.IsNotNull(device2.Network); Assert.IsNotNull(device2.DeviceClass); // test Save device.Name = "Test2"; device.Status = "Status"; DeviceRepository.Save(device); var device3 = DeviceRepository.Get(device.ID); Assert.AreEqual("Test2", device3.Name); Assert.AreEqual("Status", device3.Status); // test update relationship var deviceClass2 = new DeviceClass("D2", "V2"); DeviceClassRepository.Save(deviceClass2); device.DeviceClass = deviceClass2; DeviceRepository.Save(device); var device4 = DeviceRepository.Get(device.ID); Assert.AreEqual(deviceClass2.ID, device4.DeviceClassID); Assert.IsNotNull(device4.DeviceClass); // test Delete DeviceRepository.Delete(device.ID); var device5 = DeviceRepository.Get(device.ID); Assert.IsNull(device5); }
public void DeviceNotificationTest() { var network = new Network("N1"); NetworkRepository.Save(network); var deviceClass = new DeviceClass("D1", "V1"); DeviceClassRepository.Save(deviceClass); var device = new Device(Guid.NewGuid(), "key", "Test", network, deviceClass); DeviceRepository.Save(device); var notification = new DeviceNotification("Test", device); DeviceNotificationRepository.Save(notification); // test GetByDevice var notifications = DeviceNotificationRepository.GetByDevice(device.ID, null, null); Assert.Greater(notifications.Count, 0); // test Get(id) var notification1 = DeviceNotificationRepository.Get(notification.ID); Assert.IsNotNull(notification1); Assert.AreEqual("Test", notification1.Notification); Assert.AreEqual(device.ID, notification1.DeviceID); // test Save notification.Notification = "Test2"; notification.Parameters = "{}"; DeviceNotificationRepository.Save(notification); var notification2 = DeviceNotificationRepository.Get(notification.ID); Assert.AreEqual("Test2", notification2.Notification); Assert.AreEqual("{}", notification2.Parameters); // test Delete DeviceNotificationRepository.Delete(notification.ID); var notification3 = DeviceNotificationRepository.Get(notification.ID); Assert.IsNull(notification3); }
public void NetworkTest() { var network = new Network("Test") { Key = "Key" }; NetworkRepository.Save(network); // test GetAll var networks = NetworkRepository.GetAll(); Assert.Greater(networks.Count, 0); // test Get(id) var network1 = NetworkRepository.Get(network.ID); Assert.IsNotNull(network1); Assert.AreEqual("Test", network1.Name); // test Get(name) var network2 = NetworkRepository.Get("Test"); Assert.IsNotNull(network2); // test GetByKey(key) var network3 = NetworkRepository.GetByKey("Key"); Assert.IsNotNull(network3); // test Save network.Name = "Test2"; network.Description = "Desc"; NetworkRepository.Save(network); var network4 = NetworkRepository.Get(network.ID); Assert.AreEqual("Test2", network4.Name); Assert.AreEqual("Desc", network4.Description); // test Delete NetworkRepository.Delete(network.ID); var network5 = NetworkRepository.Get(network.ID); Assert.IsNull(network5); }
private void ResolveNetwork(JObject json, bool verifyNetworkKey = true) { Network network = null; var jNetwork = json.Property("network"); if (jNetwork != null && jNetwork.Value is JValue) { // a value is passed, can be null var jNetworkValue = (JValue)jNetwork.Value; if (jNetworkValue.Value is long) { // search network by ID network = DataContext.Network.Get((int)jNetworkValue); if (verifyNetworkKey && network != null && network.Key != null) throw new UnauthroizedNetworkException("Could not register a device because target network is protected with a key!"); } } else if (jNetwork != null && jNetwork.Value is JObject) { // search network by name or auto-create if it does not exist var jNetworkObj = (JObject)jNetwork.Value; if (jNetworkObj["name"] == null) throw new InvalidDataException("Specified 'network' object must include 'name' property!"); network = DataContext.Network.Get((string)jNetworkObj["name"]); if (network == null) { if (!_allowNetworkAutoCreate) throw new UnauthroizedNetworkException("Automatic network creation is not allowed, please specify an existing network!"); // auto-create network network = new Network(); GetMapper<Network>().Apply(network, jNetworkObj); Validate(network); DataContext.Network.Save(network); } // check passed network key if (verifyNetworkKey && network.Key != null && (string)jNetworkObj["key"] != network.Key) throw new UnauthroizedNetworkException("Could not register a device because target network is protected with a key!"); jNetwork.Value = (long)network.ID; } }
public void DeviceCommand() { var network = new Network("N1"); DataContext.Network.Save(network); RegisterTearDown(() => DataContext.Network.Delete(network.ID)); var deviceClass = new DeviceClass("D1", "V1"); DataContext.DeviceClass.Save(deviceClass); RegisterTearDown(() => DataContext.DeviceClass.Delete(deviceClass.ID)); var device = new Device(Guid.NewGuid().ToString(), "Test", network, deviceClass); DataContext.Device.Save(device); RegisterTearDown(() => DataContext.Device.Delete(device.ID)); var command = new DeviceCommand("Test", device); DataContext.DeviceCommand.Save(command); RegisterTearDown(() => DataContext.DeviceCommand.Delete(command.ID)); // test GetByDevice var commands = DataContext.DeviceCommand.GetByDevice(device.ID); Assert.Greater(commands.Count, 0); // test Get(id) var command1 = DataContext.DeviceCommand.Get(command.ID); Assert.IsNotNull(command1); Assert.AreEqual("Test", command1.Command); Assert.AreEqual(device.ID, command1.DeviceID); // test Save command.Command = "Test2"; command.Parameters = "{ }"; command.Status = "OK"; command.Result = "\"Success\""; command.UserID = 1; DataContext.DeviceCommand.Save(command); var command2 = DataContext.DeviceCommand.Get(command.ID); Assert.AreEqual("Test2", command2.Command); Assert.AreEqual("{ }", command2.Parameters); Assert.AreEqual("OK", command2.Status); Assert.AreEqual("\"Success\"", command2.Result); Assert.AreEqual(1, command2.UserID); // test Delete DataContext.DeviceCommand.Delete(command.ID); var command3 = DataContext.DeviceCommand.Get(command.ID); Assert.IsNull(command3); }
public void DeviceEquipment() { var network = new Network("N1"); DataContext.Network.Save(network); RegisterTearDown(() => DataContext.Network.Delete(network.ID)); var deviceClass = new DeviceClass("D1", "V1"); DataContext.DeviceClass.Save(deviceClass); RegisterTearDown(() => DataContext.DeviceClass.Delete(deviceClass.ID)); var device = new Device(Guid.NewGuid().ToString(), "Test", network, deviceClass); DataContext.Device.Save(device); RegisterTearDown(() => DataContext.Device.Delete(device.ID)); var equipment = new DeviceEquipment("Test", DateTime.UtcNow, device); DataContext.DeviceEquipment.Save(equipment); RegisterTearDown(() => DataContext.DeviceEquipment.Delete(equipment.ID)); // test GetByDevice var equipments = DataContext.DeviceEquipment.GetByDevice(device.ID); Assert.Greater(equipments.Count, 0); // test GetByDeviceAndCode var equipment0 = DataContext.DeviceEquipment.GetByDeviceAndCode(device.ID, "Test"); Assert.IsNotNull(equipment0); // test Get(id) var equipment1 = DataContext.DeviceEquipment.Get(equipment.ID); Assert.IsNotNull(equipment1); Assert.AreEqual("Test", equipment1.Code); Assert.AreEqual(device.ID, equipment1.DeviceID); // test Save equipment.Code = "Test2"; equipment.Parameters = "{ }"; DataContext.DeviceEquipment.Save(equipment); var equipment2 = DataContext.DeviceEquipment.Get(equipment.ID); Assert.AreEqual("Test2", equipment2.Code); Assert.AreEqual("{ }", equipment2.Parameters); // test Delete DataContext.DeviceEquipment.Delete(equipment.ID); var equipment3 = DataContext.DeviceEquipment.Get(equipment.ID); Assert.IsNull(equipment3); }
public void DeviceEquipmentTest() { var network = new Network("N1"); NetworkRepository.Save(network); var deviceClass = new DeviceClass("D1", "V1"); DeviceClassRepository.Save(deviceClass); var device = new Device(Guid.NewGuid(), "key", "Test", network, deviceClass); DeviceRepository.Save(device); var equipment = new DeviceEquipment("Test", DateTime.UtcNow, device); DeviceEquipmentRepository.Save(equipment); // test GetByDevice var equipments = DeviceEquipmentRepository.GetByDevice(device.ID); Assert.Greater(equipments.Count, 0); // test GetByDeviceAndCode var equipment0 = DeviceEquipmentRepository.GetByDeviceAndCode(device.ID, "Test"); Assert.IsNotNull(equipment0); // test Get(id) var equipment1 = DeviceEquipmentRepository.Get(equipment.ID); Assert.IsNotNull(equipment1); Assert.AreEqual("Test", equipment1.Code); Assert.AreEqual(device.ID, equipment1.DeviceID); // test Save equipment.Code = "Test2"; equipment.Parameters = "{}"; DeviceEquipmentRepository.Save(equipment); var equipment2 = DeviceEquipmentRepository.Get(equipment.ID); Assert.AreEqual("Test2", equipment2.Code); Assert.AreEqual("{}", equipment2.Parameters); // test Delete DeviceEquipmentRepository.Delete(equipment.ID); var equipment3 = DeviceEquipmentRepository.Get(equipment.ID); Assert.IsNull(equipment3); }
public void UserNetworkTest() { var user = new User("Test", "TestPass", (int)UserRole.Administrator, (int)UserStatus.Active); UserRepository.Save(user); var network = new Network("Test"); NetworkRepository.Save(network); var userNetwork = new UserNetwork(user, network); UserNetworkRepository.Save(userNetwork); // test GetByUser var userNetworks1 = UserNetworkRepository.GetByUser(user.ID); Assert.Greater(userNetworks1.Count, 0); // test GetByNetwork var userNetworks2 = UserNetworkRepository.GetByNetwork(network.ID); Assert.Greater(userNetworks2.Count, 0); // test Get(id) var userNetwork1 = UserNetworkRepository.Get(userNetwork.ID); Assert.IsNotNull(userNetwork1); Assert.AreEqual(user.ID, userNetwork1.UserID); Assert.AreEqual(network.ID, userNetwork1.NetworkID); Assert.IsNotNull(userNetwork1.User); Assert.IsNotNull(userNetwork1.Network); // test Get(userId, networkId) var userNetwork2 = UserNetworkRepository.Get(user.ID, network.ID); Assert.IsNotNull(userNetwork2); // test Delete UserNetworkRepository.Delete(userNetwork.ID); var userNetwork3 = UserNetworkRepository.Get(userNetwork.ID); Assert.IsNull(userNetwork3); }
public void Network() { var network = new Network("Test") { Key = "Key" }; DataContext.Network.Save(network); RegisterTearDown(() => DataContext.Network.Delete(network.ID)); // test GetAll var networks = DataContext.Network.GetAll(); Assert.Greater(networks.Count, 0); // test Get(id) var network1 = DataContext.Network.Get(network.ID); Assert.IsNotNull(network1); Assert.AreEqual("Test", network1.Name); // test Get(name) var network2 = DataContext.Network.Get("Test"); Assert.IsNotNull(network2); // test Save network.Name = "Test2"; network.Description = "Desc"; DataContext.Network.Save(network); var network4 = DataContext.Network.Get(network.ID); Assert.AreEqual("Test2", network4.Name); Assert.AreEqual("Desc", network4.Description); // test Delete DataContext.Network.Delete(network.ID); var network5 = DataContext.Network.Get(network.ID); Assert.IsNull(network5); }
public void UserNetwork() { var user = new User("Test", (int)UserRole.Administrator, (int)UserStatus.Active); user.SetPassword("TestPass"); DataContext.User.Save(user); RegisterTearDown(() => DataContext.User.Delete(user.ID)); var network = new Network("Test"); DataContext.Network.Save(network); RegisterTearDown(() => DataContext.Network.Delete(network.ID)); var userNetwork = new UserNetwork(user, network); DataContext.UserNetwork.Save(userNetwork); RegisterTearDown(() => DataContext.UserNetwork.Delete(userNetwork.ID)); // test GetByUser var userNetworks1 = DataContext.UserNetwork.GetByUser(user.ID); Assert.Greater(userNetworks1.Count, 0); // test GetByNetwork var userNetworks2 = DataContext.UserNetwork.GetByNetwork(network.ID); Assert.Greater(userNetworks2.Count, 0); // test Get(id) var userNetwork1 = DataContext.UserNetwork.Get(userNetwork.ID); Assert.IsNotNull(userNetwork1); Assert.AreEqual(user.ID, userNetwork1.UserID); Assert.AreEqual(network.ID, userNetwork1.NetworkID); Assert.IsNotNull(userNetwork1.User); Assert.IsNotNull(userNetwork1.Network); // test Get(userId, networkId) var userNetwork2 = DataContext.UserNetwork.Get(user.ID, network.ID); Assert.IsNotNull(userNetwork2); // test Delete DataContext.UserNetwork.Delete(userNetwork.ID); var userNetwork3 = DataContext.UserNetwork.Get(userNetwork.ID); Assert.IsNull(userNetwork3); }
private void ResolveNetwork(JObject json, bool isRequired) { var jNetwork = json.Property("network"); if (isRequired && jNetwork == null) ThrowHttpResponse(HttpStatusCode.BadRequest, "Required 'network' property was not specified!"); Network network = null; var verifyNetworkKey = RequestContext.CurrentUser == null; if (jNetwork != null && jNetwork.Value is JValue) { var jNetworkValue = (JValue)jNetwork.Value; if (jNetworkValue.Value is long) { // search network by ID network = DataContext.Network.Get((int)jNetworkValue); if (verifyNetworkKey && network != null && network.Key != null) ThrowHttpResponse(HttpStatusCode.Forbidden, "Could not register a device because target network is protected with a key!"); } else if (jNetworkValue.Value is string) { // search network by key network = DataContext.Network.GetByKey((string)jNetworkValue); if (network == null) ThrowHttpResponse(HttpStatusCode.BadRequest, "Network with specified key was not found!"); jNetwork.Value = (long)network.ID; } } else if (jNetwork != null && jNetwork.Value is JObject) { // search network by name or auto-create var jNetworkObj = (JObject)jNetwork.Value; if (jNetworkObj["name"] == null) ThrowHttpResponse(HttpStatusCode.BadRequest, "Specified 'network' object must include 'name' property!"); network = DataContext.Network.Get((string)jNetworkObj["name"]); if (network == null) { // auto-create network if it does not exist network = new Network(); GetMapper<Network>().Apply(network, jNetworkObj); DataContext.Network.Save(network); } // check passed network key if (verifyNetworkKey && network.Key != null && (string)jNetworkObj["key"] != network.Key) ThrowHttpResponse(HttpStatusCode.Forbidden, "Could not register a device because target network is protected with a key!"); jNetwork.Value = (long)network.ID; } }
public void DeviceNotification() { var network = new Network("N1"); DataContext.Network.Save(network); RegisterTearDown(() => DataContext.Network.Delete(network.ID)); var deviceClass = new DeviceClass("D1", "V1"); DataContext.DeviceClass.Save(deviceClass); RegisterTearDown(() => DataContext.DeviceClass.Delete(deviceClass.ID)); var device = new Device(Guid.NewGuid().ToString(), "Test", network, deviceClass); DataContext.Device.Save(device); RegisterTearDown(() => DataContext.Device.Delete(device.ID)); var notification = new DeviceNotification("Test", device); DataContext.DeviceNotification.Save(notification); RegisterTearDown(() => DataContext.DeviceNotification.Delete(notification.ID)); // test GetByDevice var notifications = DataContext.DeviceNotification.GetByDevice(device.ID); Assert.Greater(notifications.Count, 0); // test Get(id) var notification1 = DataContext.DeviceNotification.Get(notification.ID); Assert.IsNotNull(notification1); Assert.AreEqual("Test", notification1.Notification); Assert.AreEqual(device.ID, notification1.DeviceID); // test Save notification.Notification = "Test2"; notification.Parameters = "{ }"; DataContext.DeviceNotification.Save(notification); var notification2 = DataContext.DeviceNotification.Get(notification.ID); Assert.AreEqual("Test2", notification2.Notification); Assert.AreEqual("{ }", notification2.Parameters); // test Delete DataContext.DeviceNotification.Delete(notification.ID); var notification3 = DataContext.DeviceNotification.Get(notification.ID); Assert.IsNull(notification3); }
public void DeviceCommandTest() { var network = new Network("N1"); NetworkRepository.Save(network); var deviceClass = new DeviceClass("D1", "V1"); DeviceClassRepository.Save(deviceClass); var device = new Device(Guid.NewGuid(), "key", "Test", network, deviceClass); DeviceRepository.Save(device); var command = new DeviceCommand("Test", device); DeviceCommandRepository.Save(command); // test GetByDevice var commands = DeviceCommandRepository.GetByDevice(device.ID, null, null); Assert.Greater(commands.Count, 0); // test Get(id) var command1 = DeviceCommandRepository.Get(command.ID); Assert.IsNotNull(command1); Assert.AreEqual("Test", command1.Command); Assert.AreEqual(device.ID, command1.DeviceID); // test Save command.Command = "Test2"; command.Parameters = "{}"; command.Status = "OK"; command.Result = "Success"; DeviceCommandRepository.Save(command); var command2 = DeviceCommandRepository.Get(command.ID); Assert.AreEqual("Test2", command2.Command); Assert.AreEqual("{}", command2.Parameters); Assert.AreEqual("OK", command2.Status); Assert.AreEqual("Success", command2.Result); // test Delete DeviceCommandRepository.Delete(command.ID); var command3 = DeviceCommandRepository.Get(command.ID); Assert.IsNull(command3); }