summaryrefslogtreecommitdiffstats
path: root/SendGrid/Tests
diff options
context:
space:
mode:
Diffstat (limited to 'SendGrid/Tests')
-rwxr-xr-xSendGrid/Tests/TestSendgrid.cs98
-rwxr-xr-xSendGrid/Tests/TestUtils.cs38
-rwxr-xr-xSendGrid/Tests/Tests.csproj1
-rwxr-xr-xSendGrid/Tests/Transport/TestREST.cs51
-rwxr-xr-xSendGrid/Tests/Transport/TestSMTP.cs8
5 files changed, 167 insertions, 29 deletions
diff --git a/SendGrid/Tests/TestSendgrid.cs b/SendGrid/Tests/TestSendgrid.cs
index 22e8bb7..95604d3 100755
--- a/SendGrid/Tests/TestSendgrid.cs
+++ b/SendGrid/Tests/TestSendgrid.cs
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Globalization;
+using System.IO;
using System.Linq;
+using System.Net.Mail;
using System.Text;
using NUnit.Framework;
using SendGridMail;
@@ -160,11 +162,11 @@ namespace Tests
{
var header = new Header();
var sendgrid = new SendGrid(header);
- var text = "hello world";
- sendgrid.EnableClickTracking(text);
+ bool includePlainText = true;
+ sendgrid.EnableClickTracking(includePlainText);
String json = header.AsJson();
- Assert.AreEqual("{\"filters\" : {\"clicktrack\" : {\"settings\" : {\"enable\" : \"1\",\"text\" : \"hello world\"}}}}", json);
+ Assert.AreEqual("{\"filters\" : {\"clicktrack\" : {\"settings\" : {\"enable\" : \"1\",\"enable_text\" : \"1\"}}}}", json);
}
[Test]
@@ -178,7 +180,7 @@ namespace Tests
sendgrid.EnableSpamCheck(score, url);
String json = header.AsJson();
- Assert.AreEqual("{\"filters\" : {\"spamcheck\" : {\"settings\" : {\"enable\" : \"1\",\"score\" : \"5\",\"url\" : \"http:\\/\\/www.example.com\"}}}}", json);
+ Assert.AreEqual("{\"filters\" : {\"spamcheck\" : {\"settings\" : {\"enable\" : \"1\",\"maxscore\" : \"5\",\"url\" : \"http:\\/\\/www.example.com\"}}}}", json);
}
[Test]
@@ -189,20 +191,34 @@ namespace Tests
var text = "<% %>";
var html = "<% name %>";
- var replace = "John";
- var url = "http://www.example.com";
- var landing = "this_landing";
- sendgrid.EnableUnsubscribe(text, html, replace, url, landing);
- var jsonText = "\"text\" : \""+text+"\"";
- var jsonHtml = "\"html\" : \""+html+"\"";
- var jsonReplace = "\"replace\" : \""+replace+"\"";
- var jsonUrl = "\"url\" : \"http:\\/\\/www.example.com\"";
- var jsonLanding = "\"landing\" : \""+landing+"\"";
+ var jsonText = "\"text\\/plain\" : \"" + text + "\"";
+ var jsonHtml = "\"text\\/html\" : \"" + html + "\"";
+
+ sendgrid.EnableUnsubscribe(text, html);
String json = header.AsJson();
Assert.AreEqual("{\"filters\" : {\"subscriptiontrack\" : {\"settings\" : {\"enable\" : \"1\","+
- jsonText+","+jsonHtml+","+jsonReplace+","+jsonUrl+","+jsonLanding+"}}}}", json);
+ jsonText+","+jsonHtml+"}}}}", json);
+
+ header = new Header();
+ sendgrid = new SendGrid(header);
+
+ var replace = "John";
+ var jsonReplace = "\"replace\" : \"" + replace + "\"";
+
+ sendgrid.EnableUnsubscribe(replace);
+
+ json = header.AsJson();
+ Assert.AreEqual("{\"filters\" : {\"subscriptiontrack\" : {\"settings\" : {\"enable\" : \"1\"," + jsonReplace + "}}}}", json);
+
+ text = "bad";
+ html = "<% name %>";
+ Assert.Throws<Exception>(delegate { sendgrid.EnableUnsubscribe(text, html); });
+
+ text = "<% %>";
+ html = "bad";
+ Assert.Throws<Exception>(delegate { sendgrid.EnableUnsubscribe(text, html); });
}
@@ -219,7 +235,7 @@ namespace Tests
sendgrid.EnableFooter(text, html);
String json = header.AsJson();
- Assert.AreEqual("{\"filters\" : {\"footer\" : {\"settings\" : {\"enable\" : \"1\",\"text\" : \""+text+"\",\"html\" : \""+escHtml+"\"}}}}", json);
+ Assert.AreEqual("{\"filters\" : {\"footer\" : {\"settings\" : {\"enable\" : \"1\",\"text\\/plain\" : \""+text+"\",\"text\\/html\" : \""+escHtml+"\"}}}}", json);
}
[Test]
@@ -236,11 +252,11 @@ namespace Tests
sendgrid.EnableGoogleAnalytics(source, medium, term, content, campaign);
- var jsonSource = "\"source\" : \"SomeDomain.com\"";
- var jsonMedium = "\"medium\" : \""+medium+"\"";
- var jsonTerm = "\"term\" : \""+term+"\"";
- var jsonContent = "\"content\" : \""+content+"\"";
- var jsonCampaign = "\"campaign\" : \""+campaign+"\"";
+ var jsonSource = "\"utm_source\" : \"SomeDomain.com\"";
+ var jsonMedium = "\"utm_medium\" : \"" + medium + "\"";
+ var jsonTerm = "\"utm_term\" : \"" + term + "\"";
+ var jsonContent = "\"utm_content\" : \"" + content + "\"";
+ var jsonCampaign = "\"utm_campaign\" : \"" + campaign + "\"";
String json = header.AsJson();
Assert.AreEqual("{\"filters\" : {\"ganalytics\" : {\"settings\" : {\"enable\" : \"1\","+
@@ -258,7 +274,10 @@ namespace Tests
sendgrid.EnableTemplate(html);
String json = header.AsJson();
- Assert.AreEqual("{\"filters\" : {\"template\" : {\"settings\" : {\"enable\" : \"1\",\"html\" : \""+escHtml+"\"}}}}", json);
+ Assert.AreEqual("{\"filters\" : {\"template\" : {\"settings\" : {\"enable\" : \"1\",\"text\\/html\" : \""+escHtml+"\"}}}}", json);
+
+ escHtml = "bad";
+ Assert.Throws<Exception>(delegate { sendgrid.EnableTemplate(escHtml); });
}
[Test]
@@ -285,5 +304,42 @@ namespace Tests
String json = header.AsJson();
Assert.AreEqual("{\"filters\" : {\"bypass_list_management\" : {\"settings\" : {\"enable\" : \"1\"}}}}", json);
}
+
+ [Test]
+ public void CreateMimeMessage()
+ {
+ var message = SendGrid.GetInstance();
+ var attachment = System.IO.Path.GetTempFileName();
+ var text = "this is a test";
+ var html = "<b>This<\b> is a better test";
+ var headers = new KeyValuePair<String, String>("custom", "header");
+ message.AddAttachment(attachment);
+ message.Text = text;
+ message.Html = html;
+ message.AddTo("foo@bar.com");
+ message.From = new MailAddress("foo@bar.com");
+ message.AddHeaders(new Dictionary<string, string>{{headers.Key, headers.Value}});
+ message.EnableGravatar();
+
+ var mime = message.CreateMimeMessage();
+
+ var sr = new StreamReader(mime.AlternateViews[0].ContentStream);
+ var result = sr.ReadToEnd();
+ Assert.AreEqual(text, result);
+
+ sr = new StreamReader(mime.AlternateViews[1].ContentStream);
+ result = sr.ReadToEnd();
+ Assert.AreEqual(html, result);
+
+ result = mime.Headers.Get(headers.Key);
+ Assert.AreEqual(headers.Value, result);
+
+ result = mime.Headers.Get("X-Smtpapi");
+ var expected = "{\"filters\" : {\"gravatar\" : {\"settings\" : {\"enable\" : \"1\"}}}}";
+ Assert.AreEqual(expected, result);
+
+ result = mime.Attachments[0].Name;
+ Assert.AreEqual(Path.GetFileName(attachment), result);
+ }
}
}
diff --git a/SendGrid/Tests/TestUtils.cs b/SendGrid/Tests/TestUtils.cs
new file mode 100755
index 0000000..48febcf
--- /dev/null
+++ b/SendGrid/Tests/TestUtils.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using SendGridMail;
+
+namespace Tests
+{
+ [TestFixture]
+ public class TestUtils
+ {
+ [Test]
+ public void TestSerialize()
+ {
+ var testcase = "foo";
+ String result = Utils.Serialize(testcase);
+ Assert.AreEqual("\"foo\"", result);
+
+ var testcase2 = 1;
+ result = Utils.Serialize(testcase2);
+ Assert.AreEqual("1", result);
+ }
+
+ [Test]
+ public void TestSerializeDictionary()
+ {
+ var test = new Dictionary<string, string>
+ {
+ {"a", "b"},
+ {"c", "d/e"}
+ };
+ var result = Utils.SerializeDictionary(test);
+ var expected = "{\"a\":\"b\",\"c\":\"d\\/e\"}";
+ Assert.AreEqual(expected, result);
+ }
+ }
+}
diff --git a/SendGrid/Tests/Tests.csproj b/SendGrid/Tests/Tests.csproj
index 8009274..cd43bd1 100755
--- a/SendGrid/Tests/Tests.csproj
+++ b/SendGrid/Tests/Tests.csproj
@@ -58,6 +58,7 @@
<Compile Include="TestSendgrid.cs" />
<Compile Include="TestSendgridMessageSetup.cs" />
<Compile Include="TestTreeNode.cs" />
+ <Compile Include="TestUtils.cs" />
<Compile Include="Transport\TestREST.cs" />
<Compile Include="Transport\TestSMTP.cs" />
</ItemGroup>
diff --git a/SendGrid/Tests/Transport/TestREST.cs b/SendGrid/Tests/Transport/TestREST.cs
index ccbab48..e9cc909 100755
--- a/SendGrid/Tests/Transport/TestREST.cs
+++ b/SendGrid/Tests/Transport/TestREST.cs
@@ -1,8 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Net;
+using System.Net.Mail;
using System.Text;
+using Moq;
using NUnit.Framework;
+using SendGridMail;
+using SendGridMail.Transport;
namespace Tests.Transport
{
@@ -10,15 +15,53 @@ namespace Tests.Transport
class TestREST
{
[Test]
- public void TestDeliver()
+ public void TestFetchFileBodies()
{
-
+ var test = REST.GetInstance(new NetworkCredential("foo", "bar"));
+ var message = new Mock<ISendGrid>();
+ message.SetupProperty(foo => foo.Attachments, null);
+ var result = test.FetchFileBodies(message.Object);
+ Assert.AreEqual(0, result.Count);
+
+ message.SetupProperty(foo => foo.Attachments, new string[] {"foo", "bar", "raz"});
+ result = test.FetchFileBodies(message.Object);
+ Assert.AreEqual(3, result.Count);
+ Assert.AreEqual(result[0].Key, "foo");
+ Assert.AreEqual(result[1].Key, "bar");
+ Assert.AreEqual(result[2].Key, "raz");
+ Assert.AreEqual(result[0].Value.Name, "foo");
+ Assert.AreEqual(result[1].Value.Name, "bar");
+ Assert.AreEqual(result[2].Value.Name, "raz");
}
[Test]
- public void TestConstructor()
+ public void TestFetchFormParams()
{
-
+ var bar = REST.GetInstance(new NetworkCredential("usr", "psswd"));
+ var message = SendGrid.GetInstance();
+ message.AddTo("foo@bar.com");
+ message.AddCc("cc@bar.com");
+ message.AddBcc("bcc@bar.com");
+ message.From = new MailAddress("from@raz.com");
+ message.Subject = "subject";
+ message.Text = "text";
+ message.Html = "html";
+ message.AddHeaders(new Dictionary<string, string>{{"headerkey", "headervalue"}});
+ message.Header.SetCategory("cat");
+
+ var result = bar.FetchFormParams(message);
+ Assert.True(result.Any(r => r.Key == "api_user" && r.Value == "usr"));
+ Assert.True(result.Any(r => r.Key == "api_key" && r.Value == "psswd"));
+ Assert.True(result.Any(r => r.Key == "to[]" && r.Value == "foo@bar.com"));
+ Assert.True(result.Any(r => r.Key == "cc[]" && r.Value == "cc@bar.com"));
+ Assert.True(result.Any(r => r.Key == "bcc[]" && r.Value == "bcc@bar.com"));
+ Assert.True(result.Any(r => r.Key == "from" && r.Value == "from@raz.com"));
+ Assert.True(result.Any(r => r.Key == "subject" && r.Value == "subject"));
+ Assert.True(result.Any(r => r.Key == "text" && r.Value == "text"));
+ Assert.True(result.Any(r => r.Key == "html" && r.Value == "html"));
+ Assert.True(result.Any(r => r.Key == "headers" && r.Value == "{\"headerkey\":\"headervalue\"}"));
+ Assert.True(result.Any(r => r.Key == "x-smtpapi" && r.Value == "{\"category\" : \"cat\"}"));
+ Assert.True(result.Any(r => r.Key == "html" && r.Value == "html"));
}
}
}
diff --git a/SendGrid/Tests/Transport/TestSMTP.cs b/SendGrid/Tests/Transport/TestSMTP.cs
index e0e4fe5..3c17008 100755
--- a/SendGrid/Tests/Transport/TestSMTP.cs
+++ b/SendGrid/Tests/Transport/TestSMTP.cs
@@ -23,7 +23,7 @@ namespace Tests.Transport
mockClient.Setup(foo => foo.Send(mime));
var client = mockClient.Object;
var credentials = new NetworkCredential("username", "password");
- var test = SMTP.GenerateInstance(client, credentials);
+ var test = SMTP.GetInstance(client, credentials);
test.Deliver(message);
mockClient.Verify(foo => foo.Send(mime), Times.Once());
@@ -38,14 +38,14 @@ namespace Tests.Transport
mock.SetupProperty(foo => foo.EnableSsl);
var client = mock.Object;
var credentials = new NetworkCredential("username", "password");
- var test = SMTP.GenerateInstance(client, credentials);
+ var test = SMTP.GetInstance(client, credentials);
mock.Verify(foo => foo.EnableSsl, Times.Never());
mock = new Mock<SMTP.ISmtpClient>();
mock.SetupProperty(foo => foo.EnableSsl);
client = mock.Object;
credentials = new NetworkCredential("username", "password");
- test = SMTP.GenerateInstance(client, credentials, port:SMTP.SslPort);
+ test = SMTP.GetInstance(client, credentials, port:SMTP.SslPort);
mock.VerifySet(foo => foo.EnableSsl = true);
mock = new Mock<SMTP.ISmtpClient>();
@@ -54,7 +54,7 @@ namespace Tests.Transport
credentials = new NetworkCredential("username", "password");
try
{
- test = SMTP.GenerateInstance(client, credentials, port: SMTP.TlsPort);
+ test = SMTP.GetInstance(client, credentials, port: SMTP.TlsPort);
Assert.Fail("should have thrown an unsupported port exception");
}
catch (NotSupportedException ex)