public void Should_not_be_able_update_Models_with_fields_not_specified_on_the_MetaType( string fieldName, string fieldNameNotInSchema) { using (var server = TestServer.Create<TestStartup>()) { // arrange var schema = new MetaType { Name = "simple_schema" }; var model = new Model { }; model[fieldName] = "Some Text"; schema.Fields.Add(new TextField { Name = fieldName }); using (var session = Storage.GetAsyncSession()) { session.StoreAsync(schema).Wait(); model.SaveAsync(schema.Name, session).Wait(); session.SaveChangesAsync().Wait(); } // act model[fieldNameNotInSchema] = "Some Text"; var json = JsonConvert.SerializeObject(model, this.JsonConverter); var response = server.CreateRequest("api/models/{0}".FormatString(schema.Name)) .And(message => message.Content = new StringContent(json, Encoding.UTF8, "application/json")) .SendAsync("PUT") .Result; // verify Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); var content = response.Content.ReadAsStringAsync().Result; var result = JsonConvert.DeserializeObject<ApiError>(content); Assert.Equal(ApiErrorCode.SchemaMismatch, result.ErrorCode); } }
public void Should_not_be_able_add_Null_values_to_Enumerable_fields() { using (var server = TestServer.Create<TestStartup>()) { // arrange var schema = new MetaType { Name = "simple_schema" }; schema.Fields.Add(new EnumerableField { Name = "listOfStrings", EnumerableOf = new TextField() }); using (var session = Storage.GetAsyncSession()) { session.StoreAsync(schema).Wait(); session.SaveChangesAsync().Wait(); } var model = new Model { }; model["listOfStrings"] = new List<string> { { "item1" } }; using (var session = Storage.GetAsyncSession()) { model.SaveAsync(schema.Name, session).Wait(); session.SaveChangesAsync().Wait(); } // act (model["listOfStrings"] as List<string>).Add(null); var json = JsonConvert.SerializeObject(model, this.JsonConverter); var response = server.CreateRequest("api/models/{0}".FormatString(schema.Name)) .And(message => message.Content = new StringContent(json, Encoding.UTF8, "application/json")) .SendAsync("PUT") .Result; // verify Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); var content = response.Content.ReadAsStringAsync().Result; var result = JsonConvert.DeserializeObject<ApiError>(content); Assert.Equal(ApiErrorCode.SchemaMismatch, result.ErrorCode); } }