-
Notifications
You must be signed in to change notification settings - Fork 388
Expand file tree
/
Copy pathBulkTests.cs
More file actions
87 lines (74 loc) · 3.45 KB
/
Copy pathBulkTests.cs
File metadata and controls
87 lines (74 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Xml;
using System.Xml.Serialization;
using NUnit.Framework;
namespace Salesforce.Common.UnitTests
{
[TestFixture]
public class BulkTests
{
private const string UserAgent = "forcedotcom-toolkit-dotnet";
[Test]
public async void Requests_CheckHttpRequestMessage_HttpGetXml()
{
var client = new HttpClient(new BulkServiceClientRouteHandler(r =>
{
// the v should be removed...
Assert.AreEqual(r.RequestUri.ToString(), "http://localhost:1899/services/data/32/brad");
Assert.IsNotNull(r.Headers.UserAgent);
Assert.AreEqual(r.Headers.UserAgent.ToString(), UserAgent + "/v32");
Assert.IsNotNull(r.Headers.GetValues("X-SFDC-Session"));
Assert.IsTrue(r.Headers.GetValues("X-SFDC-Session").Count() == 1);
Assert.AreEqual(r.Headers.GetValues("X-SFDC-Session").First(), "accessToken");
}, new object()));
using (IXmlHttpClient httpClient = new XmlHttpClient("http://localhost:1899", "v32", "accessToken", client))
{
await httpClient.HttpGetAsync<object>("brad");
}
}
[Test]
public async void Requests_CheckHttpRequestMessageAndResponseDeserialization_HttpPostXml()
{
var testObject = new SerializerTest {TestField = "testMessage"};
var client = new HttpClient(new BulkServiceClientRouteHandler(r =>
{
// the v should be removed...
Assert.AreEqual(r.RequestUri.ToString(), "http://localhost:1899/services/data/32/brad");
Assert.IsNotNull(r.Headers.UserAgent);
Assert.AreEqual(r.Headers.UserAgent.ToString(), UserAgent + "/v32");
Assert.IsNotNull(r.Headers.GetValues("X-SFDC-Session"));
Assert.IsTrue(r.Headers.GetValues("X-SFDC-Session").Count() == 1);
Assert.AreEqual(r.Headers.GetValues("X-SFDC-Session").First(), "accessToken");
// check the object is serialized as expected
var serializedPayload = MimicSerialization(testObject);
var stringContent = r.Content.ReadAsStringAsync().Result;
Assert.AreEqual(serializedPayload, stringContent);
}, testObject)); // pass in the object to be returned (Same object roundtripped here for simplicity)
using (IXmlHttpClient httpClient = new XmlHttpClient("http://localhost:1899", "v32", "accessToken", client))
{
var result = await httpClient.HttpPostAsync<SerializerTest>(testObject, "brad");
Assert.AreEqual(testObject.TestField, result.TestField);
}
}
[XmlRoot(ElementName = "test_Object")]
public class SerializerTest
{
[XmlElement(ElementName = "test_Field")]
public string TestField { get; set; }
}
private static string MimicSerialization(object inputObject)
{
var xmlSerializer = new XmlSerializer(inputObject.GetType());
var stringWriter = new StringWriter();
string result;
using (var writer = XmlWriter.Create(stringWriter))
{
xmlSerializer.Serialize(writer, inputObject);
result = stringWriter.ToString();
}
return result;
}
}
}