Exemplo n.º 1
0
 private static void InitData()
 {
     MonstersInc = new Company()
     {
         ID = 1,
         Name = "MonstersInc",
         Revenue = 1000,
         Category = CompanyCategory.Electronics,
         Partners = new List<Partner>(),
         Branches = new List<Office>() { new Office { City = "Shanghai", Address = "Minhang" }, new Office { City = "Xi'an", Address = "Dayanta" } },
     };
 }
Exemplo n.º 2
0
 private static void InitData()
 {
     Umbrella = new Company()
     {
         ID = 1,
         Name = "Umbrella",
         Revenue = 1000,
         Category = CompanyCategory.Communication,
         Partners = new List<Partner>(),
         Branches = new List<Office>(),
     };
 }
Exemplo n.º 3
0
        public async Task EntitySetNavigationLinkCRUD(string model, string format)
        {
            string requestUri = string.Format(this.BaseAddress + "/{0}/Partners(1)/Company", model);
            string navigationUri = requestUri + "/$ref";
            string formatQuery = string.Format("?$format={0}", format);

            //Reset data source
            await ResetDataSource(model, "MonstersInc");
            await ResetDataSource(model, "Partners");

            // PUT Partners(1)/Company/$ref
            string idLinkBase = string.Format(this.BaseAddress + "/{0}/MonstersInc", model);
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, navigationUri);
            request.Content = new StringContent("{ \"@odata.id\" : \"" + idLinkBase + "\"}");
            request.Content.Headers.ContentType = MediaTypeWithQualityHeaderValue.Parse("application/json");
            var response = Client.SendAsync(request).Result;
            Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);

            // GET Partners(1)/Company
            response = this.Client.GetAsync(requestUri).Result;
            var result = JObject.Parse(response.Content.ReadAsStringAsync().Result);
            Assert.Equal("MonstersInc", (string)result["Name"]);

            // PUT Partners(1)/Company
            result["Revenue"] = 2000;
            response = await HttpClientExtensions.PutAsJsonAsync(this.Client, requestUri, result);
            response.EnsureSuccessStatusCode();

            // GET Partners(1)/Company/Revenue
            response = this.Client.GetAsync(requestUri + formatQuery).Result;
            result = JObject.Parse(response.Content.ReadAsStringAsync().Result);
            Assert.Equal(2000, (int)result["Revenue"]);

            // PATCH Partners(1)/Company
            request = new HttpRequestMessage(new HttpMethod("PATCH"), requestUri);
            request.Content = new StringContent(string.Format(@"{{""@odata.type"":""#{0}"",""Revenue"":3000}}", typeof(Company)));
            request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
            response = Client.SendAsync(request).Result;
            response.EnsureSuccessStatusCode();

            // GET Partners(1)/Company/Revenue
            response = this.Client.GetAsync(requestUri + formatQuery).Result;
            result = JObject.Parse(response.Content.ReadAsStringAsync().Result);
            Assert.Equal(3000, (int)result["Revenue"]);

            // DELETE Partners(1)/Company/$ref
            response = Client.DeleteAsync(navigationUri).Result;
            Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);

            // GET Partners(1)/Company
            response = this.Client.GetAsync(requestUri + formatQuery).Result;
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);

            // Negative: POST Partners(1)/Company
            var company = new Company();
            var content = new ObjectContent(company.GetType(), company, new JsonMediaTypeFormatter());
            response = this.Client.PostAsync(requestUri, content).Result;
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
        }
Exemplo n.º 4
0
        public async Task SingletonCRUD(string model, string singletonName)
        {
            string requestUri = string.Format(this.BaseAddress + "/{0}/{1}", model, singletonName);

            // Reset data source
            await ResetDataSource(model, singletonName);
            await ResetDataSource(model, "Partners");

            // GET singleton
            HttpResponseMessage response = this.Client.GetAsync(requestUri).Result;
            dynamic result = JObject.Parse(response.Content.ReadAsStringAsync().Result);

            // PUT singleton with {"ID":1,"Name":"singletonName","Revenue":2000,"Category":"IT"}
            result["Revenue"] = 2000;
            response = await HttpClientExtensions.PutAsJsonAsync(this.Client, requestUri, result);
            response.EnsureSuccessStatusCode();

            // GET singleton/Revenue
            response = this.Client.GetAsync(requestUri + "/Revenue").Result;
            result = JObject.Parse(response.Content.ReadAsStringAsync().Result);
            Assert.Equal(2000, (int)result["value"]);

            // PATCH singleton with {"@odata.type":"#WebStack.QA.Test.OData.Singleton.Company","Revenue":3000}
            HttpRequestMessage request = new HttpRequestMessage(new HttpMethod("PATCH"), requestUri);
            request.Content = new StringContent(string.Format(@"{{""@odata.type"":""#{0}"",""Revenue"":3000}}", typeof(Company)));
            request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
            response = Client.SendAsync(request).Result;
            response.EnsureSuccessStatusCode();

            // GET singleton
            response = this.Client.GetAsync(requestUri).Result;
            result = JObject.Parse(response.Content.ReadAsStringAsync().Result);
            Assert.Equal(3000, (int)result["Revenue"]);

            // Negative: Add singleton
            // POST singleton
            var company = new Company();
            var content = new ObjectContent(company.GetType(), company, new JsonMediaTypeFormatter());
            response = this.Client.PostAsync(requestUri, content).Result;
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);

            // Negative: Delete singleton
            // DELETE singleton
            response = this.Client.DeleteAsync(requestUri).Result;
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
        }
Exemplo n.º 5
0
 public IHttpActionResult UpdateCompanyByPutWithDerivedTypeObject(SubCompany newCompany)
 {
     MonstersInc = newCompany;
     return StatusCode(HttpStatusCode.NoContent);
 }
Exemplo n.º 6
0
 public IHttpActionResult UpdateCompanyByPut(Company newCompany)
 {
     MonstersInc = newCompany;
     return StatusCode(HttpStatusCode.NoContent);
 }
Exemplo n.º 7
0
 public IHttpActionResult Put(Company newCompany)
 {
     Umbrella = newCompany;
     return StatusCode(HttpStatusCode.NoContent);
 }
Exemplo n.º 8
0
 public IHttpActionResult PutToCompany(int key, Company company)
 {
     var navigateCompany = Partners.First(e => e.ID == key).Company;
     Partners.First(e => e.ID == key).Company = company;
     if (navigateCompany.Name == "Umbrella")
     {
         UmbrellaController.Umbrella = navigateCompany;
     }
     else
     {
         MonstersIncController.MonstersInc = navigateCompany;
     }
     return StatusCode(HttpStatusCode.NoContent);
 }