public void Can_Create_Subscriber() { //*** ARRANGE **** //*** ACT **** var userData = new tUserData() { ShData = new List <tTransparentData> { new tTransparentData() { ChangeDescription = null, SequenceNumber = 99, ServiceIndication = "Msph_Subscriber_BaseInformation", ServiceData = new tServiceData { Item = new tMetaSphereData { Item = new tMsph_Subscriber_BaseInformation { DisplayName = "billy bob", CoSID = "20", PrimaryPhoneNumber = "9374843002" }, ItemElementName = ItemChoiceType1.Msph_Subscriber_BaseInformation } } } }.ToArray() }; var addUpdate = new MetaSphereUpdate { EquipmentId = 7, Dn = "9374843002", UserData = userData }; var updateJson = Newtonsoft.Json.JsonConvert.SerializeObject(addUpdate); var updateHttpResponse = _client.PostAsync("subscriber/", new StringContent(updateJson, Encoding.UTF8, "application/json")).Result; var updateResponse = updateHttpResponse.Content.ReadAsStringAsync(); var updateResult = updateResponse.Result; //*** ASSERT *** Assert.IsTrue(true); Assert.IsNotNull(updateResult); }
public HttpResponseMessage Update([FromBody] MetaSphereUpdate update) { try { if (update == null) { throw new Exception(MethodBase.GetCurrentMethod().Name + ": update is required and was not supplied."); } if (update.UserData == null) { throw new Exception(MethodBase.GetCurrentMethod().Name + ": update.UserData is required and was not supplied."); } if (string.IsNullOrEmpty(update.Dn)) { throw new Exception(MethodBase.GetCurrentMethod().Name + ": update.PhoneNumber is required and was not supplied."); } _logger.WriteLogEntry(_tenantId.ToString(), null, string.Format(MethodBase.GetCurrentMethod().Name + " in ProvisioningAPI was called." + Environment.NewLine + update), LogLevelType.Info); var equipmentConnectionSetting = Setup(update.EquipmentId); if (equipmentConnectionSetting == null) { throw new Exception(MethodBase.GetCurrentMethod().Name + ": Unable to retrieve equipment settings on equipment id " + update.EquipmentId + "."); } if (string.IsNullOrEmpty(equipmentConnectionSetting.Url)) { throw new Exception(MethodBase.GetCurrentMethod().Name + ": Settings.URL is not populated for equipment id" + update.EquipmentId + "."); } //Since this is generic object serialize does not now how serialize it. //string json = Newtonsoft.Json.JsonConvert.SerializeObject(update.UserData.ShData); //var type2 = Type.GetType(string.Concat("Common.MetaSwitch.t", update.UserData.ShData.ItemElementName, ", Common.Lib.Integration"), true); //update.UserData.ShData.RepositoryData.ServiceData.Item.Item = Newtonsoft.Json.JsonConvert.DeserializeObject(json, type); //Since this is generic object serialize does not now how serialize it. //assuming theres exactly 1 shdata. string json = Newtonsoft.Json.JsonConvert.SerializeObject(update.UserData.ShData.First().ServiceData.Item.Item); var type = Type.GetType(string.Concat("Common.MetaSphere.t" + update.UserData.ShData.First().ServiceData.Item.ItemElementName, ", Common.Lib.Integration"), true); update.UserData.ShData.First().ServiceData.Item.Item = Newtonsoft.Json.JsonConvert.DeserializeObject(json, type); var metaSphereService = new MetaSphereService(equipmentConnectionSetting, _logger); var validationErrors = metaSphereService.Validate(update.UserData); if (validationErrors.Any()) { var sb = new StringBuilder(); foreach (var validationError in validationErrors) { sb.Append(String.Format("{0}:{1}", validationError.Key, validationError.Value)); sb.AppendLine(); } throw new Exception(MethodBase.GetCurrentMethod().Name + ":" + Environment.NewLine + sb); } tExtendedResult extendedResult; metaSphereService.ShUpdate(update.Dn, update.UserData, out extendedResult, true); _logger.WriteLogEntry(_tenantId.ToString(), null, string.Format(MethodBase.GetCurrentMethod().Name + " in ProvisioningAPI. Response({0})", HttpStatusCode.OK), LogLevelType.Info); return(this.Request.CreateResponse(HttpStatusCode.OK, extendedResult)); } catch (Exception ex) { _logger.WriteLogEntry(_tenantId.ToString(), null, string.Format(MethodBase.GetCurrentMethod().Name + " in ProvisioningAPI. Response."), LogLevelType.Error, ex); throw; } }