diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/AdaptiveCards/ActionActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/AdaptiveCards/ActionActivity.cs
index 2f63cc68..8cf47db6 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/AdaptiveCards/ActionActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/AdaptiveCards/ActionActivity.cs
@@ -25,6 +25,10 @@ public class ActionActivity() : AdaptiveCardActivity(Name.AdaptiveCards.Action)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.AdaptiveCards.InvokeValue Value { get; set; }
+ public new required Api.AdaptiveCards.InvokeValue Value
+ {
+ get => (Api.AdaptiveCards.InvokeValue)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/HandoffActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/HandoffActivity.cs
index 64f03df2..e7141ef1 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/HandoffActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/HandoffActivity.cs
@@ -20,7 +20,11 @@ public class HandoffActivity() : InvokeActivity(Name.Handoff)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required HandoffActivityValue Value { get; set; }
+ public new required HandoffActivityValue Value
+ {
+ get => (HandoffActivityValue)base.Value!;
+ set => base.Value = value;
+ }
}
public class HandoffActivityValue
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/AnonQueryLinkActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/AnonQueryLinkActivity.cs
index b365beda..00b16434 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/AnonQueryLinkActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/AnonQueryLinkActivity.cs
@@ -25,6 +25,10 @@ public class AnonQueryLinkActivity() : MessageExtensionActivity(Name.MessageExte
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required AppBasedQueryLink Value { get; set; }
+ public new required AppBasedQueryLink Value
+ {
+ get => (AppBasedQueryLink)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/FetchTaskActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/FetchTaskActivity.cs
index e52b4306..66845a7d 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/FetchTaskActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/FetchTaskActivity.cs
@@ -25,6 +25,10 @@ public class FetchTaskActivity() : MessageExtensionActivity(Name.MessageExtensio
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.MessageExtensions.Action Value { get; set; }
+ public new required Api.MessageExtensions.Action Value
+ {
+ get => (Api.MessageExtensions.Action)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QueryActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QueryActivity.cs
index 1555850b..f80ec669 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QueryActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QueryActivity.cs
@@ -25,6 +25,10 @@ public class QueryActivity() : MessageExtensionActivity(Name.MessageExtensions.Q
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.MessageExtensions.Query Value { get; set; }
+ public new required Api.MessageExtensions.Query Value
+ {
+ get => (Api.MessageExtensions.Query)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QueryLinkActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QueryLinkActivity.cs
index ae59a2da..3eb7f5fa 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QueryLinkActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QueryLinkActivity.cs
@@ -25,6 +25,10 @@ public class QueryLinkActivity() : MessageExtensionActivity(Name.MessageExtensio
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required AppBasedQueryLink Value { get; set; }
+ public new required AppBasedQueryLink Value
+ {
+ get => (AppBasedQueryLink)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QuerySettingUrlActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QuerySettingUrlActivity.cs
index e378e2bf..b94f3b52 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QuerySettingUrlActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/QuerySettingUrlActivity.cs
@@ -25,6 +25,10 @@ public class QuerySettingUrlActivity() : MessageExtensionActivity(Name.MessageEx
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.MessageExtensions.Query Value { get; set; }
+ public new required Api.MessageExtensions.Query Value
+ {
+ get => (Api.MessageExtensions.Query)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/SettingActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/SettingActivity.cs
index 44f8b18d..1c919e81 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/SettingActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/SettingActivity.cs
@@ -25,6 +25,10 @@ public class SettingActivity() : MessageExtensionActivity(Name.MessageExtensions
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.MessageExtensions.Query Value { get; set; }
+ public new required Api.MessageExtensions.Query Value
+ {
+ get => (Api.MessageExtensions.Query)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/SubmitActionActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/SubmitActionActivity.cs
index ed33f7cd..e74a6c68 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/SubmitActionActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/MessageExtensions/SubmitActionActivity.cs
@@ -25,6 +25,10 @@ public class SubmitActionActivity() : MessageExtensionActivity(Name.MessageExten
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.MessageExtensions.Action Value { get; set; }
+ public new required Api.MessageExtensions.Action Value
+ {
+ get => (Api.MessageExtensions.Action)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Messages/SubmitActionActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Messages/SubmitActionActivity.cs
index e8497b46..e77ee69f 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Messages/SubmitActionActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Messages/SubmitActionActivity.cs
@@ -25,7 +25,11 @@ public class SubmitActionActivity() : MessageActivity(Name.Messages.SubmitAction
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required SubmitActionValue Value { get; set; }
+ public new required SubmitActionValue Value
+ {
+ get => (SubmitActionValue)base.Value!;
+ set => base.Value = value;
+ }
///
/// The Submit Action
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/SearchActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/SearchActivity.cs
index a573f749..83761a34 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/SearchActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/SearchActivity.cs
@@ -18,5 +18,9 @@ public class SearchActivity() : InvokeActivity(Name.Search)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required SearchValue Value { get; set; }
+ public new required SearchValue Value
+ {
+ get => (SearchValue)base.Value!;
+ set => base.Value = value;
+ }
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/SignIn/TokenExchangeActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/SignIn/TokenExchangeActivity.cs
index e8377417..555e23bd 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/SignIn/TokenExchangeActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/SignIn/TokenExchangeActivity.cs
@@ -25,6 +25,10 @@ public class TokenExchangeActivity() : SignInActivity(Name.SignIn.TokenExchange)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.SignIn.ExchangeToken Value { get; set; }
+ public new required Api.SignIn.ExchangeToken Value
+ {
+ get => (Api.SignIn.ExchangeToken)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/SignIn/VerifyStateActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/SignIn/VerifyStateActivity.cs
index 8e40dd4b..f6c96785 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/SignIn/VerifyStateActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/SignIn/VerifyStateActivity.cs
@@ -25,6 +25,10 @@ public class VerifyStateActivity() : SignInActivity(Name.SignIn.VerifyState)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.SignIn.StateVerifyQuery Value { get; set; }
+ public new required Api.SignIn.StateVerifyQuery Value
+ {
+ get => (Api.SignIn.StateVerifyQuery)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tabs/FetchActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tabs/FetchActivity.cs
index dd673b1f..8e33b367 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tabs/FetchActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tabs/FetchActivity.cs
@@ -25,6 +25,10 @@ public class FetchActivity() : TabActivity(Name.Tabs.Fetch)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.Tabs.Request Value { get; set; }
+ public new required Api.Tabs.Request Value
+ {
+ get => (Api.Tabs.Request)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tabs/SubmitActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tabs/SubmitActivity.cs
index 2a8622bd..351f1afc 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tabs/SubmitActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tabs/SubmitActivity.cs
@@ -25,6 +25,10 @@ public class SubmitActivity() : TabActivity(Name.Tabs.Submit)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required Api.Tabs.Request Value { get; set; }
+ public new required Api.Tabs.Request Value
+ {
+ get => (Api.Tabs.Request)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tasks/FetchActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tasks/FetchActivity.cs
index 38147547..c49e570e 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tasks/FetchActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tasks/FetchActivity.cs
@@ -25,6 +25,10 @@ public class FetchActivity() : TaskActivity(Name.Tasks.Fetch)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required TaskModules.Request Value { get; set; }
+ public new required TaskModules.Request Value
+ {
+ get => (TaskModules.Request)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tasks/SubmitActivity.cs b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tasks/SubmitActivity.cs
index a8af59e1..a5cb3ec9 100644
--- a/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tasks/SubmitActivity.cs
+++ b/Libraries/Microsoft.Teams.Api/Activities/Invokes/Tasks/SubmitActivity.cs
@@ -25,6 +25,10 @@ public class SubmitActivity() : TaskActivity(Name.Tasks.Submit)
///
[JsonPropertyName("value")]
[JsonPropertyOrder(32)]
- public new required TaskModules.Request Value { get; set; }
+ public new required TaskModules.Request Value
+ {
+ get => (TaskModules.Request)base.Value!;
+ set => base.Value = value;
+ }
}
}
\ No newline at end of file
diff --git a/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/AdaptiveCards/AdaptiveCardsTests.cs b/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/AdaptiveCards/AdaptiveCardsTests.cs
index 32d1b74a..db7f93c8 100644
--- a/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/AdaptiveCards/AdaptiveCardsTests.cs
+++ b/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/AdaptiveCards/AdaptiveCardsTests.cs
@@ -1,7 +1,10 @@
using System.Text.Json;
+using Microsoft.Teams.Api.Activities;
using Microsoft.Teams.Api.Activities.Invokes;
+using static Microsoft.Teams.Api.Activities.Invokes.AdaptiveCards;
+
namespace Microsoft.Teams.Api.Tests.Activities.Invokes.AdaptiveCards;
public class AdaptiveCardsTests
@@ -31,4 +34,23 @@ public void AdaptiveCard_UnknownName_Throws()
var ex = Assert.Throws(() => Deserialize(json));
Assert.Contains("doesn't match any known types", ex.Message);
}
+
+ [Fact]
+ public void AdaptiveCard_Action_Value_AccessibleFromDerivedType()
+ {
+ var json = "{\"type\":\"invoke\",\"name\":\"adaptiveCard/action\",\"value\":{\"action\":{\"type\":\"Action.Submit\"}}}";
+ var activity = Deserialize(json);
+ var action = Assert.IsType(activity);
+ Assert.NotNull(action.Value);
+ Assert.NotNull(action.Value.Action);
+ }
+
+ [Fact]
+ public void AdaptiveCard_Action_Value_AccessibleFromBaseType()
+ {
+ var json = "{\"type\":\"invoke\",\"name\":\"adaptiveCard/action\",\"value\":{\"action\":{\"type\":\"Action.Submit\"}}}";
+ var activity = Deserialize(json);
+ var invoke = Assert.IsAssignableFrom(activity);
+ Assert.NotNull(invoke.Value);
+ }
}
\ No newline at end of file
diff --git a/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/MessageExtensions/MessageExtensionsTests.cs b/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/MessageExtensions/MessageExtensionsTests.cs
index edd5796c..15c9eacb 100644
--- a/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/MessageExtensions/MessageExtensionsTests.cs
+++ b/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/MessageExtensions/MessageExtensionsTests.cs
@@ -1,7 +1,10 @@
using System.Text.Json;
+using Microsoft.Teams.Api.Activities;
using Microsoft.Teams.Api.Activities.Invokes;
+using static Microsoft.Teams.Api.Activities.Invokes.MessageExtensions;
+
namespace Microsoft.Teams.Api.Tests.Activities.Invokes.MessageExtensions;
public class MessageExtensionsTests
@@ -31,4 +34,23 @@ public void MessageExtension_UnknownName_Throws()
var ex = Assert.Throws(() => Deserialize(json));
Assert.Contains("doesn't match any known types", ex.Message);
}
+
+ [Fact]
+ public void MessageExtension_Query_Value_AccessibleFromDerivedType()
+ {
+ var json = "{\"type\":\"invoke\",\"name\":\"composeExtension/query\",\"value\":{\"commandId\":\"searchCmd\"}}";
+ MessageExtensionActivity? activity = Deserialize(json);
+ var query = Assert.IsType(activity);
+ Assert.NotNull(query.Value);
+ Assert.Equal("searchCmd", query.Value.CommandId);
+ }
+
+ [Fact]
+ public void MessageExtension_Query_Value_AccessibleFromBaseType()
+ {
+ var json = "{\"type\":\"invoke\",\"name\":\"composeExtension/query\",\"value\":{\"commandId\":\"searchCmd\"}}";
+ var activity = Deserialize(json);
+ var invoke = Assert.IsAssignableFrom(activity);
+ Assert.NotNull(invoke.Value);
+ }
}
\ No newline at end of file
diff --git a/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/Tasks/TasksTests.cs b/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/Tasks/TasksTests.cs
index 04c3693d..1d269b3f 100644
--- a/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/Tasks/TasksTests.cs
+++ b/Tests/Microsoft.Teams.Api.Tests/Activities/Invokes/Tasks/TasksTests.cs
@@ -1,7 +1,10 @@
using System.Text.Json;
+using Microsoft.Teams.Api.Activities;
using Microsoft.Teams.Api.Activities.Invokes;
+using static Microsoft.Teams.Api.Activities.Invokes.Tasks;
+
namespace Microsoft.Teams.Api.Tests.Activities.Invokes.Tasks;
public class TasksTests
@@ -31,4 +34,22 @@ public void Task_UnknownName_Throws()
var ex = Assert.Throws(() => Deserialize(json));
Assert.Contains("doesn't match any known types", ex.Message);
}
+
+ [Fact]
+ public void Task_Fetch_Value_AccessibleFromDerivedType()
+ {
+ var json = "{\"type\":\"invoke\",\"name\":\"task/fetch\",\"value\":{\"context\":{\"theme\":\"default\"}}}";
+ var activity = Deserialize(json);
+ var fetch = Assert.IsType(activity);
+ Assert.NotNull(fetch.Value);
+ }
+
+ [Fact]
+ public void Task_Fetch_Value_AccessibleFromBaseType()
+ {
+ var json = "{\"type\":\"invoke\",\"name\":\"task/fetch\",\"value\":{\"context\":{\"theme\":\"default\"}}}";
+ var activity = Deserialize(json);
+ var invoke = Assert.IsAssignableFrom(activity);
+ Assert.NotNull(invoke.Value);
+ }
}
\ No newline at end of file