diff --git a/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs b/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs
new file mode 100644
index 0000000..04db0d6
--- /dev/null
+++ b/src/SlackConnector.Tests.Unit/Extensions/UserExtensionsTests.cs
@@ -0,0 +1,52 @@
+using NUnit.Framework;
+using SlackConnector.Connections.Models;
+using SlackConnector.Extensions;
+
+namespace SlackConnector.Tests.Unit.Extensions {
+ [TestFixture]
+ public class UserExtensionsTests {
+ [Test]
+ public void should_create_slack_user_from_user() {
+ var user = new User {
+ Id = "Id",
+ Name = "Name",
+ TimeZoneOffset = 0L,
+ IsBot = false,
+ Deleted = false,
+ Presence = "active",
+ Profile = new Profile {
+ Email = "a@b.c",
+ FirstName = "First",
+ LastName = "Last",
+ Image = "http://image.com",
+ Title = "Developer"
+ }
+ };
+
+ var slackUser = user.ToSlackUser();
+
+ Assert.AreEqual(user.Id, slackUser.Id);
+ Assert.AreEqual(user.Name, slackUser.Name);
+ Assert.AreEqual(user.Profile.Email, slackUser.Email);
+ Assert.AreEqual(user.TimeZoneOffset, slackUser.TimeZoneOffset);
+ Assert.AreEqual(user.IsBot, slackUser.IsBot);
+ Assert.AreEqual(user.Profile.FirstName, slackUser.FirstName);
+ Assert.AreEqual(user.Profile.LastName, slackUser.LastName);
+ Assert.AreEqual(user.Profile.Image, slackUser.Image);
+ Assert.AreEqual(user.Profile.Title, slackUser.WhatIDo);
+ Assert.AreEqual(user.Deleted, slackUser.Deleted);
+ Assert.IsNotNull(slackUser.Online);
+ Assert.IsTrue(slackUser.Online.Value);
+ }
+
+ [Test]
+ public void should_create_slack_user_from_incomplete_user() {
+ var user = new User {Presence = "Away"};
+
+ var slackUser = user.ToSlackUser();
+
+ Assert.IsNotNull(slackUser.Online);
+ Assert.IsFalse(slackUser.Online.Value);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/SlackConnector.Tests.Unit/SlackConnector.Tests.Unit.csproj b/src/SlackConnector.Tests.Unit/SlackConnector.Tests.Unit.csproj
index 3e20c73..fc75396 100644
--- a/src/SlackConnector.Tests.Unit/SlackConnector.Tests.Unit.csproj
+++ b/src/SlackConnector.Tests.Unit/SlackConnector.Tests.Unit.csproj
@@ -152,6 +152,7 @@
+
diff --git a/src/SlackConnector/Connections/Models/Profile.cs b/src/SlackConnector/Connections/Models/Profile.cs
index a92d94e..cceefac 100644
--- a/src/SlackConnector/Connections/Models/Profile.cs
+++ b/src/SlackConnector/Connections/Models/Profile.cs
@@ -1,9 +1,7 @@
using Newtonsoft.Json;
-namespace SlackConnector.Connections.Models
-{
- internal class Profile
- {
+namespace SlackConnector.Connections.Models {
+ internal class Profile {
[JsonProperty("first_name")]
public string FirstName { get; set; }
@@ -16,6 +14,11 @@ internal class Profile
[JsonProperty("real_name_normalized")]
public string RealNameNormalised { get; set; }
+ [JsonProperty("image_512")]
+ public string Image { get; set; }
+
public string Email { get; set; }
+
+ public string Title { get; set; }
}
}
\ No newline at end of file
diff --git a/src/SlackConnector/Extensions/UserExtensions.cs b/src/SlackConnector/Extensions/UserExtensions.cs
index 998f336..8813ebb 100644
--- a/src/SlackConnector/Extensions/UserExtensions.cs
+++ b/src/SlackConnector/Extensions/UserExtensions.cs
@@ -13,7 +13,12 @@ public static SlackUser ToSlackUser(this User user)
Name = user.Name,
Email = user.Profile?.Email,
TimeZoneOffset = user.TimeZoneOffset,
- IsBot = user.IsBot
+ IsBot = user.IsBot,
+ FirstName = user.Profile?.FirstName,
+ LastName = user.Profile?.LastName,
+ Image = user.Profile?.Image,
+ WhatIDo = user.Profile?.Title,
+ Deleted = user.Deleted
};
if (!string.IsNullOrWhiteSpace(user.Presence))
diff --git a/src/SlackConnector/Models/SlackUser.cs b/src/SlackConnector/Models/SlackUser.cs
index 9954317..a411f8c 100644
--- a/src/SlackConnector/Models/SlackUser.cs
+++ b/src/SlackConnector/Models/SlackUser.cs
@@ -5,6 +5,11 @@ public class SlackUser
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string Image { get; set; }
+ public string WhatIDo { get; set; }
+ public bool Deleted { get; set; }
public string FormattedUserId
{