mirror of
https://github.com/zoriya/octokit.net.git
synced 2025-12-06 07:16:09 +00:00
[Feat] Add suspended_at and suspended_by to the Installation model
This commit is contained in:
@@ -74,6 +74,8 @@ namespace Octokit.Tests.Integration.Clients
|
|||||||
Assert.Equal(InstallationReadWritePermissionLevel.Read, installation.Permissions.Metadata);
|
Assert.Equal(InstallationReadWritePermissionLevel.Read, installation.Permissions.Metadata);
|
||||||
Assert.False(string.IsNullOrEmpty(installation.HtmlUrl));
|
Assert.False(string.IsNullOrEmpty(installation.HtmlUrl));
|
||||||
Assert.NotEqual(0, installation.TargetId);
|
Assert.NotEqual(0, installation.TargetId);
|
||||||
|
Assert.Null(installation.SuspendedBy);
|
||||||
|
Assert.Null(installation.SuspendedAt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
165
Octokit.Tests/Models/InstallationTests.cs
Normal file
165
Octokit.Tests/Models/InstallationTests.cs
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Octokit.Internal;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Octokit.Tests.Models
|
||||||
|
{
|
||||||
|
public class InstallationResponseTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void CanBeDeserialized()
|
||||||
|
{
|
||||||
|
const string json = @"[
|
||||||
|
{
|
||||||
|
""id"": 1,
|
||||||
|
""account"": {
|
||||||
|
""login"": ""octocat"",
|
||||||
|
""id"": 1,
|
||||||
|
""node_id"": ""MDQ6VXNlcjE="",
|
||||||
|
""avatar_url"": ""https://github.com/images/error/octocat_happy.gif"",
|
||||||
|
""gravatar_id"": """",
|
||||||
|
""url"": ""https://api.github.com/users/octocat"",
|
||||||
|
""html_url"": ""https://github.com/octocat"",
|
||||||
|
""followers_url"": ""https://api.github.com/users/octocat/followers"",
|
||||||
|
""following_url"": ""https://api.github.com/users/octocat/following{/other_user}"",
|
||||||
|
""gists_url"": ""https://api.github.com/users/octocat/gists{/gist_id}"",
|
||||||
|
""starred_url"": ""https://api.github.com/users/octocat/starred{/owner}{/repo}"",
|
||||||
|
""subscriptions_url"": ""https://api.github.com/users/octocat/subscriptions"",
|
||||||
|
""organizations_url"": ""https://api.github.com/users/octocat/orgs"",
|
||||||
|
""repos_url"": ""https://api.github.com/users/octocat/repos"",
|
||||||
|
""events_url"": ""https://api.github.com/users/octocat/events{/privacy}"",
|
||||||
|
""received_events_url"": ""https://api.github.com/users/octocat/received_events"",
|
||||||
|
""type"": ""User"",
|
||||||
|
""site_admin"": false
|
||||||
|
},
|
||||||
|
""access_tokens_url"": ""https://api.github.com/app/installations/1/access_tokens"",
|
||||||
|
""repositories_url"": ""https://api.github.com/installation/repositories"",
|
||||||
|
""html_url"": ""https://github.com/organizations/github/settings/installations/1"",
|
||||||
|
""app_id"": 1,
|
||||||
|
""target_id"": 1,
|
||||||
|
""target_type"": ""Organization"",
|
||||||
|
""permissions"": {
|
||||||
|
""checks"": ""write"",
|
||||||
|
""metadata"": ""read"",
|
||||||
|
""contents"": ""read""
|
||||||
|
},
|
||||||
|
""events"": [
|
||||||
|
""push"",
|
||||||
|
""pull_request""
|
||||||
|
],
|
||||||
|
""single_file_name"": ""config.yaml"",
|
||||||
|
""has_multiple_single_files"": true,
|
||||||
|
""single_file_paths"": [
|
||||||
|
""config.yml"",
|
||||||
|
"".github/issue_TEMPLATE.md""
|
||||||
|
],
|
||||||
|
""repository_selection"": ""selected"",
|
||||||
|
""created_at"": ""2017-07-08T16:18:44-04:00"",
|
||||||
|
""updated_at"": ""2017-07-08T16:18:44-04:00"",
|
||||||
|
""app_slug"": ""github-actions"",
|
||||||
|
""suspended_at"": null,
|
||||||
|
""suspended_by"": null
|
||||||
|
}
|
||||||
|
]";
|
||||||
|
|
||||||
|
var serializer = new SimpleJsonSerializer();
|
||||||
|
|
||||||
|
var installations = serializer.Deserialize<IReadOnlyList<Installation>>(json);
|
||||||
|
|
||||||
|
Assert.NotNull(installations);
|
||||||
|
Assert.NotEmpty(installations);
|
||||||
|
Assert.Equal(1, installations.Count);
|
||||||
|
Assert.Null(installations.First().SuspendedAt);
|
||||||
|
Assert.Null(installations.First().SuspendedBy);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CanBeDeserializedWithSuspendedAtValues()
|
||||||
|
{
|
||||||
|
const string json = @"[
|
||||||
|
{
|
||||||
|
""id"": 1,
|
||||||
|
""account"": {
|
||||||
|
""login"": ""octocat"",
|
||||||
|
""id"": 1,
|
||||||
|
""node_id"": ""MDQ6VXNlcjE="",
|
||||||
|
""avatar_url"": ""https://github.com/images/error/octocat_happy.gif"",
|
||||||
|
""gravatar_id"": """",
|
||||||
|
""url"": ""https://api.github.com/users/octocat"",
|
||||||
|
""html_url"": ""https://github.com/octocat"",
|
||||||
|
""followers_url"": ""https://api.github.com/users/octocat/followers"",
|
||||||
|
""following_url"": ""https://api.github.com/users/octocat/following{/other_user}"",
|
||||||
|
""gists_url"": ""https://api.github.com/users/octocat/gists{/gist_id}"",
|
||||||
|
""starred_url"": ""https://api.github.com/users/octocat/starred{/owner}{/repo}"",
|
||||||
|
""subscriptions_url"": ""https://api.github.com/users/octocat/subscriptions"",
|
||||||
|
""organizations_url"": ""https://api.github.com/users/octocat/orgs"",
|
||||||
|
""repos_url"": ""https://api.github.com/users/octocat/repos"",
|
||||||
|
""events_url"": ""https://api.github.com/users/octocat/events{/privacy}"",
|
||||||
|
""received_events_url"": ""https://api.github.com/users/octocat/received_events"",
|
||||||
|
""type"": ""User"",
|
||||||
|
""site_admin"": false
|
||||||
|
},
|
||||||
|
""access_tokens_url"": ""https://api.github.com/app/installations/1/access_tokens"",
|
||||||
|
""repositories_url"": ""https://api.github.com/installation/repositories"",
|
||||||
|
""html_url"": ""https://github.com/organizations/github/settings/installations/1"",
|
||||||
|
""app_id"": 1,
|
||||||
|
""target_id"": 1,
|
||||||
|
""target_type"": ""Organization"",
|
||||||
|
""permissions"": {
|
||||||
|
""checks"": ""write"",
|
||||||
|
""metadata"": ""read"",
|
||||||
|
""contents"": ""read""
|
||||||
|
},
|
||||||
|
""events"": [
|
||||||
|
""push"",
|
||||||
|
""pull_request""
|
||||||
|
],
|
||||||
|
""single_file_name"": ""config.yaml"",
|
||||||
|
""has_multiple_single_files"": true,
|
||||||
|
""single_file_paths"": [
|
||||||
|
""config.yml"",
|
||||||
|
"".github/issue_TEMPLATE.md""
|
||||||
|
],
|
||||||
|
""repository_selection"": ""selected"",
|
||||||
|
""created_at"": ""2017-07-08T16:18:44-04:00"",
|
||||||
|
""updated_at"": ""2017-07-08T16:18:44-04:00"",
|
||||||
|
""app_slug"": ""github-actions"",
|
||||||
|
""suspended_at"": ""2017-07-08T16:18:44-04:00"",
|
||||||
|
""suspended_by"": {
|
||||||
|
""login"": ""octocat"",
|
||||||
|
""id"": 1,
|
||||||
|
""node_id"": ""MDQ6VXNlcjE="",
|
||||||
|
""avatar_url"": ""https://github.com/images/error/octocat_happy.gif"",
|
||||||
|
""gravatar_id"": """",
|
||||||
|
""url"": ""https://api.github.com/users/octocat"",
|
||||||
|
""html_url"": ""https://github.com/octocat"",
|
||||||
|
""followers_url"": ""https://api.github.com/users/octocat/followers"",
|
||||||
|
""following_url"": ""https://api.github.com/users/octocat/following{/other_user}"",
|
||||||
|
""gists_url"": ""https://api.github.com/users/octocat/gists{/gist_id}"",
|
||||||
|
""starred_url"": ""https://api.github.com/users/octocat/starred{/owner}{/repo}"",
|
||||||
|
""subscriptions_url"": ""https://api.github.com/users/octocat/subscriptions"",
|
||||||
|
""organizations_url"": ""https://api.github.com/users/octocat/orgs"",
|
||||||
|
""repos_url"": ""https://api.github.com/users/octocat/repos"",
|
||||||
|
""events_url"": ""https://api.github.com/users/octocat/events{/privacy}"",
|
||||||
|
""received_events_url"": ""https://api.github.com/users/octocat/received_events"",
|
||||||
|
""type"": ""User"",
|
||||||
|
""site_admin"": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]";
|
||||||
|
|
||||||
|
var serializer = new SimpleJsonSerializer();
|
||||||
|
|
||||||
|
var installations = serializer.Deserialize<IReadOnlyList<Installation>>(json);
|
||||||
|
|
||||||
|
Assert.NotNull(installations);
|
||||||
|
Assert.NotEmpty(installations);
|
||||||
|
Assert.Equal(1, installations.Count);
|
||||||
|
Assert.NotNull(installations.First().SuspendedAt);
|
||||||
|
Assert.NotNull(installations.First().SuspendedBy);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using Octokit.Internal;
|
using Octokit.Internal;
|
||||||
@@ -16,7 +17,7 @@ namespace Octokit
|
|||||||
{
|
{
|
||||||
public Installation() { }
|
public Installation() { }
|
||||||
|
|
||||||
public Installation(long id, User account, string accessTokensUrl, string repositoriesUrl, string htmlUrl, long appId, long targetId, AccountType targetType, InstallationPermissions permissions, IReadOnlyList<string> events, string singleFileName, string repositorySelection) : base(id)
|
public Installation(long id, User account, string accessTokensUrl, string repositoriesUrl, string htmlUrl, long appId, long targetId, AccountType targetType, InstallationPermissions permissions, IReadOnlyList<string> events, string singleFileName, string repositorySelection, User suspendedBy, DateTimeOffset? suspendedAt) : base(id)
|
||||||
{
|
{
|
||||||
Account = account;
|
Account = account;
|
||||||
AccessTokensUrl = accessTokensUrl;
|
AccessTokensUrl = accessTokensUrl;
|
||||||
@@ -29,6 +30,8 @@ namespace Octokit
|
|||||||
Events = events;
|
Events = events;
|
||||||
SingleFileName = singleFileName;
|
SingleFileName = singleFileName;
|
||||||
RepositorySelection = repositorySelection;
|
RepositorySelection = repositorySelection;
|
||||||
|
SuspendedBy = suspendedBy;
|
||||||
|
SuspendedAt = suspendedAt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -80,6 +83,16 @@ namespace Octokit
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public StringEnum<InstallationRepositorySelection> RepositorySelection { get; private set; }
|
public StringEnum<InstallationRepositorySelection> RepositorySelection { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The user who suspended the Installation. Can be null if the Installation is not suspended.
|
||||||
|
/// </summary>
|
||||||
|
public User SuspendedBy { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The date the Installation was suspended. Can be null if the Installation is not suspended.
|
||||||
|
/// </summary>
|
||||||
|
public DateTimeOffset? SuspendedAt { get; private set; }
|
||||||
|
|
||||||
internal new string DebuggerDisplay => string.Format(CultureInfo.InvariantCulture, "Id: {0} AppId: {1}", Id, AppId);
|
internal new string DebuggerDisplay => string.Format(CultureInfo.InvariantCulture, "Id: {0} AppId: {1}", Id, AppId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user