|
1 | | -using System; |
| 1 | +using System; |
| 2 | +using System.Net.Http; |
2 | 3 | using AutoFixture; |
3 | 4 | using AutoFixture.AutoMoq; |
| 5 | +using Contentstack.Management.Core; |
4 | 6 | using Contentstack.Management.Core.Services.Models; |
| 7 | +using Contentstack.Management.Core.Utils; |
5 | 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; |
6 | 9 | using Newtonsoft.Json; |
| 10 | + |
7 | 11 | namespace Contentstack.Management.Core.Unit.Tests.Core.Services.Models |
8 | 12 | { |
9 | 13 | [TestClass] |
10 | 14 | public class FetchDeleteServiceTest |
11 | 15 | { |
12 | 16 | private JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings()); |
13 | 17 | private readonly IFixture _fixture = new Fixture() |
14 | | - .Customize(new AutoMoqCustomization()); |
| 18 | + .Customize(new AutoMoqCustomization()); |
15 | 19 |
|
| 20 | + private static ContentstackClientOptions CreateConfig(IFixture fixture) |
| 21 | + { |
| 22 | + var config = new ContentstackClientOptions(); |
| 23 | + config.Authtoken = fixture.Create<string>(); |
| 24 | + return config; |
| 25 | + } |
16 | 26 |
|
17 | 27 | [TestMethod] |
18 | 28 | public void Should_Throw_On_Null_Serializer() |
@@ -60,5 +70,63 @@ public void Should_Provide_Valid_Param_On_Initialize() |
60 | 70 | Assert.AreEqual("GET", service.HttpMethod); |
61 | 71 | Assert.AreEqual(resourcePath, service.ResourcePath); |
62 | 72 | } |
| 73 | + |
| 74 | + [TestMethod] |
| 75 | + public void Delete_Release_Should_Not_Include_Content_Type_Header() |
| 76 | + { |
| 77 | + var stack = new Management.Core.Models.Stack(null, _fixture.Create<string>()); |
| 78 | + var service = new FetchDeleteService(serializer, stack, "/releases/release_uid_123", "DELETE"); |
| 79 | + |
| 80 | + service.CreateHttpRequest(new HttpClient(), CreateConfig(_fixture)); |
| 81 | + |
| 82 | + Assert.IsFalse(service.Headers.ContainsKey(HeadersKey.ContentTypeHeader), "DELETE /releases/{uid} must not include Content-Type header."); |
| 83 | + } |
| 84 | + |
| 85 | + [TestMethod] |
| 86 | + public void Delete_Release_With_Path_Releases_Only_Should_Not_Include_Content_Type_Header() |
| 87 | + { |
| 88 | + var stack = new Management.Core.Models.Stack(null, _fixture.Create<string>()); |
| 89 | + var service = new FetchDeleteService(serializer, stack, "/releases", "DELETE"); |
| 90 | + |
| 91 | + service.CreateHttpRequest(new HttpClient(), CreateConfig(_fixture)); |
| 92 | + |
| 93 | + Assert.IsFalse(service.Headers.ContainsKey(HeadersKey.ContentTypeHeader)); |
| 94 | + } |
| 95 | + |
| 96 | + [TestMethod] |
| 97 | + public void Delete_Release_Items_Path_Should_Include_Content_Type_Header() |
| 98 | + { |
| 99 | + var stack = new Management.Core.Models.Stack(null, _fixture.Create<string>()); |
| 100 | + var service = new FetchDeleteService(serializer, stack, "/releases/release_uid/item", "DELETE"); |
| 101 | + |
| 102 | + service.CreateHttpRequest(new HttpClient(), CreateConfig(_fixture)); |
| 103 | + |
| 104 | + Assert.IsTrue(service.Headers.ContainsKey(HeadersKey.ContentTypeHeader), "DELETE /releases/{uid}/item (FetchDeleteService) should still set Content-Type."); |
| 105 | + Assert.AreEqual("application/json", service.GetHeaderValue(HeadersKey.ContentTypeHeader)); |
| 106 | + } |
| 107 | + |
| 108 | + [TestMethod] |
| 109 | + public void Fetch_Release_Should_Include_Content_Type_Header() |
| 110 | + { |
| 111 | + var stack = new Management.Core.Models.Stack(null, _fixture.Create<string>()); |
| 112 | + var service = new FetchDeleteService(serializer, stack, "/releases/release_uid_123", "GET"); |
| 113 | + |
| 114 | + service.CreateHttpRequest(new HttpClient(), CreateConfig(_fixture)); |
| 115 | + |
| 116 | + Assert.IsTrue(service.Headers.ContainsKey(HeadersKey.ContentTypeHeader)); |
| 117 | + Assert.AreEqual("application/json", service.GetHeaderValue(HeadersKey.ContentTypeHeader)); |
| 118 | + } |
| 119 | + |
| 120 | + [TestMethod] |
| 121 | + public void Delete_Non_Release_Resource_Should_Include_Content_Type_Header() |
| 122 | + { |
| 123 | + var stack = new Management.Core.Models.Stack(null, _fixture.Create<string>()); |
| 124 | + var service = new FetchDeleteService(serializer, stack, "/contenttypes/ct_uid", "DELETE"); |
| 125 | + |
| 126 | + service.CreateHttpRequest(new HttpClient(), CreateConfig(_fixture)); |
| 127 | + |
| 128 | + Assert.IsTrue(service.Headers.ContainsKey(HeadersKey.ContentTypeHeader)); |
| 129 | + Assert.AreEqual("application/json", service.GetHeaderValue(HeadersKey.ContentTypeHeader)); |
| 130 | + } |
63 | 131 | } |
64 | 132 | } |
0 commit comments