getEmails2() throws IOException {
- return root().createRequest().withUrlPath("/user/emails").toIterable(GHEmail[].class, null).toList();
+ return listEmails().toList();
+ }
+
+ /**
+ * Returns the read-only list of e-mail addresses configured for you.
+ *
+ * This corresponds to the stuff you configure in https://github.com/settings/emails, and not to be confused with
+ * {@link #getEmail()} that shows your public e-mail address set in https://github.com/settings/profile
+ *
+ * @return Always non-null.
+ */
+ public PagedIterable listEmails() {
+ return root().createRequest().withUrlPath("/user/emails").toIterable(GHEmail[].class, null);
}
/**
diff --git a/src/main/java/org/kohsuke/github/GHOTPRequiredException.java b/src/main/java/org/kohsuke/github/GHOTPRequiredException.java
index b577d37846..dd12d2fca0 100644
--- a/src/main/java/org/kohsuke/github/GHOTPRequiredException.java
+++ b/src/main/java/org/kohsuke/github/GHOTPRequiredException.java
@@ -6,5 +6,12 @@
* @author Kevin Harrington mad.hephaestus@gmail.com
*/
public class GHOTPRequiredException extends GHIOException {
+
+ /**
+ * Create default GHOTPRequiredException instance
+ */
+ public GHOTPRequiredException() {
+ }
+
// ...
}
diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java
index ee5f843348..d843e99a51 100644
--- a/src/main/java/org/kohsuke/github/GHOrganization.java
+++ b/src/main/java/org/kohsuke/github/GHOrganization.java
@@ -13,6 +13,12 @@
*/
public class GHOrganization extends GHPerson {
+ /**
+ * Create default GHOrganization instance
+ */
+ public GHOrganization() {
+ }
+
private boolean has_organization_projects;
/**
diff --git a/src/main/java/org/kohsuke/github/GHPerson.java b/src/main/java/org/kohsuke/github/GHPerson.java
index addcebfead..d77546f8e0 100644
--- a/src/main/java/org/kohsuke/github/GHPerson.java
+++ b/src/main/java/org/kohsuke/github/GHPerson.java
@@ -19,6 +19,12 @@
*/
public abstract class GHPerson extends GHObject {
+ /**
+ * Create default GHPerson instance
+ */
+ public GHPerson() {
+ }
+
/** The avatar url. */
// core data fields that exist even for "small" user data (such as the user info in pull request)
protected String login, avatar_url;
diff --git a/src/main/java/org/kohsuke/github/GHProject.java b/src/main/java/org/kohsuke/github/GHProject.java
index e86115add1..82ec47fd5f 100644
--- a/src/main/java/org/kohsuke/github/GHProject.java
+++ b/src/main/java/org/kohsuke/github/GHProject.java
@@ -39,6 +39,12 @@
*/
public class GHProject extends GHObject {
+ /**
+ * Create default GHProject instance
+ */
+ public GHProject() {
+ }
+
/** The owner. */
protected GHObject owner;
diff --git a/src/main/java/org/kohsuke/github/GHProjectCard.java b/src/main/java/org/kohsuke/github/GHProjectCard.java
index 45da83d709..7361df947d 100644
--- a/src/main/java/org/kohsuke/github/GHProjectCard.java
+++ b/src/main/java/org/kohsuke/github/GHProjectCard.java
@@ -14,6 +14,13 @@
* @author Gunnar Skjold
*/
public class GHProjectCard extends GHObject {
+
+ /**
+ * Create default GHProjectCard instance
+ */
+ public GHProjectCard() {
+ }
+
private GHProject project;
private GHProjectColumn column;
diff --git a/src/main/java/org/kohsuke/github/GHProjectColumn.java b/src/main/java/org/kohsuke/github/GHProjectColumn.java
index f05cc4f75d..63aa83c9ad 100644
--- a/src/main/java/org/kohsuke/github/GHProjectColumn.java
+++ b/src/main/java/org/kohsuke/github/GHProjectColumn.java
@@ -14,6 +14,12 @@
*/
public class GHProjectColumn extends GHObject {
+ /**
+ * Create default GHProjectColumn instance
+ */
+ public GHProjectColumn() {
+ }
+
/** The project. */
protected GHProject project;
diff --git a/src/main/java/org/kohsuke/github/GHProjectsV2Item.java b/src/main/java/org/kohsuke/github/GHProjectsV2Item.java
index ea6c7006b6..43d0224489 100644
--- a/src/main/java/org/kohsuke/github/GHProjectsV2Item.java
+++ b/src/main/java/org/kohsuke/github/GHProjectsV2Item.java
@@ -23,6 +23,12 @@
*/
public class GHProjectsV2Item extends GHObject {
+ /**
+ * Create default GHProjectsV2Item instance
+ */
+ public GHProjectsV2Item() {
+ }
+
private String projectNodeId;
private String contentNodeId;
private String contentType;
diff --git a/src/main/java/org/kohsuke/github/GHProjectsV2ItemChanges.java b/src/main/java/org/kohsuke/github/GHProjectsV2ItemChanges.java
index 2e96fa4c2d..d9636537ef 100644
--- a/src/main/java/org/kohsuke/github/GHProjectsV2ItemChanges.java
+++ b/src/main/java/org/kohsuke/github/GHProjectsV2ItemChanges.java
@@ -14,6 +14,12 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_FIELD" }, justification = "JSON API")
public class GHProjectsV2ItemChanges {
+ /**
+ * Create default GHProjectsV2ItemChanges instance
+ */
+ public GHProjectsV2ItemChanges() {
+ }
+
private FieldValue fieldValue;
private FromToDate archivedAt;
@@ -52,6 +58,12 @@ public FromTo getPreviousProjectsV2ItemNodeId() {
*/
public static class FieldValue {
+ /**
+ * Create default FieldValue instance
+ */
+ public FieldValue() {
+ }
+
private String fieldNodeId;
private String fieldType;
@@ -79,6 +91,12 @@ public FieldType getFieldType() {
*/
public static class FromTo {
+ /**
+ * Create default FromTo instance
+ */
+ public FromTo() {
+ }
+
private String from;
private String to;
@@ -106,6 +124,12 @@ public String getTo() {
*/
public static class FromToDate {
+ /**
+ * Create default FromToDate instance
+ */
+ public FromToDate() {
+ }
+
private String from;
private String to;
diff --git a/src/main/java/org/kohsuke/github/GHPullRequest.java b/src/main/java/org/kohsuke/github/GHPullRequest.java
index 4d6e30fc08..d7a2ea5009 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequest.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequest.java
@@ -47,6 +47,12 @@
@SuppressWarnings({ "UnusedDeclaration" })
public class GHPullRequest extends GHIssue implements Refreshable {
+ /**
+ * Create default GHPullRequest instance
+ */
+ public GHPullRequest() {
+ }
+
private static final String COMMENTS_ACTION = "/comments";
private static final String REQUEST_REVIEWERS = "/requested_reviewers";
@@ -695,6 +701,12 @@ public enum MergeMethod {
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
public static class AutoMerge {
+ /**
+ * Create default AutoMerge instance
+ */
+ public AutoMerge() {
+ }
+
private GHUser enabled_by;
private MergeMethod merge_method;
private String commit_title;
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestChanges.java b/src/main/java/org/kohsuke/github/GHPullRequestChanges.java
index 24dde41a0f..a866b33b38 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestChanges.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestChanges.java
@@ -11,6 +11,12 @@
@SuppressFBWarnings("UWF_UNWRITTEN_FIELD")
public class GHPullRequestChanges {
+ /**
+ * Create default GHPullRequestChanges instance
+ */
+ public GHPullRequestChanges() {
+ }
+
private GHCommitPointer base;
private GHFrom title;
private GHFrom body;
@@ -48,6 +54,13 @@ public GHFrom getBody() {
* @see org.kohsuke.github.GHCommitPointer
*/
public static class GHCommitPointer {
+
+ /**
+ * Create default GHCommitPointer instance
+ */
+ public GHCommitPointer() {
+ }
+
private GHFrom ref;
private GHFrom sha;
@@ -75,6 +88,13 @@ public GHFrom getSha() {
* Wrapper for changed values.
*/
public static class GHFrom {
+
+ /**
+ * Create default GHFrom instance
+ */
+ public GHFrom() {
+ }
+
private String from;
/**
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestCommitDetail.java b/src/main/java/org/kohsuke/github/GHPullRequestCommitDetail.java
index c3faccbfad..3a3da61e87 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestCommitDetail.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestCommitDetail.java
@@ -40,6 +40,13 @@
"URF_UNREAD_FIELD" },
justification = "JSON API")
public class GHPullRequestCommitDetail {
+
+ /**
+ * Create default GHPullRequestCommitDetail instance
+ */
+ public GHPullRequestCommitDetail() {
+ }
+
private GHPullRequest owner;
/**
@@ -58,6 +65,11 @@ void wrapUp(GHPullRequest owner) {
* @deprecated Use {@link GitUser}
*/
public static class Authorship extends GitUser {
+ /**
+ * Create default Authorship instance
+ */
+ public Authorship() {
+ }
}
/**
@@ -65,6 +77,12 @@ public static class Authorship extends GitUser {
*/
public static class Tree {
+ /**
+ * Create default Tree instance
+ */
+ public Tree() {
+ }
+
/** The sha. */
String sha;
@@ -95,6 +113,12 @@ public URL getUrl() {
*/
public static class Commit {
+ /**
+ * Create default Commit instance
+ */
+ public Commit() {
+ }
+
/** The author. */
Authorship author;
@@ -175,6 +199,12 @@ public Tree getTree() {
*/
public static class CommitPointer {
+ /**
+ * Create default CommitPointer instance
+ */
+ public CommitPointer() {
+ }
+
/** The sha. */
String sha;
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestFileDetail.java b/src/main/java/org/kohsuke/github/GHPullRequestFileDetail.java
index ba6e89d323..2a316f49e7 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestFileDetail.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestFileDetail.java
@@ -35,6 +35,12 @@
*/
public class GHPullRequestFileDetail {
+ /**
+ * Create default GHPullRequestFileDetail instance
+ */
+ public GHPullRequestFileDetail() {
+ }
+
/** The sha. */
String sha;
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestReview.java b/src/main/java/org/kohsuke/github/GHPullRequestReview.java
index a72f462f1e..a0d05aaf9c 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestReview.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestReview.java
@@ -41,6 +41,12 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_FIELD" }, justification = "JSON API")
public class GHPullRequestReview extends GHObject {
+ /**
+ * Create default GHPullRequestReview instance
+ */
+ public GHPullRequestReview() {
+ }
+
/** The owner. */
GHPullRequest owner;
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestReviewComment.java b/src/main/java/org/kohsuke/github/GHPullRequestReviewComment.java
index c59d7acf81..ce52d29620 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestReviewComment.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestReviewComment.java
@@ -42,6 +42,12 @@
*/
public class GHPullRequestReviewComment extends GHObject implements Reactable {
+ /**
+ * Create default GHPullRequestReviewComment instance
+ */
+ public GHPullRequestReviewComment() {
+ }
+
/** The owner. */
GHPullRequest owner;
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestReviewCommentReactions.java b/src/main/java/org/kohsuke/github/GHPullRequestReviewCommentReactions.java
index bd90cec869..8a9624d694 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestReviewCommentReactions.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestReviewCommentReactions.java
@@ -14,6 +14,12 @@
*/
public class GHPullRequestReviewCommentReactions {
+ /**
+ * Create default GHPullRequestReviewCommentReactions instance
+ */
+ public GHPullRequestReviewCommentReactions() {
+ }
+
private String url;
private int total_count = -1;
diff --git a/src/main/java/org/kohsuke/github/GHReaction.java b/src/main/java/org/kohsuke/github/GHReaction.java
index 6a0cadcbcb..759504fbbb 100644
--- a/src/main/java/org/kohsuke/github/GHReaction.java
+++ b/src/main/java/org/kohsuke/github/GHReaction.java
@@ -14,6 +14,12 @@
*/
public class GHReaction extends GHObject {
+ /**
+ * Create default GHReaction instance
+ */
+ public GHReaction() {
+ }
+
private GHUser user;
private ReactionContent content;
diff --git a/src/main/java/org/kohsuke/github/GHRef.java b/src/main/java/org/kohsuke/github/GHRef.java
index 429dcfbf0a..4db5e1c67b 100644
--- a/src/main/java/org/kohsuke/github/GHRef.java
+++ b/src/main/java/org/kohsuke/github/GHRef.java
@@ -13,6 +13,13 @@
* @author Michael Clarke
*/
public class GHRef extends GitHubInteractiveObject {
+
+ /**
+ * Create default GHRef instance
+ */
+ public GHRef() {
+ }
+
private String ref, url;
private GHObject object;
@@ -161,6 +168,13 @@ static PagedIterable readMatching(GHRepository repository, String refType
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public static class GHObject {
+
+ /**
+ * Create default GHObject instance
+ */
+ public GHObject() {
+ }
+
private String type, sha, url;
/**
diff --git a/src/main/java/org/kohsuke/github/GHRelease.java b/src/main/java/org/kohsuke/github/GHRelease.java
index 712255c019..24579eb0b7 100644
--- a/src/main/java/org/kohsuke/github/GHRelease.java
+++ b/src/main/java/org/kohsuke/github/GHRelease.java
@@ -24,6 +24,12 @@
*/
public class GHRelease extends GHObject {
+ /**
+ * Create default GHRelease instance
+ */
+ public GHRelease() {
+ }
+
/** The owner. */
GHRepository owner;
diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java
index d13a3c7cdc..aeb4db5b19 100644
--- a/src/main/java/org/kohsuke/github/GHRepository.java
+++ b/src/main/java/org/kohsuke/github/GHRepository.java
@@ -73,6 +73,12 @@
justification = "JSON API")
public class GHRepository extends GHObject {
+ /**
+ * Create default GHRepository instance
+ */
+ public GHRepository() {
+ }
+
private String nodeId, description, homepage, name, full_name;
private String html_url; // this is the UI
@@ -3084,6 +3090,13 @@ public PagedIterable listContributors() throws IOException {
* The type Contributor.
*/
public static class Contributor extends GHUser {
+
+ /**
+ * Create default Contributor instance
+ */
+ public Contributor() {
+ }
+
private int contributions;
/**
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryChanges.java b/src/main/java/org/kohsuke/github/GHRepositoryChanges.java
index 9c9aa578d3..c3792f1819 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryChanges.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryChanges.java
@@ -7,6 +7,13 @@
*/
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_FIELD" }, justification = "JSON API")
public class GHRepositoryChanges {
+
+ /**
+ * Create default GHRepositoryChanges instance
+ */
+ public GHRepositoryChanges() {
+ }
+
private FromRepository repository;
private Owner owner;
@@ -23,6 +30,13 @@ public Owner getOwner() {
* Outer object of owner from whom this repository was transferred.
*/
public static class Owner {
+
+ /**
+ * Create default Owner instance
+ */
+ public Owner() {
+ }
+
private FromOwner from;
/**
@@ -39,6 +53,13 @@ public FromOwner getFrom() {
* Owner from whom this repository was transferred.
*/
public static class FromOwner {
+
+ /**
+ * Create default FromOwner instance
+ */
+ public FromOwner() {
+ }
+
private GHUser user;
private GHOrganization organization;
@@ -76,6 +97,13 @@ public FromRepository getRepository() {
* Repository object from which the name was changed.
*/
public static class FromRepository {
+
+ /**
+ * Create default FromRepository instance
+ */
+ public FromRepository() {
+ }
+
private FromName name;
/**
@@ -92,6 +120,13 @@ public FromName getName() {
* Repository name that was changed.
*/
public static class FromName {
+
+ /**
+ * Create default FromName instance
+ */
+ public FromName() {
+ }
+
private String from;
/**
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryDiscussion.java b/src/main/java/org/kohsuke/github/GHRepositoryDiscussion.java
index 39033d0a9a..2c1bc4b27a 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryDiscussion.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryDiscussion.java
@@ -22,6 +22,12 @@
*/
public class GHRepositoryDiscussion extends GHObject {
+ /**
+ * Create default GHRepositoryDiscussion instance
+ */
+ public GHRepositoryDiscussion() {
+ }
+
private Category category;
private String answerHtmlUrl;
@@ -192,6 +198,12 @@ public String getTimelineUrl() {
*/
public static class Category {
+ /**
+ * Create default Category instance
+ */
+ public Category() {
+ }
+
private long id;
private String nodeId;
private long repositoryId;
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryDiscussionComment.java b/src/main/java/org/kohsuke/github/GHRepositoryDiscussionComment.java
index e2dd604716..b16f61a98b 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryDiscussionComment.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryDiscussionComment.java
@@ -18,6 +18,12 @@
*/
public class GHRepositoryDiscussionComment extends GHObject {
+ /**
+ * Create default GHRepositoryDiscussionComment instance
+ */
+ public GHRepositoryDiscussionComment() {
+ }
+
private String htmlUrl;
private Long parentId;
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryPublicKey.java b/src/main/java/org/kohsuke/github/GHRepositoryPublicKey.java
index 9d7ab86c71..f596ab359e 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryPublicKey.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryPublicKey.java
@@ -12,6 +12,13 @@
* @author Aditya Bansal
*/
public class GHRepositoryPublicKey extends GHObject {
+
+ /**
+ * Create default GHRepositoryPublicKey instance
+ */
+ public GHRepositoryPublicKey() {
+ }
+
// Not provided by the API.
@JsonIgnore
private GHRepository owner;
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryRule.java b/src/main/java/org/kohsuke/github/GHRepositoryRule.java
index 0c1b9c5d55..2db05c7057 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryRule.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryRule.java
@@ -16,6 +16,13 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public class GHRepositoryRule extends GitHubInteractiveObject {
+
+ /**
+ * Create default GHRepositoryRule instance
+ */
+ public GHRepositoryRule() {
+ }
+
private String type;
private String rulesetSourceType;
private String rulesetSource;
@@ -424,6 +431,13 @@ public ListParameter(String key) {
* Status check configuration parameter.
*/
public static class StatusCheckConfiguration {
+
+ /**
+ * Create default StatusCheckConfiguration instance
+ */
+ public StatusCheckConfiguration() {
+ }
+
private String context;
private Integer integrationId;
@@ -475,6 +489,13 @@ public static enum Operator {
* Workflow file reference parameter.
*/
public static class WorkflowFileReference {
+
+ /**
+ * Create default WorkflowFileReference instance
+ */
+ public WorkflowFileReference() {
+ }
+
private String path;
private String ref;
private long repositoryId;
@@ -521,6 +542,13 @@ public String getSha() {
* Code scanning tool parameter.
*/
public static class CodeScanningTool {
+
+ /**
+ * Create default CodeScanningTool instance
+ */
+ public CodeScanningTool() {
+ }
+
private AlertsThreshold alertsThreshold;
private SecurityAlertsThreshold securityAlertsThreshold;
private String tool;
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java b/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java
index 35c8bfea55..8b686f62fc 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java
@@ -99,6 +99,13 @@ private PagedIterable getContributorStatsImpl() throws IOExcep
"URF_UNREAD_FIELD" },
justification = "JSON API")
public static class ContributorStats extends GHObject {
+
+ /**
+ * Create default ContributorStats instance
+ */
+ public ContributorStats() {
+ }
+
private GHUser author;
private int total;
private List weeks;
@@ -184,6 +191,12 @@ public String toString() {
justification = "JSON API")
public static class Week {
+ /**
+ * Create default Week instance
+ */
+ public Week() {
+ }
+
private long w;
private int a;
private int d;
@@ -258,6 +271,13 @@ public PagedIterable getCommitActivity() throws IOException {
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public static class CommitActivity extends GHObject {
+
+ /**
+ * Create default CommitActivity instance
+ */
+ public CommitActivity() {
+ }
+
private List days;
private int total;
private long week;
@@ -398,6 +418,13 @@ public Participation getParticipation() throws IOException {
* The type Participation.
*/
public static class Participation extends GHObject {
+
+ /**
+ * Create default Participation instance
+ */
+ public Participation() {
+ }
+
private List all;
private List owner;
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryVariable.java b/src/main/java/org/kohsuke/github/GHRepositoryVariable.java
index cc71f38a49..6a45c6cf98 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryVariable.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryVariable.java
@@ -12,6 +12,12 @@
*/
public class GHRepositoryVariable extends GitHubInteractiveObject {
+ /**
+ * Create default GHRepositoryVariable instance
+ */
+ public GHRepositoryVariable() {
+ }
+
private static final String SLASH = "/";
private static final String VARIABLE_NAMESPACE = "actions/variables";
diff --git a/src/main/java/org/kohsuke/github/GHRequestedAction.java b/src/main/java/org/kohsuke/github/GHRequestedAction.java
index db87a833ba..2e1f44a2e4 100644
--- a/src/main/java/org/kohsuke/github/GHRequestedAction.java
+++ b/src/main/java/org/kohsuke/github/GHRequestedAction.java
@@ -11,6 +11,13 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD", "URF_UNREAD_FIELD" },
justification = "JSON API")
public class GHRequestedAction extends GHObject {
+
+ /**
+ * Create default GHRequestedAction instance
+ */
+ public GHRequestedAction() {
+ }
+
private GHRepository owner;
private String identifier;
private String label;
diff --git a/src/main/java/org/kohsuke/github/GHStargazer.java b/src/main/java/org/kohsuke/github/GHStargazer.java
index ff6327d317..1b9862295a 100644
--- a/src/main/java/org/kohsuke/github/GHStargazer.java
+++ b/src/main/java/org/kohsuke/github/GHStargazer.java
@@ -13,6 +13,12 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" }, justification = "JSON API")
public class GHStargazer {
+ /**
+ * Create default GHStargazer instance
+ */
+ public GHStargazer() {
+ }
+
private GHRepository repository;
private String starred_at;
private GHUser user;
diff --git a/src/main/java/org/kohsuke/github/GHSubscription.java b/src/main/java/org/kohsuke/github/GHSubscription.java
index 9f84161cc8..1066d51b7b 100644
--- a/src/main/java/org/kohsuke/github/GHSubscription.java
+++ b/src/main/java/org/kohsuke/github/GHSubscription.java
@@ -14,6 +14,13 @@
* @see GHThread#getSubscription() GHThread#getSubscription()
*/
public class GHSubscription extends GitHubInteractiveObject {
+
+ /**
+ * Create default GHSubscription instance
+ */
+ public GHSubscription() {
+ }
+
private String created_at, url, repository_url, reason;
private boolean subscribed, ignored;
diff --git a/src/main/java/org/kohsuke/github/GHTag.java b/src/main/java/org/kohsuke/github/GHTag.java
index b40c491332..1487256d2c 100644
--- a/src/main/java/org/kohsuke/github/GHTag.java
+++ b/src/main/java/org/kohsuke/github/GHTag.java
@@ -11,6 +11,13 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public class GHTag extends GitHubInteractiveObject {
+
+ /**
+ * Create default GHTag instance
+ */
+ public GHTag() {
+ }
+
private GHRepository owner;
private String name;
diff --git a/src/main/java/org/kohsuke/github/GHTagObject.java b/src/main/java/org/kohsuke/github/GHTagObject.java
index efd38a3918..fbf255e7c3 100644
--- a/src/main/java/org/kohsuke/github/GHTagObject.java
+++ b/src/main/java/org/kohsuke/github/GHTagObject.java
@@ -11,6 +11,13 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public class GHTagObject extends GitHubInteractiveObject {
+
+ /**
+ * Create default GHTagObject instance
+ */
+ public GHTagObject() {
+ }
+
private GHRepository owner;
private String tag;
diff --git a/src/main/java/org/kohsuke/github/GHTeam.java b/src/main/java/org/kohsuke/github/GHTeam.java
index 4d94735aec..d24d8fbdbf 100644
--- a/src/main/java/org/kohsuke/github/GHTeam.java
+++ b/src/main/java/org/kohsuke/github/GHTeam.java
@@ -20,6 +20,12 @@
*/
public class GHTeam extends GHObject implements Refreshable {
+ /**
+ * Create default GHTeam instance
+ */
+ public GHTeam() {
+ }
+
/**
* Path for external group-related operations
*/
diff --git a/src/main/java/org/kohsuke/github/GHTeamChanges.java b/src/main/java/org/kohsuke/github/GHTeamChanges.java
index dfcbfca26b..30962bd3bf 100644
--- a/src/main/java/org/kohsuke/github/GHTeamChanges.java
+++ b/src/main/java/org/kohsuke/github/GHTeamChanges.java
@@ -14,6 +14,12 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_FIELD" }, justification = "JSON API")
public class GHTeamChanges {
+ /**
+ * Create default GHTeamChanges instance
+ */
+ public GHTeamChanges() {
+ }
+
private FromString description;
private FromString name;
private FromPrivacy privacy;
@@ -60,6 +66,12 @@ public FromRepository getRepository() {
*/
public static class FromString {
+ /**
+ * Create default FromString instance
+ */
+ public FromString() {
+ }
+
private String from;
/**
@@ -77,6 +89,12 @@ public String getFrom() {
*/
public static class FromPrivacy {
+ /**
+ * Create default FromPrivacy instance
+ */
+ public FromPrivacy() {
+ }
+
private String from;
/**
@@ -94,6 +112,12 @@ public Privacy getFrom() {
*/
public static class FromRepository {
+ /**
+ * Create default FromRepository instance
+ */
+ public FromRepository() {
+ }
+
private FromRepositoryPermissions permissions;
/**
@@ -111,6 +135,12 @@ public FromRepositoryPermissions getPermissions() {
*/
public static class FromRepositoryPermissions {
+ /**
+ * Create default FromRepositoryPermissions instance
+ */
+ public FromRepositoryPermissions() {
+ }
+
private GHRepoPermission from;
/**
diff --git a/src/main/java/org/kohsuke/github/GHTree.java b/src/main/java/org/kohsuke/github/GHTree.java
index 11f35cee49..867fa4531d 100644
--- a/src/main/java/org/kohsuke/github/GHTree.java
+++ b/src/main/java/org/kohsuke/github/GHTree.java
@@ -20,6 +20,12 @@
justification = "JSON API")
public class GHTree {
+ /**
+ * Create default GHTree instance
+ */
+ public GHTree() {
+ }
+
/** The repo. */
/* package almost final */GHRepository repo;
diff --git a/src/main/java/org/kohsuke/github/GHTreeEntry.java b/src/main/java/org/kohsuke/github/GHTreeEntry.java
index 4941365f31..6759378e1f 100644
--- a/src/main/java/org/kohsuke/github/GHTreeEntry.java
+++ b/src/main/java/org/kohsuke/github/GHTreeEntry.java
@@ -13,6 +13,12 @@
*/
public class GHTreeEntry {
+ /**
+ * Create default GHTreeEntry instance
+ */
+ public GHTreeEntry() {
+ }
+
/** The tree. */
/* package almost final */GHTree tree;
diff --git a/src/main/java/org/kohsuke/github/GHUser.java b/src/main/java/org/kohsuke/github/GHUser.java
index dc25a3fd51..58c9471f1d 100644
--- a/src/main/java/org/kohsuke/github/GHUser.java
+++ b/src/main/java/org/kohsuke/github/GHUser.java
@@ -36,6 +36,12 @@
*/
public class GHUser extends GHPerson {
+ /**
+ * Create default GHUser instance
+ */
+ public GHUser() {
+ }
+
/** The ldap dn. */
protected String ldap_dn;
diff --git a/src/main/java/org/kohsuke/github/GHVerification.java b/src/main/java/org/kohsuke/github/GHVerification.java
index 2a759ea5a5..6fb5493e88 100644
--- a/src/main/java/org/kohsuke/github/GHVerification.java
+++ b/src/main/java/org/kohsuke/github/GHVerification.java
@@ -16,6 +16,13 @@
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public class GHVerification {
+
+ /**
+ * Create default GHVerification instance
+ */
+ public GHVerification() {
+ }
+
private String signature, payload;
private boolean verified;
private Reason reason;
diff --git a/src/main/java/org/kohsuke/github/GHWorkflow.java b/src/main/java/org/kohsuke/github/GHWorkflow.java
index b016e5d6bc..f5072ae326 100644
--- a/src/main/java/org/kohsuke/github/GHWorkflow.java
+++ b/src/main/java/org/kohsuke/github/GHWorkflow.java
@@ -19,6 +19,12 @@
*/
public class GHWorkflow extends GHObject {
+ /**
+ * Create default GHWorkflow instance
+ */
+ public GHWorkflow() {
+ }
+
// Not provided by the API.
@JsonIgnore
private GHRepository owner;
diff --git a/src/main/java/org/kohsuke/github/GHWorkflowJob.java b/src/main/java/org/kohsuke/github/GHWorkflowJob.java
index 82a487d72f..080c60afbe 100644
--- a/src/main/java/org/kohsuke/github/GHWorkflowJob.java
+++ b/src/main/java/org/kohsuke/github/GHWorkflowJob.java
@@ -25,6 +25,12 @@
*/
public class GHWorkflowJob extends GHObject {
+ /**
+ * Create default GHWorkflowJob instance
+ */
+ public GHWorkflowJob() {
+ }
+
// Not provided by the API.
@JsonIgnore
private GHRepository owner;
@@ -259,6 +265,12 @@ GHWorkflowJob wrapUp(GHRepository owner) {
*/
public static class Step {
+ /**
+ * Create default Step instance
+ */
+ public Step() {
+ }
+
private String name;
private int number;
diff --git a/src/main/java/org/kohsuke/github/GHWorkflowRun.java b/src/main/java/org/kohsuke/github/GHWorkflowRun.java
index b12e8f005e..03ee257a6d 100644
--- a/src/main/java/org/kohsuke/github/GHWorkflowRun.java
+++ b/src/main/java/org/kohsuke/github/GHWorkflowRun.java
@@ -26,6 +26,12 @@
*/
public class GHWorkflowRun extends GHObject {
+ /**
+ * Create default GHWorkflowRun instance
+ */
+ public GHWorkflowRun() {
+ }
+
@JsonProperty("repository")
private GHRepository owner;
@@ -429,6 +435,13 @@ GHWorkflowRun wrapUp(GitHub root) {
* The Class HeadCommit.
*/
public static class HeadCommit {
+
+ /**
+ * Create default HeadCommit instance
+ */
+ public HeadCommit() {
+ }
+
private String id;
private String treeId;
private String message;
diff --git a/src/main/java/org/kohsuke/github/GitHubAbuseLimitHandler.java b/src/main/java/org/kohsuke/github/GitHubAbuseLimitHandler.java
index e769604525..076f6fcc1a 100644
--- a/src/main/java/org/kohsuke/github/GitHubAbuseLimitHandler.java
+++ b/src/main/java/org/kohsuke/github/GitHubAbuseLimitHandler.java
@@ -18,6 +18,12 @@
*/
public abstract class GitHubAbuseLimitHandler extends GitHubConnectorResponseErrorHandler {
+ /**
+ * Create default GitHubAbuseLimitHandler instance
+ */
+ public GitHubAbuseLimitHandler() {
+ }
+
/**
* Checks if is error.
*
diff --git a/src/main/java/org/kohsuke/github/GitHubInteractiveObject.java b/src/main/java/org/kohsuke/github/GitHubInteractiveObject.java
index 036b53f7c1..9528f9f98b 100644
--- a/src/main/java/org/kohsuke/github/GitHubInteractiveObject.java
+++ b/src/main/java/org/kohsuke/github/GitHubInteractiveObject.java
@@ -7,7 +7,6 @@
import java.util.Objects;
-// TODO: Auto-generated Javadoc
/**
* Defines a base class that all classes in this library that interact with GitHub inherit from.
*
diff --git a/src/main/java/org/kohsuke/github/GitHubRateLimitHandler.java b/src/main/java/org/kohsuke/github/GitHubRateLimitHandler.java
index da4f6ad104..0af46e8e50 100644
--- a/src/main/java/org/kohsuke/github/GitHubRateLimitHandler.java
+++ b/src/main/java/org/kohsuke/github/GitHubRateLimitHandler.java
@@ -19,6 +19,12 @@
*/
public abstract class GitHubRateLimitHandler extends GitHubConnectorResponseErrorHandler {
+ /**
+ * Create default GitHubRateLimitHandler instance
+ */
+ public GitHubRateLimitHandler() {
+ }
+
/**
* Checks if is error.
*
diff --git a/src/main/java/org/kohsuke/github/GitHubRequestBuilderDone.java b/src/main/java/org/kohsuke/github/GitHubRequestBuilderDone.java
new file mode 100644
index 0000000000..2ace9de440
--- /dev/null
+++ b/src/main/java/org/kohsuke/github/GitHubRequestBuilderDone.java
@@ -0,0 +1,42 @@
+package org.kohsuke.github;
+
+import java.io.IOException;
+
+/**
+ * The done method for data object builder/updater.
+ *
+ * This interface can be used to make a Builder that supports both batch and single property changes.
+ *
+ * Batching looks like this:
+ *
+ *
+ *
+ * update().someName(value).otherName(value).done()
+ *
+ *
+ * Single changes look like this:
+ *
+ *
+ *
+ * set().someName(value);
+ * set().otherName(value);
+ *
+ *
+ * @author Liam Newman
+ * @param
+ * Final return type built by this builder returned when {@link #done()}} is called.
+ */
+public interface GitHubRequestBuilderDone {
+
+ /**
+ * Finishes a create or update request, committing changes.
+ *
+ * This method may update-in-place or not. Either way it returns the resulting instance.
+ *
+ * @return an instance with updated current data
+ * @throws IOException
+ * if there is an I/O Exception
+ */
+ @BetaApi
+ R done() throws IOException;
+}
diff --git a/src/main/java/org/kohsuke/github/PagedIterable.java b/src/main/java/org/kohsuke/github/PagedIterable.java
index fc3528492e..122be5cef2 100644
--- a/src/main/java/org/kohsuke/github/PagedIterable.java
+++ b/src/main/java/org/kohsuke/github/PagedIterable.java
@@ -26,6 +26,12 @@ public abstract class PagedIterable implements Iterable {
*/
private int pageSize = 0;
+ /**
+ * Instantiate a PagedIterable.
+ */
+ public PagedIterable() {
+ }
+
/**
* Sets the pagination size.
*
diff --git a/src/main/java/org/kohsuke/github/RateLimitChecker.java b/src/main/java/org/kohsuke/github/RateLimitChecker.java
index fbfdabd93c..5b848cd17e 100644
--- a/src/main/java/org/kohsuke/github/RateLimitChecker.java
+++ b/src/main/java/org/kohsuke/github/RateLimitChecker.java
@@ -22,6 +22,12 @@
*/
public abstract class RateLimitChecker {
+ /**
+ * Create default RateLimitChecker instance
+ */
+ public RateLimitChecker() {
+ }
+
private static final Logger LOGGER = Logger.getLogger(RateLimitChecker.class.getName());
/** The Constant NONE. */
diff --git a/src/main/java/org/kohsuke/github/RateLimitHandler.java b/src/main/java/org/kohsuke/github/RateLimitHandler.java
index a17e9a33b3..bc22b43d55 100644
--- a/src/main/java/org/kohsuke/github/RateLimitHandler.java
+++ b/src/main/java/org/kohsuke/github/RateLimitHandler.java
@@ -21,6 +21,12 @@
@Deprecated
public abstract class RateLimitHandler extends GitHubRateLimitHandler {
+ /**
+ * Create default RateLimitHandler instance
+ */
+ public RateLimitHandler() {
+ }
+
/**
* Called when the library encounters HTTP error indicating that the API rate limit has been exceeded.
*
diff --git a/src/main/java/org/kohsuke/github/authorization/AnonymousAuthorizationProvider.java b/src/main/java/org/kohsuke/github/authorization/AnonymousAuthorizationProvider.java
index b71a42626a..488be23e3b 100644
--- a/src/main/java/org/kohsuke/github/authorization/AnonymousAuthorizationProvider.java
+++ b/src/main/java/org/kohsuke/github/authorization/AnonymousAuthorizationProvider.java
@@ -8,6 +8,13 @@
* This will result in the "Authorization" header not being added to a request.
*/
public class AnonymousAuthorizationProvider implements AuthorizationProvider {
+
+ /**
+ * Create default AnonymousAuthorizationProvider instance
+ */
+ public AnonymousAuthorizationProvider() {
+ }
+
@Override
public String getEncodedAuthorization() throws IOException {
return null;
diff --git a/src/main/java/org/kohsuke/github/connector/GitHubConnector.java b/src/main/java/org/kohsuke/github/connector/GitHubConnector.java
index 63ffe9892d..006023ac10 100644
--- a/src/main/java/org/kohsuke/github/connector/GitHubConnector.java
+++ b/src/main/java/org/kohsuke/github/connector/GitHubConnector.java
@@ -30,8 +30,6 @@ public interface GitHubConnector {
* @return a GitHubConnectorResponse for the request
* @throws IOException
* if there is an I/O error
- *
- * @author Liam Newman
*/
GitHubConnectorResponse send(GitHubConnectorRequest connectorRequest) throws IOException;
diff --git a/src/main/java/org/kohsuke/github/example/dataobject/ReadOnlyObjects.java b/src/main/java/org/kohsuke/github/example/dataobject/ReadOnlyObjects.java
index fb6a517fdf..d9b0f0e2a7 100644
--- a/src/main/java/org/kohsuke/github/example/dataobject/ReadOnlyObjects.java
+++ b/src/main/java/org/kohsuke/github/example/dataobject/ReadOnlyObjects.java
@@ -31,6 +31,12 @@
*/
public final class ReadOnlyObjects {
+ /**
+ * Placeholder constructor.
+ */
+ public ReadOnlyObjects() {
+ }
+
/**
* All GHMeta data objects should expose these values.
*
@@ -108,6 +114,12 @@ public interface GHMetaExample {
*/
public static class GHMetaPublic implements GHMetaExample {
+ /**
+ * Create default GHMetaPublic instance
+ */
+ public GHMetaPublic() {
+ }
+
@JsonProperty("verifiable_password_authentication")
private boolean verifiablePasswordAuthentication;
private List hooks;
@@ -251,6 +263,12 @@ public void setImporter(List importer) {
*/
public static class GHMetaPackage implements GHMetaExample {
+ /**
+ * Create default GHMetaPackage instance
+ */
+ public GHMetaPackage() {
+ }
+
private boolean verifiablePasswordAuthentication;
private List hooks;
private List git;
@@ -388,6 +406,12 @@ void setImporter(List importer) {
*/
public static class GHMetaGettersUnmodifiable implements GHMetaExample {
+ /**
+ * Create default GHMetaGettersUnmodifiable instance
+ */
+ public GHMetaGettersUnmodifiable() {
+ }
+
@JsonProperty("verifiable_password_authentication")
private boolean verifiablePasswordAuthentication;
private List hooks;
diff --git a/src/test/java/org/kohsuke/HookApp.java b/src/test/java/org/kohsuke/HookApp.java
index 1b67eb67aa..0eea23af04 100644
--- a/src/test/java/org/kohsuke/HookApp.java
+++ b/src/test/java/org/kohsuke/HookApp.java
@@ -17,6 +17,12 @@
*/
public class HookApp {
+ /**
+ * Create default HookApp instance
+ */
+ public HookApp() {
+ }
+
/**
* The main method.
*
diff --git a/src/test/java/org/kohsuke/github/AbstractGitHubWireMockTest.java b/src/test/java/org/kohsuke/github/AbstractGitHubWireMockTest.java
index 044a7122ec..c3f5e93522 100644
--- a/src/test/java/org/kohsuke/github/AbstractGitHubWireMockTest.java
+++ b/src/test/java/org/kohsuke/github/AbstractGitHubWireMockTest.java
@@ -11,7 +11,6 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
-import org.kohsuke.github.junit.GitHubWireMockRule;
import wiremock.com.github.jknack.handlebars.Helper;
import wiremock.com.github.jknack.handlebars.Options;
@@ -399,6 +398,12 @@ protected static class TemplatingHelper {
/** The test start date. */
public Date testStartDate = new Date();
+ /**
+ * Instantiate TemplatingHelper
+ */
+ public TemplatingHelper() {
+ }
+
/**
* New response transformer.
*
diff --git a/src/test/java/org/kohsuke/github/AbuseLimitHandlerTest.java b/src/test/java/org/kohsuke/github/AbuseLimitHandlerTest.java
index 5736146c4c..4eb5aa4630 100644
--- a/src/test/java/org/kohsuke/github/AbuseLimitHandlerTest.java
+++ b/src/test/java/org/kohsuke/github/AbuseLimitHandlerTest.java
@@ -15,7 +15,6 @@
import java.util.Map;
import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
@@ -71,127 +70,121 @@ public void testHandler_Fail() throws Exception {
snapshotNotAllowed();
final HttpURLConnection[] savedConnection = new HttpURLConnection[1];
- gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
- .withAbuseLimitHandler(new AbuseLimitHandler() {
- @Override
- public void onError(IOException e, HttpURLConnection uc) throws IOException {
- savedConnection[0] = uc;
- // Verify
- assertThat(uc.getDate(), Matchers.greaterThanOrEqualTo(new Date().getTime() - 10000));
- assertThat(uc.getExpiration(), equalTo(0L));
- assertThat(uc.getIfModifiedSince(), equalTo(0L));
- assertThat(uc.getLastModified(), equalTo(1581014017000L));
- assertThat(uc.getRequestMethod(), equalTo("GET"));
- assertThat(uc.getResponseCode(), equalTo(403));
- assertThat(uc.getResponseMessage(), containsString("Forbidden"));
- assertThat(uc.getURL().toString(), endsWith("/repos/hub4j-test-org/temp-testHandler_Fail"));
- assertThat(uc.getHeaderFieldInt("X-RateLimit-Limit", 10), equalTo(5000));
- assertThat(uc.getHeaderFieldInt("X-RateLimit-Remaining", 10), equalTo(4000));
- assertThat(uc.getHeaderFieldInt("X-Foo", 20), equalTo(20));
- assertThat(uc.getHeaderFieldLong("X-RateLimit-Limit", 15L), equalTo(5000L));
- assertThat(uc.getHeaderFieldLong("X-RateLimit-Remaining", 15L), equalTo(4000L));
- assertThat(uc.getHeaderFieldLong("X-Foo", 20L), equalTo(20L));
-
- assertThat(uc.getContentEncoding(), nullValue());
- assertThat(uc.getContentType(), equalTo("application/json; charset=utf-8"));
- assertThat(uc.getContentLength(), equalTo(-1));
-
- // getting an input stream in an error case should throw
- IOException ioEx = Assert.assertThrows(IOException.class, () -> uc.getInputStream());
-
- checkErrorMessageMatches(uc, "Must have push access to repository");
-
- // calling again should still error
- ioEx = Assert.assertThrows(IOException.class, () -> uc.getInputStream());
-
- // calling again on a GitHubConnectorResponse should yield the same value
- if (uc.toString().contains("GitHubConnectorResponseHttpUrlConnectionAdapter")) {
- checkErrorMessageMatches(uc, "Must have push access to repository");
- } else {
- try (InputStream errorStream = uc.getErrorStream()) {
- assertThat(errorStream, notNullValue());
- String errorString = IOUtils.toString(errorStream, StandardCharsets.UTF_8);
- fail();
- } catch (IOException ex) {
- assertThat(ex, notNullValue());
- assertThat(ex.getMessage(), containsString("stream is closed"));
- }
- }
-
- assertThat(uc.getHeaderFields(), instanceOf(Map.class));
- assertThat(uc.getHeaderFields().size(), greaterThan(25));
- assertThat(uc.getHeaderField("Status"), equalTo("403 Forbidden"));
-
- String key = uc.getHeaderFieldKey(1);
- assertThat(key, notNullValue());
- assertThat(uc.getHeaderField(1), notNullValue());
- assertThat(uc.getHeaderField(1), equalTo(uc.getHeaderField(key)));
-
- assertThat(uc.getRequestProperty("Accept"), equalTo("application/vnd.github+json"));
-
- Assert.assertThrows(IllegalStateException.class, () -> uc.getRequestProperties());
-
- // Actions that are not allowed because connection already opened.
- Assert.assertThrows(IllegalStateException.class, () -> uc.addRequestProperty("bogus", "item"));
-
- Assert.assertThrows(IllegalStateException.class, () -> uc.setAllowUserInteraction(true));
- Assert.assertThrows(IllegalStateException.class, () -> uc.setChunkedStreamingMode(1));
- Assert.assertThrows(IllegalStateException.class, () -> uc.setDoInput(true));
- Assert.assertThrows(IllegalStateException.class, () -> uc.setDoOutput(true));
- Assert.assertThrows(IllegalStateException.class, () -> uc.setFixedLengthStreamingMode(1));
- Assert.assertThrows(IllegalStateException.class, () -> uc.setFixedLengthStreamingMode(1L));
- Assert.assertThrows(IllegalStateException.class, () -> uc.setIfModifiedSince(1L));
- Assert.assertThrows(IllegalStateException.class, () -> uc.setRequestProperty("bogus", "thing"));
- Assert.assertThrows(IllegalStateException.class, () -> uc.setUseCaches(true));
-
- if (uc.toString().contains("GitHubConnectorResponseHttpUrlConnectionAdapter")) {
-
- Assert.assertThrows(UnsupportedOperationException.class,
- () -> uc.getAllowUserInteraction());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getConnectTimeout());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getContent());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getContent(null));
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getDefaultUseCaches());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getDoInput());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getDoOutput());
- Assert.assertThrows(UnsupportedOperationException.class,
- () -> uc.getInstanceFollowRedirects());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getOutputStream());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getPermission());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getReadTimeout());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getUseCaches());
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.usingProxy());
-
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.setConnectTimeout(10));
- Assert.assertThrows(UnsupportedOperationException.class,
- () -> uc.setDefaultUseCaches(true));
-
- Assert.assertThrows(UnsupportedOperationException.class,
- () -> uc.setInstanceFollowRedirects(true));
- Assert.assertThrows(UnsupportedOperationException.class, () -> uc.setReadTimeout(10));
- Assert.assertThrows(ProtocolException.class, () -> uc.setRequestMethod("GET"));
- } else {
- uc.getDefaultUseCaches();
- assertThat(uc.getDoInput(), is(true));
-
- // Depending on the underlying implementation, this may throw or not
- // Assert.assertThrows(IllegalStateException.class, () -> uc.setRequestMethod("GET"));
- }
-
- // ignored
- uc.connect();
-
- // disconnect does nothing, never throws
- uc.disconnect();
- uc.disconnect();
-
- // ignored
- uc.connect();
-
- AbuseLimitHandler.FAIL.onError(e, uc);
+ gitHub = getGitHubWithAbuseLimitHandler(new TestAbuseLimitHandler() {
+ @Override
+ public void onError(IOException e, HttpURLConnection uc) throws IOException {
+ savedConnection[0] = uc;
+ // Verify
+ assertThat(uc.getDate(), Matchers.greaterThanOrEqualTo(new Date().getTime() - 10000));
+ assertThat(uc.getExpiration(), equalTo(0L));
+ assertThat(uc.getIfModifiedSince(), equalTo(0L));
+ assertThat(uc.getLastModified(), equalTo(1581014017000L));
+ assertThat(uc.getRequestMethod(), equalTo("GET"));
+ assertThat(uc.getResponseCode(), equalTo(403));
+ assertThat(uc.getResponseMessage(), containsString("Forbidden"));
+ assertThat(uc.getURL().toString(), endsWith("/repos/hub4j-test-org/temp-testHandler_Fail"));
+ assertThat(uc.getHeaderFieldInt("X-RateLimit-Limit", 10), equalTo(5000));
+ assertThat(uc.getHeaderFieldInt("X-RateLimit-Remaining", 10), equalTo(4000));
+ assertThat(uc.getHeaderFieldInt("X-Foo", 20), equalTo(20));
+ assertThat(uc.getHeaderFieldLong("X-RateLimit-Limit", 15L), equalTo(5000L));
+ assertThat(uc.getHeaderFieldLong("X-RateLimit-Remaining", 15L), equalTo(4000L));
+ assertThat(uc.getHeaderFieldLong("X-Foo", 20L), equalTo(20L));
+
+ assertThat(uc.getContentEncoding(), nullValue());
+ assertThat(uc.getContentType(), equalTo("application/json; charset=utf-8"));
+ assertThat(uc.getContentLength(), equalTo(-1));
+
+ // getting an input stream in an error case should throw
+ IOException ioEx = Assert.assertThrows(IOException.class, () -> uc.getInputStream());
+
+ checkErrorMessageMatches(uc, "Must have push access to repository");
+
+ // calling again should still error
+ ioEx = Assert.assertThrows(IOException.class, () -> uc.getInputStream());
+
+ // calling again on a GitHubConnectorResponse should yield the same value
+ if (uc.toString().contains("GitHubConnectorResponseHttpUrlConnectionAdapter")) {
+ checkErrorMessageMatches(uc, "Must have push access to repository");
+ } else {
+ try (InputStream errorStream = uc.getErrorStream()) {
+ assertThat(errorStream, notNullValue());
+ String errorString = IOUtils.toString(errorStream, StandardCharsets.UTF_8);
+ fail();
+ } catch (IOException ex) {
+ assertThat(ex, notNullValue());
+ assertThat(ex.getMessage(), containsString("stream is closed"));
}
- })
- .build();
+ }
+
+ assertThat(uc.getHeaderFields(), instanceOf(Map.class));
+ assertThat(uc.getHeaderFields().size(), greaterThan(25));
+ assertThat(uc.getHeaderField("Status"), equalTo("403 Forbidden"));
+
+ String key = uc.getHeaderFieldKey(1);
+ assertThat(key, notNullValue());
+ assertThat(uc.getHeaderField(1), notNullValue());
+ assertThat(uc.getHeaderField(1), equalTo(uc.getHeaderField(key)));
+
+ assertThat(uc.getRequestProperty("Accept"), equalTo("application/vnd.github+json"));
+
+ Assert.assertThrows(IllegalStateException.class, () -> uc.getRequestProperties());
+
+ // Actions that are not allowed because connection already opened.
+ Assert.assertThrows(IllegalStateException.class, () -> uc.addRequestProperty("bogus", "item"));
+
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setAllowUserInteraction(true));
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setChunkedStreamingMode(1));
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setDoInput(true));
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setDoOutput(true));
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setFixedLengthStreamingMode(1));
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setFixedLengthStreamingMode(1L));
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setIfModifiedSince(1L));
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setRequestProperty("bogus", "thing"));
+ Assert.assertThrows(IllegalStateException.class, () -> uc.setUseCaches(true));
+
+ if (uc.toString().contains("GitHubConnectorResponseHttpUrlConnectionAdapter")) {
+
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getAllowUserInteraction());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getConnectTimeout());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getContent());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getContent(null));
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getDefaultUseCaches());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getDoInput());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getDoOutput());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getInstanceFollowRedirects());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getOutputStream());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getPermission());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getReadTimeout());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.getUseCaches());
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.usingProxy());
+
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.setConnectTimeout(10));
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.setDefaultUseCaches(true));
+
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.setInstanceFollowRedirects(true));
+ Assert.assertThrows(UnsupportedOperationException.class, () -> uc.setReadTimeout(10));
+ Assert.assertThrows(ProtocolException.class, () -> uc.setRequestMethod("GET"));
+ } else {
+ uc.getDefaultUseCaches();
+ assertThat(uc.getDoInput(), is(true));
+
+ // Depending on the underlying implementation, this may throw or not
+ // Assert.assertThrows(IllegalStateException.class, () -> uc.setRequestMethod("GET"));
+ }
+
+ // ignored
+ uc.connect();
+
+ // disconnect does nothing, never throws
+ uc.disconnect();
+ uc.disconnect();
+
+ // ignored
+ uc.connect();
+
+ AbuseLimitHandler.FAIL.onError(e, uc);
+ }
+ }).build();
gitHub.getMyself();
assertThat(mockGitHub.getRequestCount(), equalTo(1));
@@ -224,9 +217,7 @@ public void testHandler_HttpStatus_Fail() throws Exception {
// Customized response that templates the date to keep things working
snapshotNotAllowed();
- gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
- .withAbuseLimitHandler(AbuseLimitHandler.FAIL)
- .build();
+ gitHub = getGitHubWithAbuseLimitHandler(AbuseLimitHandler.FAIL).build();
gitHub.getMyself();
assertThat(mockGitHub.getRequestCount(), equalTo(1));
@@ -257,9 +248,7 @@ public void testHandler_Wait() throws Exception {
// Customized response that templates the date to keep things working
snapshotNotAllowed();
- gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
- .withAbuseLimitHandler(AbuseLimitHandler.WAIT)
- .build();
+ gitHub = getGitHubWithAbuseLimitHandler(AbuseLimitHandler.WAIT).build();
gitHub.getMyself();
assertThat(mockGitHub.getRequestCount(), equalTo(1));
@@ -279,13 +268,11 @@ public void testHandler_WaitStuck() throws Exception {
// Customized response that templates the date to keep things working
snapshotNotAllowed();
- gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
- .withAbuseLimitHandler(new AbuseLimitHandler() {
- @Override
- public void onError(IOException e, HttpURLConnection uc) throws IOException {
- }
- })
- .build();
+ gitHub = getGitHubWithAbuseLimitHandler(new TestAbuseLimitHandler() {
+ @Override
+ public void onError(IOException e, HttpURLConnection uc) throws IOException {
+ }
+ }).build();
gitHub.getMyself();
assertThat(mockGitHub.getRequestCount(), equalTo(1));
@@ -312,56 +299,54 @@ public void testHandler_Wait_Secondary_Limits() throws Exception {
// Customized response that templates the date to keep things working
snapshotNotAllowed();
final HttpURLConnection[] savedConnection = new HttpURLConnection[1];
- gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
- .withAbuseLimitHandler(new AbuseLimitHandler() {
- /**
- * Overriding method because the actual method will wait for one minute causing slowness in unit
- * tests
- */
- @Override
- public void onError(IOException e, HttpURLConnection uc) throws IOException {
- savedConnection[0] = uc;
- // Verify
- assertThat(uc.getDate(), Matchers.greaterThanOrEqualTo(new Date().getTime() - 10000));
- assertThat(uc.getExpiration(), equalTo(0L));
- assertThat(uc.getIfModifiedSince(), equalTo(0L));
- assertThat(uc.getLastModified(), equalTo(1581014017000L));
- assertThat(uc.getRequestMethod(), equalTo("GET"));
- assertThat(uc.getResponseCode(), equalTo(403));
- assertThat(uc.getResponseMessage(), containsString("Forbidden"));
- assertThat(uc.getURL().toString(),
- endsWith("/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits"));
- assertThat(uc.getHeaderFieldInt("X-RateLimit-Limit", 10), equalTo(5000));
- assertThat(uc.getHeaderFieldInt("X-RateLimit-Remaining", 10), equalTo(4000));
- assertThat(uc.getHeaderFieldInt("X-Foo", 20), equalTo(20));
- assertThat(uc.getHeaderFieldLong("X-RateLimit-Limit", 15L), equalTo(5000L));
- assertThat(uc.getHeaderFieldLong("X-RateLimit-Remaining", 15L), equalTo(4000L));
- assertThat(uc.getHeaderFieldLong("X-Foo", 20L), equalTo(20L));
- assertThat(uc.getHeaderField("gh-limited-by"), equalTo("search-elapsed-time-shared-grouped"));
- assertThat(uc.getContentEncoding(), nullValue());
- assertThat(uc.getContentType(), equalTo("application/json; charset=utf-8"));
- assertThat(uc.getContentLength(), equalTo(-1));
- assertThat(uc.getHeaderFields(), instanceOf(Map.class));
- assertThat(uc.getHeaderFields().size(), greaterThan(25));
- assertThat(uc.getHeaderField("Status"), equalTo("403 Forbidden"));
-
- checkErrorMessageMatches(uc,
- "You have exceeded a secondary rate limit. Please wait a few minutes before you try again");
- AbuseLimitHandler.FAIL.onError(e, uc);
- }
- })
- .build();
+ gitHub = getGitHubWithAbuseLimitHandler(new TestAbuseLimitHandler() {
+ /**
+ * Overriding method because the actual method will wait for one minute causing slowness in unit tests
+ */
+ @Override
+ public void onError(IOException e, HttpURLConnection uc) throws IOException {
+ savedConnection[0] = uc;
+ // Verify
+ assertThat(uc.getDate(), Matchers.greaterThanOrEqualTo(new Date().getTime() - 10000));
+ assertThat(uc.getExpiration(), equalTo(0L));
+ assertThat(uc.getIfModifiedSince(), equalTo(0L));
+ assertThat(uc.getLastModified(), equalTo(1581014017000L));
+ assertThat(uc.getRequestMethod(), equalTo("GET"));
+ assertThat(uc.getResponseCode(), equalTo(403));
+ assertThat(uc.getResponseMessage(), containsString("Forbidden"));
+ assertThat(uc.getURL().toString(),
+ endsWith("/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits"));
+ assertThat(uc.getHeaderFieldInt("X-RateLimit-Limit", 10), equalTo(5000));
+ assertThat(uc.getHeaderFieldInt("X-RateLimit-Remaining", 10), equalTo(4000));
+ assertThat(uc.getHeaderFieldInt("X-Foo", 20), equalTo(20));
+ assertThat(uc.getHeaderFieldLong("X-RateLimit-Limit", 15L), equalTo(5000L));
+ assertThat(uc.getHeaderFieldLong("X-RateLimit-Remaining", 15L), equalTo(4000L));
+ assertThat(uc.getHeaderFieldLong("X-Foo", 20L), equalTo(20L));
+ assertThat(uc.getHeaderField("gh-limited-by"), equalTo("search-elapsed-time-shared-grouped"));
+ assertThat(uc.getContentEncoding(), nullValue());
+ assertThat(uc.getContentType(), equalTo("application/json; charset=utf-8"));
+ assertThat(uc.getContentLength(), equalTo(-1));
+ assertThat(uc.getHeaderFields(), instanceOf(Map.class));
+ assertThat(uc.getHeaderFields().size(), greaterThan(25));
+
+ assertThat(AbuseLimitHandler.DEFAULT_WAIT_MILLIS, equalTo(61 * 1000l));
+ AbuseLimitHandler.DEFAULT_WAIT_MILLIS = 3210l;
+ long waitTime = parseWaitTime(uc);
+ assertThat(waitTime, equalTo(AbuseLimitHandler.DEFAULT_WAIT_MILLIS));
+
+ assertThat(uc.getHeaderField("Status"), equalTo("403 Forbidden"));
+
+ checkErrorMessageMatches(uc,
+ "You have exceeded a secondary rate limit. Please wait a few minutes before you try again");
+ AbuseLimitHandler.WAIT.onError(e, uc);
+ }
+ }).build();
gitHub.getMyself();
assertThat(mockGitHub.getRequestCount(), equalTo(1));
- try {
- getTempRepository();
- fail();
- } catch (Exception e) {
- assertThat(e, instanceOf(HttpException.class));
- assertThat(e.getMessage(), equalTo("Abuse limit reached"));
- }
- assertThat(mockGitHub.getRequestCount(), equalTo(2));
+
+ getTempRepository();
+ assertThat(mockGitHub.getRequestCount(), equalTo(3));
}
/**
@@ -388,54 +373,43 @@ public void testHandler_Wait_Secondary_Limits_Too_Many_Requests() throws Excepti
// Customized response that templates the date to keep things working
snapshotNotAllowed();
final HttpURLConnection[] savedConnection = new HttpURLConnection[1];
- gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
- .withAbuseLimitHandler(new AbuseLimitHandler() {
- /**
- * Overriding method because the actual method will wait for one minute causing slowness in unit
- * tests
- */
- @Override
- public void onError(IOException e, HttpURLConnection uc) throws IOException {
- savedConnection[0] = uc;
- // Verify the test data is what we expected it to be for this test case
- assertThat(uc.getDate(), Matchers.greaterThanOrEqualTo(new Date().getTime() - 10000));
- assertThat(uc.getExpiration(), equalTo(0L));
- assertThat(uc.getIfModifiedSince(), equalTo(0L));
- assertThat(uc.getLastModified(), equalTo(1581014017000L));
- assertThat(uc.getRequestMethod(), equalTo("GET"));
- assertThat(uc.getResponseCode(), equalTo(429));
- assertThat(uc.getResponseMessage(), containsString("Many"));
- assertThat(uc.getURL().toString(),
- endsWith(
- "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests"));
- assertThat(uc.getContentLength(), equalTo(-1));
- assertThat(uc.getHeaderFields(), instanceOf(Map.class));
- assertThat(uc.getHeaderField("Status"), equalTo("429 Too Many Requests"));
- assertThat(uc.getHeaderField("Retry-After"), equalTo("42"));
-
- checkErrorMessageMatches(uc,
- "You have exceeded a secondary rate limit. Please wait a few minutes before you try again");
- // Because we've overridden onError to bypass the wait, we don't cover the wait calculation
- // logic
- // Manually invoke it to make sure it's what we intended
- long waitTime = parseWaitTime(uc);
- assertThat(waitTime, equalTo(42 * 1000l));
-
- AbuseLimitHandler.FAIL.onError(e, uc);
- }
- })
- .build();
+ gitHub = getGitHubWithAbuseLimitHandler(new TestAbuseLimitHandler() {
+ /**
+ * Overriding method because the actual method will wait for one minute causing slowness in unit tests
+ */
+ @Override
+ public void onError(IOException e, HttpURLConnection uc) throws IOException {
+ savedConnection[0] = uc;
+ // Verify the test data is what we expected it to be for this test case
+ assertThat(uc.getDate(), Matchers.greaterThanOrEqualTo(new Date().getTime() - 10000));
+ assertThat(uc.getExpiration(), equalTo(0L));
+ assertThat(uc.getIfModifiedSince(), equalTo(0L));
+ assertThat(uc.getLastModified(), equalTo(1581014017000L));
+ assertThat(uc.getRequestMethod(), equalTo("GET"));
+ assertThat(uc.getResponseCode(), equalTo(429));
+ assertThat(uc.getResponseMessage(), containsString("Many"));
+ assertThat(uc.getURL().toString(),
+ endsWith("/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests"));
+ assertThat(uc.getContentLength(), equalTo(-1));
+ assertThat(uc.getHeaderFields(), instanceOf(Map.class));
+ assertThat(uc.getHeaderField("Status"), equalTo("429 Too Many Requests"));
+ assertThat(uc.getHeaderField("Retry-After"), equalTo("8"));
+
+ checkErrorMessageMatches(uc,
+ "You have exceeded a secondary rate limit. Please wait a few minutes before you try again");
+
+ long waitTime = parseWaitTime(uc);
+ assertThat(waitTime, equalTo(8 * 1000l));
+
+ AbuseLimitHandler.WAIT.onError(e, uc);
+ }
+ }).build();
gitHub.getMyself();
assertThat(mockGitHub.getRequestCount(), equalTo(1));
- try {
- getTempRepository();
- fail();
- } catch (Exception e) {
- assertThat(e, instanceOf(HttpException.class));
- assertThat(e.getMessage(), equalTo("Abuse limit reached"));
- }
- assertThat(mockGitHub.getRequestCount(), equalTo(2));
+
+ getTempRepository();
+ assertThat(mockGitHub.getRequestCount(), equalTo(3));
}
/**
@@ -449,51 +423,41 @@ public void testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After
// Customized response that templates the date to keep things working
snapshotNotAllowed();
final HttpURLConnection[] savedConnection = new HttpURLConnection[1];
- gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
- .withAbuseLimitHandler(new AbuseLimitHandler() {
- /**
- * Overriding method because the actual method will wait for one minute causing slowness in unit
- * tests
- */
- @Override
- public void onError(IOException e, HttpURLConnection uc) throws IOException {
- savedConnection[0] = uc;
- // Verify the test data is what we expected it to be for this test case
- assertThat(uc.getRequestMethod(), equalTo("GET"));
- assertThat(uc.getResponseCode(), equalTo(429));
- assertThat(uc.getResponseMessage(), containsString("Many"));
- assertThat(uc.getURL().toString(),
- endsWith(
- "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After"));
- assertThat(uc.getContentLength(), equalTo(-1));
- assertThat(uc.getHeaderField("Status"), equalTo("429 Too Many Requests"));
- assertThat(uc.getHeaderField("Retry-After"), startsWith("Mon"));
-
- checkErrorMessageMatches(uc,
- "You have exceeded a secondary rate limit. Please wait a few minutes before you try again");
-
- // Because we've overridden onError to bypass the wait, we don't cover the wait calculation
- // logic
- // Manually invoke it to make sure it's what we intended
- long waitTime = parseWaitTime(uc);
- // The exact value here will depend on when the test is run, but it should be positive, and huge
- assertThat(waitTime, greaterThan(1000 * 1000l));
-
- AbuseLimitHandler.FAIL.onError(e, uc);
- }
- })
- .build();
+ gitHub = getGitHubWithAbuseLimitHandler(new TestAbuseLimitHandler() {
+ /**
+ * Overriding method because the actual method will wait for one minute causing slowness in unit tests
+ */
+ @Override
+ public void onError(IOException e, HttpURLConnection uc) throws IOException {
+ savedConnection[0] = uc;
+ // Verify the test data is what we expected it to be for this test case
+ assertThat(uc.getRequestMethod(), equalTo("GET"));
+ assertThat(uc.getResponseCode(), equalTo(429));
+ assertThat(uc.getResponseMessage(), containsString("Many"));
+ assertThat(uc.getURL().toString(),
+ endsWith(
+ "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After"));
+ assertThat(uc.getContentLength(), equalTo(-1));
+ assertThat(uc.getHeaderField("Status"), equalTo("429 Too Many Requests"));
+ assertThat(uc.getHeaderField("Retry-After"), containsString("GMT"));
+
+ checkErrorMessageMatches(uc,
+ "You have exceeded a secondary rate limit. Please wait a few minutes before you try again");
+
+ long waitTime = parseWaitTime(uc);
+ // The exact value here will depend on when the test is run
+ assertThat(waitTime, Matchers.lessThan(AbuseLimitHandler.DEFAULT_WAIT_MILLIS));
+ assertThat(waitTime, Matchers.greaterThan(3 * 1000l));
+
+ AbuseLimitHandler.WAIT.onError(e, uc);
+ }
+ }).build();
gitHub.getMyself();
assertThat(mockGitHub.getRequestCount(), equalTo(1));
- try {
- getTempRepository();
- fail();
- } catch (Exception e) {
- assertThat(e, instanceOf(HttpException.class));
- assertThat(e.getMessage(), equalTo("Abuse limit reached"));
- }
- assertThat(mockGitHub.getRequestCount(), equalTo(2));
+
+ getTempRepository();
+ assertThat(mockGitHub.getRequestCount(), equalTo(3));
}
/**
@@ -507,52 +471,59 @@ public void testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After()
// Customized response that templates the date to keep things working
snapshotNotAllowed();
final HttpURLConnection[] savedConnection = new HttpURLConnection[1];
- gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
- .withAbuseLimitHandler(new AbuseLimitHandler() {
- /**
- * Overriding method because the actual method will wait for one minute causing slowness in unit
- * tests
- */
- @Override
- public void onError(IOException e, HttpURLConnection uc) throws IOException {
- savedConnection[0] = uc;
- // Verify the test data is what we expected it to be for this test case
- assertThat(uc.getRequestMethod(), equalTo("GET"));
- assertThat(uc.getResponseCode(), equalTo(429));
- assertThat(uc.getResponseMessage(), containsString("Many"));
- assertThat(uc.getURL().toString(),
- endsWith(
- "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After"));
- assertThat(uc.getContentEncoding(), nullValue());
- assertThat(uc.getContentType(), equalTo("application/json; charset=utf-8"));
- assertThat(uc.getContentLength(), equalTo(-1));
- assertThat(uc.getHeaderFields(), instanceOf(Map.class));
- assertThat(uc.getHeaderField("Status"), equalTo("429 Too Many Requests"));
- assertThat(uc.getHeaderField("Retry-After"), nullValue());
-
- checkErrorMessageMatches(uc,
- "You have exceeded a secondary rate limit. Please wait a few minutes before you try again");
-
- // Because we've overridden onError to bypass the wait, we don't cover the wait calculation
- // logic
- // Manually invoke it to make sure it's what we intended
- long waitTime = parseWaitTime(uc);
- assertThat(waitTime, greaterThan(60000l));
-
- AbuseLimitHandler.FAIL.onError(e, uc);
- }
- })
- .build();
+ gitHub = getGitHubWithAbuseLimitHandler(new TestAbuseLimitHandler() {
+ /**
+ * Overriding method because the actual method will wait for one minute causing slowness in unit tests
+ */
+ @Override
+ public void onError(IOException e, HttpURLConnection uc) throws IOException {
+ savedConnection[0] = uc;
+ // Verify the test data is what we expected it to be for this test case
+ assertThat(uc.getRequestMethod(), equalTo("GET"));
+ assertThat(uc.getResponseCode(), equalTo(429));
+ assertThat(uc.getResponseMessage(), containsString("Many"));
+ assertThat(uc.getURL().toString(),
+ endsWith(
+ "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After"));
+ assertThat(uc.getContentEncoding(), nullValue());
+ assertThat(uc.getContentType(), equalTo("application/json; charset=utf-8"));
+ assertThat(uc.getContentLength(), equalTo(-1));
+ assertThat(uc.getHeaderFields(), instanceOf(Map.class));
+ assertThat(uc.getHeaderField("Status"), equalTo("429 Too Many Requests"));
+ assertThat(uc.getHeaderField("Retry-After"), nullValue());
+
+ checkErrorMessageMatches(uc,
+ "You have exceeded a secondary rate limit. Please wait a few minutes before you try again");
+
+ AbuseLimitHandler.DEFAULT_WAIT_MILLIS = 3210l;
+ long waitTime = parseWaitTime(uc);
+ assertThat(waitTime, equalTo(AbuseLimitHandler.DEFAULT_WAIT_MILLIS));
+
+ AbuseLimitHandler.WAIT.onError(e, uc);
+ }
+ }).build();
gitHub.getMyself();
assertThat(mockGitHub.getRequestCount(), equalTo(1));
- try {
- getTempRepository();
- fail();
- } catch (Exception e) {
- assertThat(e, instanceOf(HttpException.class));
- assertThat(e.getMessage(), equalTo("Abuse limit reached"));
+
+ getTempRepository();
+ assertThat(mockGitHub.getRequestCount(), equalTo(3));
+ }
+
+ private GitHubBuilder getGitHubWithAbuseLimitHandler(AbuseLimitHandler abuseLimitHandler) {
+ return getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl())
+ .withAbuseLimitHandler(abuseLimitHandler);
+ }
+
+ /**
+ * Test class wrapping the deprecated AbuseLimitHandler to make editing easier.
+ */
+ public static abstract class TestAbuseLimitHandler extends AbuseLimitHandler {
+ /**
+ * Default Constructor
+ */
+ public TestAbuseLimitHandler() {
}
- assertThat(mockGitHub.getRequestCount(), equalTo(2));
}
+
}
diff --git a/src/test/java/org/kohsuke/aot/AotIntegrationTest.java b/src/test/java/org/kohsuke/github/AotIntegrationTest.java
similarity index 93%
rename from src/test/java/org/kohsuke/aot/AotIntegrationTest.java
rename to src/test/java/org/kohsuke/github/AotIntegrationTest.java
index 574661906f..8605d8aa46 100644
--- a/src/test/java/org/kohsuke/aot/AotIntegrationTest.java
+++ b/src/test/java/org/kohsuke/github/AotIntegrationTest.java
@@ -1,4 +1,4 @@
-package org.kohsuke.aot;
+package org.kohsuke.github;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -25,6 +25,12 @@
@SpringBootTest
public class AotIntegrationTest {
+ /**
+ * Create default AotIntegrationTest instance
+ */
+ public AotIntegrationTest() {
+ }
+
/**
* Test to check if all required classes are registered for AOT.
*
@@ -77,6 +83,7 @@ private Stream readAotConfigToStreamOfClassNames(String reflectionConfig
.map(jsonNode -> jsonNode.get("name"))
.map(JsonNode::toString)
.map(reflectConfigEntryClassName -> reflectConfigEntryClassName.replace("\"", ""))
- .filter(x -> x.contains("org.kohsuke.github"));
+ .filter(x -> x.contains("org.kohsuke.github"))
+ .filter(x -> !x.contains("org.kohsuke.github.AotTest"));
}
}
diff --git a/src/test/java/org/kohsuke/aot/AotTestApplication.java b/src/test/java/org/kohsuke/github/AotTestApplication.java
similarity index 90%
rename from src/test/java/org/kohsuke/aot/AotTestApplication.java
rename to src/test/java/org/kohsuke/github/AotTestApplication.java
index 0e3081d937..bc4231fabe 100644
--- a/src/test/java/org/kohsuke/aot/AotTestApplication.java
+++ b/src/test/java/org/kohsuke/github/AotTestApplication.java
@@ -1,4 +1,4 @@
-package org.kohsuke.aot;
+package org.kohsuke.github;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
@@ -8,7 +8,7 @@
* required for test purpose.
*/
@SpringBootApplication
-public class AotTestApplication {
+class AotTestApplication {
/**
* Runs a spring boot application to generate AOT hints
diff --git a/src/test/java/org/kohsuke/aot/AotTestRuntimeHints.java b/src/test/java/org/kohsuke/github/AotTestRuntimeHints.java
similarity index 96%
rename from src/test/java/org/kohsuke/aot/AotTestRuntimeHints.java
rename to src/test/java/org/kohsuke/github/AotTestRuntimeHints.java
index 0dbad0591c..9f184dee66 100644
--- a/src/test/java/org/kohsuke/aot/AotTestRuntimeHints.java
+++ b/src/test/java/org/kohsuke/github/AotTestRuntimeHints.java
@@ -1,4 +1,4 @@
-package org.kohsuke.aot;
+package org.kohsuke.github;
import org.jetbrains.annotations.NotNull;
import org.springframework.aot.hint.MemberCategory;
@@ -26,6 +26,12 @@ public class AotTestRuntimeHints implements RuntimeHintsRegistrar {
private static final String LOCATION_PATTERN_OF_ORG_KOHSUKE_GITHUB_CLASSES = "classpath*:org/kohsuke/github/**/*.class";
+ /**
+ * Default constructor.
+ */
+ public AotTestRuntimeHints() {
+ }
+
@Override
public void registerHints(@NotNull RuntimeHints hints, ClassLoader classLoader) {
try {
diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java
index 5f34fb91b5..b3e7e0fb0a 100755
--- a/src/test/java/org/kohsuke/github/AppTest.java
+++ b/src/test/java/org/kohsuke/github/AppTest.java
@@ -29,6 +29,12 @@
*/
public class AppTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default AppTest instance
+ */
+ public AppTest() {
+ }
+
/** The Constant GITHUB_API_TEST_REPO. */
static final String GITHUB_API_TEST_REPO = "github-api-test";
@@ -1060,6 +1066,19 @@ public void testUserPublicEventApi() throws Exception {
}
}
+ /**
+ * Test getEmails.
+ *
+ * @throws IOException
+ * Signals that an I/O exception has occurred.
+ */
+ @Test
+ public void testGetEmails() throws IOException {
+ List emails = gitHub.getMyself().getEmails();
+ assertThat(emails.size(), equalTo(2));
+ assertThat(emails, contains("bitwiseman@gmail.com", "bitwiseman@users.noreply.github.com"));
+ }
+
/**
* Test app.
*
diff --git a/src/test/java/org/kohsuke/github/ArchTests.java b/src/test/java/org/kohsuke/github/ArchTests.java
index a460dc7db8..8e36984dc6 100644
--- a/src/test/java/org/kohsuke/github/ArchTests.java
+++ b/src/test/java/org/kohsuke/github/ArchTests.java
@@ -68,6 +68,12 @@ public boolean test(JavaAnnotation> javaAnnotation) {
}
};
+ /**
+ * Default constructor.
+ */
+ public ArchTests() {
+ }
+
/**
* Before class.
*/
diff --git a/src/test/java/org/kohsuke/github/BridgeMethodTest.java b/src/test/java/org/kohsuke/github/BridgeMethodTest.java
index f30aea7f8f..3d0dbdfc6f 100644
--- a/src/test/java/org/kohsuke/github/BridgeMethodTest.java
+++ b/src/test/java/org/kohsuke/github/BridgeMethodTest.java
@@ -23,6 +23,12 @@
*/
public class BridgeMethodTest extends Assert {
+ /**
+ * Create default BridgeMethodTest instance
+ */
+ public BridgeMethodTest() {
+ }
+
/**
* Test bridge methods.
*
diff --git a/src/test/java/org/kohsuke/github/CommitTest.java b/src/test/java/org/kohsuke/github/CommitTest.java
index 257e681cca..76b5028b3b 100644
--- a/src/test/java/org/kohsuke/github/CommitTest.java
+++ b/src/test/java/org/kohsuke/github/CommitTest.java
@@ -19,6 +19,12 @@
*/
public class CommitTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default CommitTest instance
+ */
+ public CommitTest() {
+ }
+
/**
* Last status.
*
diff --git a/src/test/java/org/kohsuke/github/EnterpriseManagedSupportTest.java b/src/test/java/org/kohsuke/github/EnterpriseManagedSupportTest.java
index 9ddc72ea66..ad2c4c63fe 100644
--- a/src/test/java/org/kohsuke/github/EnterpriseManagedSupportTest.java
+++ b/src/test/java/org/kohsuke/github/EnterpriseManagedSupportTest.java
@@ -14,6 +14,12 @@
*/
public class EnterpriseManagedSupportTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default EnterpriseManagedSupportTest instance
+ */
+ public EnterpriseManagedSupportTest() {
+ }
+
private static final String NOT_PART_OF_EXTERNALLY_MANAGED_ENTERPRISE_ERROR = "{\"message\":\"This organization is not part of externally managed enterprise.\","
+ "\"documentation_url\": \"https://docs.github.com/rest/teams/external-groups#list-external-groups-in-an-organization\"}";
diff --git a/src/test/java/org/kohsuke/github/EnumTest.java b/src/test/java/org/kohsuke/github/EnumTest.java
index 02ab6d912d..8458561428 100644
--- a/src/test/java/org/kohsuke/github/EnumTest.java
+++ b/src/test/java/org/kohsuke/github/EnumTest.java
@@ -13,6 +13,12 @@
*/
public class EnumTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default EnumTest instance
+ */
+ public EnumTest() {
+ }
+
/**
* Touch enums.
*/
diff --git a/src/test/java/org/kohsuke/github/GHAppExtendedTest.java b/src/test/java/org/kohsuke/github/GHAppExtendedTest.java
index a419f0945a..84e3566a55 100644
--- a/src/test/java/org/kohsuke/github/GHAppExtendedTest.java
+++ b/src/test/java/org/kohsuke/github/GHAppExtendedTest.java
@@ -14,6 +14,12 @@
*/
public class GHAppExtendedTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHAppExtendedTest instance
+ */
+ public GHAppExtendedTest() {
+ }
+
private static final String APP_SLUG = "ghapi-test-app-4";
/**
diff --git a/src/test/java/org/kohsuke/github/GHAppInstallationTest.java b/src/test/java/org/kohsuke/github/GHAppInstallationTest.java
index d6218d1121..46c51b7b64 100644
--- a/src/test/java/org/kohsuke/github/GHAppInstallationTest.java
+++ b/src/test/java/org/kohsuke/github/GHAppInstallationTest.java
@@ -18,6 +18,12 @@
*/
public class GHAppInstallationTest extends AbstractGHAppInstallationTest {
+ /**
+ * Create default GHAppInstallationTest instance
+ */
+ public GHAppInstallationTest() {
+ }
+
/**
* Test list repositories two repos.
*
diff --git a/src/test/java/org/kohsuke/github/GHAppTest.java b/src/test/java/org/kohsuke/github/GHAppTest.java
index 2ceb479e4b..3519e3302d 100644
--- a/src/test/java/org/kohsuke/github/GHAppTest.java
+++ b/src/test/java/org/kohsuke/github/GHAppTest.java
@@ -24,6 +24,12 @@
*/
public class GHAppTest extends AbstractGHAppInstallationTest {
+ /**
+ * Create default GHAppTest instance
+ */
+ public GHAppTest() {
+ }
+
/**
* Gets the git hub builder.
*
diff --git a/src/test/java/org/kohsuke/github/GHAuthenticatedAppInstallationTest.java b/src/test/java/org/kohsuke/github/GHAuthenticatedAppInstallationTest.java
index 4461ccbc8a..3786f22e37 100644
--- a/src/test/java/org/kohsuke/github/GHAuthenticatedAppInstallationTest.java
+++ b/src/test/java/org/kohsuke/github/GHAuthenticatedAppInstallationTest.java
@@ -15,6 +15,12 @@
*/
public class GHAuthenticatedAppInstallationTest extends AbstractGHAppInstallationTest {
+ /**
+ * Create default GHAuthenticatedAppInstallationTest instance
+ */
+ public GHAuthenticatedAppInstallationTest() {
+ }
+
/**
* Gets the git hub builder.
*
diff --git a/src/test/java/org/kohsuke/github/GHBranchProtectionTest.java b/src/test/java/org/kohsuke/github/GHBranchProtectionTest.java
index bee19e8e0c..5bbf0183d5 100755
--- a/src/test/java/org/kohsuke/github/GHBranchProtectionTest.java
+++ b/src/test/java/org/kohsuke/github/GHBranchProtectionTest.java
@@ -22,6 +22,13 @@
* The Class GHBranchProtectionTest.
*/
public class GHBranchProtectionTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default GHBranchProtectionTest instance
+ */
+ public GHBranchProtectionTest() {
+ }
+
private static final String BRANCH = "main";
private static final String BRANCH_REF = "heads/" + BRANCH;
diff --git a/src/test/java/org/kohsuke/github/GHBranchTest.java b/src/test/java/org/kohsuke/github/GHBranchTest.java
index f28554160d..117da049f7 100644
--- a/src/test/java/org/kohsuke/github/GHBranchTest.java
+++ b/src/test/java/org/kohsuke/github/GHBranchTest.java
@@ -9,6 +9,13 @@
* The Class GHBranchTest.
*/
public class GHBranchTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default GHBranchTest instance
+ */
+ public GHBranchTest() {
+ }
+
private static final String BRANCH_1 = "testBranch1";
private static final String BRANCH_2 = "testBranch2";
diff --git a/src/test/java/org/kohsuke/github/GHCheckRunBuilderTest.java b/src/test/java/org/kohsuke/github/GHCheckRunBuilderTest.java
index 5b48eabd2d..a52e07e3a4 100644
--- a/src/test/java/org/kohsuke/github/GHCheckRunBuilderTest.java
+++ b/src/test/java/org/kohsuke/github/GHCheckRunBuilderTest.java
@@ -40,6 +40,12 @@
@SuppressWarnings("deprecation") // preview
public class GHCheckRunBuilderTest extends AbstractGHAppInstallationTest {
+ /**
+ * Create default GHCheckRunBuilderTest instance
+ */
+ public GHCheckRunBuilderTest() {
+ }
+
/**
* Gets the installation github.
*
diff --git a/src/test/java/org/kohsuke/github/GHCodeownersErrorTest.java b/src/test/java/org/kohsuke/github/GHCodeownersErrorTest.java
index b4294be64e..958d4908be 100644
--- a/src/test/java/org/kohsuke/github/GHCodeownersErrorTest.java
+++ b/src/test/java/org/kohsuke/github/GHCodeownersErrorTest.java
@@ -14,6 +14,12 @@
*/
public class GHCodeownersErrorTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHCodeownersErrorTest instance
+ */
+ public GHCodeownersErrorTest() {
+ }
+
/**
* Gets the {@code CODEOWNERS} errors.
*
diff --git a/src/test/java/org/kohsuke/github/GHContentIntegrationTest.java b/src/test/java/org/kohsuke/github/GHContentIntegrationTest.java
index c663dc1b32..7c83d51748 100644
--- a/src/test/java/org/kohsuke/github/GHContentIntegrationTest.java
+++ b/src/test/java/org/kohsuke/github/GHContentIntegrationTest.java
@@ -22,6 +22,12 @@
*/
public class GHContentIntegrationTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHContentIntegrationTest instance
+ */
+ public GHContentIntegrationTest() {
+ }
+
private GHRepository repo;
// file name with spaces and other chars
diff --git a/src/test/java/org/kohsuke/github/GHDeployKeyTest.java b/src/test/java/org/kohsuke/github/GHDeployKeyTest.java
index 35d321888c..bc3bb229ab 100644
--- a/src/test/java/org/kohsuke/github/GHDeployKeyTest.java
+++ b/src/test/java/org/kohsuke/github/GHDeployKeyTest.java
@@ -17,6 +17,13 @@
* @author Jonas van Vliet
*/
public class GHDeployKeyTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default GHDeployKeyTest instance
+ */
+ public GHDeployKeyTest() {
+ }
+
private static final String DEPLOY_KEY_TEST_REPO_NAME = "hub4j-test-org/GHDeployKeyTest";
private static final String ED_25519_READONLY = "DeployKey - ed25519 - readonly";
private static final String RSA_4096_READWRITE = "Deploykey - rsa4096 - readwrite";
diff --git a/src/test/java/org/kohsuke/github/GHDeploymentTest.java b/src/test/java/org/kohsuke/github/GHDeploymentTest.java
index 32be0ceadd..56d8caa634 100644
--- a/src/test/java/org/kohsuke/github/GHDeploymentTest.java
+++ b/src/test/java/org/kohsuke/github/GHDeploymentTest.java
@@ -16,6 +16,12 @@
*/
public class GHDeploymentTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHDeploymentTest instance
+ */
+ public GHDeploymentTest() {
+ }
+
/**
* Test get deployment by id string payload.
*
diff --git a/src/test/java/org/kohsuke/github/GHDiscussionTest.java b/src/test/java/org/kohsuke/github/GHDiscussionTest.java
index c2ea7f270b..a2b68db1b5 100644
--- a/src/test/java/org/kohsuke/github/GHDiscussionTest.java
+++ b/src/test/java/org/kohsuke/github/GHDiscussionTest.java
@@ -17,6 +17,13 @@
* @author Charles Moulliard
*/
public class GHDiscussionTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default GHDiscussionTest instance
+ */
+ public GHDiscussionTest() {
+ }
+
private final String TEAM_SLUG = "dummy-team";
private GHTeam team;
diff --git a/src/test/java/org/kohsuke/github/GHEventTest.java b/src/test/java/org/kohsuke/github/GHEventTest.java
index 4b43202da2..900063d2b8 100644
--- a/src/test/java/org/kohsuke/github/GHEventTest.java
+++ b/src/test/java/org/kohsuke/github/GHEventTest.java
@@ -11,6 +11,12 @@
*/
public class GHEventTest {
+ /**
+ * Create default GHEventTest instance
+ */
+ public GHEventTest() {
+ }
+
/**
* Function from GHEventInfo to transform string event to GHEvent which has been replaced by static mapping due to
* complex parsing logic below
diff --git a/src/test/java/org/kohsuke/github/GHExternalGroupTest.java b/src/test/java/org/kohsuke/github/GHExternalGroupTest.java
index ef7e7ec7d8..da0696eece 100644
--- a/src/test/java/org/kohsuke/github/GHExternalGroupTest.java
+++ b/src/test/java/org/kohsuke/github/GHExternalGroupTest.java
@@ -16,6 +16,12 @@
*/
public class GHExternalGroupTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHExternalGroupTest instance
+ */
+ public GHExternalGroupTest() {
+ }
+
/**
* Test refresh bound external group.
*
diff --git a/src/test/java/org/kohsuke/github/GHGistTest.java b/src/test/java/org/kohsuke/github/GHGistTest.java
index 142247a18f..14e02f1c23 100644
--- a/src/test/java/org/kohsuke/github/GHGistTest.java
+++ b/src/test/java/org/kohsuke/github/GHGistTest.java
@@ -14,6 +14,12 @@
*/
public class GHGistTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHGistTest instance
+ */
+ public GHGistTest() {
+ }
+
/**
* Lifecycle test.
*
diff --git a/src/test/java/org/kohsuke/github/GHGistUpdaterTest.java b/src/test/java/org/kohsuke/github/GHGistUpdaterTest.java
index 5ec2590c59..e5626fc034 100644
--- a/src/test/java/org/kohsuke/github/GHGistUpdaterTest.java
+++ b/src/test/java/org/kohsuke/github/GHGistUpdaterTest.java
@@ -17,6 +17,12 @@
*/
public class GHGistUpdaterTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHGistUpdaterTest instance
+ */
+ public GHGistUpdaterTest() {
+ }
+
private GHGist gist;
/**
diff --git a/src/test/java/org/kohsuke/github/GHHookTest.java b/src/test/java/org/kohsuke/github/GHHookTest.java
index 247505fb1d..5d87c04078 100644
--- a/src/test/java/org/kohsuke/github/GHHookTest.java
+++ b/src/test/java/org/kohsuke/github/GHHookTest.java
@@ -24,6 +24,12 @@
*/
public class GHHookTest {
+ /**
+ * Create default GHHookTest instance
+ */
+ public GHHookTest() {
+ }
+
/**
* Expose responce headers.
*
diff --git a/src/test/java/org/kohsuke/github/GHIssueEventAttributeTest.java b/src/test/java/org/kohsuke/github/GHIssueEventAttributeTest.java
index 58f0587e74..73d04232d6 100644
--- a/src/test/java/org/kohsuke/github/GHIssueEventAttributeTest.java
+++ b/src/test/java/org/kohsuke/github/GHIssueEventAttributeTest.java
@@ -21,6 +21,12 @@
*/
public class GHIssueEventAttributeTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHIssueEventAttributeTest instance
+ */
+ public GHIssueEventAttributeTest() {
+ }
+
private enum Type implements Predicate, Consumer {
milestone(e -> assertThat(e.getMilestone(), notNullValue()), "milestoned", "demilestoned"),
label(e -> assertThat(e.getLabel(), notNullValue()), "labeled", "unlabeled"),
diff --git a/src/test/java/org/kohsuke/github/GHIssueEventTest.java b/src/test/java/org/kohsuke/github/GHIssueEventTest.java
index 6ff51e0a46..5ac4c2b1df 100644
--- a/src/test/java/org/kohsuke/github/GHIssueEventTest.java
+++ b/src/test/java/org/kohsuke/github/GHIssueEventTest.java
@@ -16,6 +16,12 @@
*/
public class GHIssueEventTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHIssueEventTest instance
+ */
+ public GHIssueEventTest() {
+ }
+
/**
* Test events for single issue.
*
diff --git a/src/test/java/org/kohsuke/github/GHIssueTest.java b/src/test/java/org/kohsuke/github/GHIssueTest.java
index a0416f4de7..ab32cf6f0d 100644
--- a/src/test/java/org/kohsuke/github/GHIssueTest.java
+++ b/src/test/java/org/kohsuke/github/GHIssueTest.java
@@ -29,6 +29,12 @@
*/
public class GHIssueTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHIssueTest instance
+ */
+ public GHIssueTest() {
+ }
+
/**
* Clean up.
*
diff --git a/src/test/java/org/kohsuke/github/GHLicenseTest.java b/src/test/java/org/kohsuke/github/GHLicenseTest.java
index fc47e72068..89580309b6 100644
--- a/src/test/java/org/kohsuke/github/GHLicenseTest.java
+++ b/src/test/java/org/kohsuke/github/GHLicenseTest.java
@@ -40,6 +40,12 @@
*/
public class GHLicenseTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHLicenseTest instance
+ */
+ public GHLicenseTest() {
+ }
+
/**
* Basic test to ensure that the list of licenses from {@link GitHub#listLicenses()} is returned.
*
diff --git a/src/test/java/org/kohsuke/github/GHMarketplacePlanTest.java b/src/test/java/org/kohsuke/github/GHMarketplacePlanTest.java
index 90e697ce37..cf5eb9a01f 100644
--- a/src/test/java/org/kohsuke/github/GHMarketplacePlanTest.java
+++ b/src/test/java/org/kohsuke/github/GHMarketplacePlanTest.java
@@ -20,6 +20,12 @@
*/
public class GHMarketplacePlanTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHMarketplacePlanTest instance
+ */
+ public GHMarketplacePlanTest() {
+ }
+
/**
* Gets the git hub builder.
*
diff --git a/src/test/java/org/kohsuke/github/GHMilestoneTest.java b/src/test/java/org/kohsuke/github/GHMilestoneTest.java
index f5da382cc2..78867c4cd3 100644
--- a/src/test/java/org/kohsuke/github/GHMilestoneTest.java
+++ b/src/test/java/org/kohsuke/github/GHMilestoneTest.java
@@ -18,6 +18,12 @@
*/
public class GHMilestoneTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHMilestoneTest instance
+ */
+ public GHMilestoneTest() {
+ }
+
/**
* Clean up.
*
diff --git a/src/test/java/org/kohsuke/github/GHObjectTest.java b/src/test/java/org/kohsuke/github/GHObjectTest.java
index 66388e55ee..04cb3ac365 100644
--- a/src/test/java/org/kohsuke/github/GHObjectTest.java
+++ b/src/test/java/org/kohsuke/github/GHObjectTest.java
@@ -10,6 +10,12 @@
*/
public class GHObjectTest extends org.kohsuke.github.AbstractGitHubWireMockTest {
+ /**
+ * Create default GHObjectTest instance
+ */
+ public GHObjectTest() {
+ }
+
/**
* Test to string.
*
diff --git a/src/test/java/org/kohsuke/github/GHOrganizationTest.java b/src/test/java/org/kohsuke/github/GHOrganizationTest.java
index fcafc97aa9..88e46dfa2e 100644
--- a/src/test/java/org/kohsuke/github/GHOrganizationTest.java
+++ b/src/test/java/org/kohsuke/github/GHOrganizationTest.java
@@ -23,6 +23,12 @@
*/
public class GHOrganizationTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHOrganizationTest instance
+ */
+ public GHOrganizationTest() {
+ }
+
/** The Constant GITHUB_API_TEST. */
public static final String GITHUB_API_TEST = "github-api-test";
diff --git a/src/test/java/org/kohsuke/github/GHPersonTest.java b/src/test/java/org/kohsuke/github/GHPersonTest.java
index efadce263a..199885c01c 100644
--- a/src/test/java/org/kohsuke/github/GHPersonTest.java
+++ b/src/test/java/org/kohsuke/github/GHPersonTest.java
@@ -15,6 +15,12 @@
*/
public class GHPersonTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHPersonTest instance
+ */
+ public GHPersonTest() {
+ }
+
/**
* Test fields for organization.
*
diff --git a/src/test/java/org/kohsuke/github/GHProjectCardTest.java b/src/test/java/org/kohsuke/github/GHProjectCardTest.java
index 7370ac9de5..f3494b8a63 100644
--- a/src/test/java/org/kohsuke/github/GHProjectCardTest.java
+++ b/src/test/java/org/kohsuke/github/GHProjectCardTest.java
@@ -16,6 +16,13 @@
* @author Gunnar Skjold
*/
public class GHProjectCardTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default GHProjectCardTest instance
+ */
+ public GHProjectCardTest() {
+ }
+
private GHOrganization org;
private GHProject project;
private GHProjectColumn column;
diff --git a/src/test/java/org/kohsuke/github/GHProjectColumnTest.java b/src/test/java/org/kohsuke/github/GHProjectColumnTest.java
index afbdaf5bbd..ec09a4e3a2 100644
--- a/src/test/java/org/kohsuke/github/GHProjectColumnTest.java
+++ b/src/test/java/org/kohsuke/github/GHProjectColumnTest.java
@@ -17,6 +17,13 @@
* @author Gunnar Skjold
*/
public class GHProjectColumnTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default GHProjectColumnTest instance
+ */
+ public GHProjectColumnTest() {
+ }
+
private GHProject project;
private GHProjectColumn column;
diff --git a/src/test/java/org/kohsuke/github/GHProjectTest.java b/src/test/java/org/kohsuke/github/GHProjectTest.java
index cf2707e205..45f893e302 100644
--- a/src/test/java/org/kohsuke/github/GHProjectTest.java
+++ b/src/test/java/org/kohsuke/github/GHProjectTest.java
@@ -16,6 +16,13 @@
* @author Gunnar Skjold
*/
public class GHProjectTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default GHProjectTest instance
+ */
+ public GHProjectTest() {
+ }
+
private GHProject project;
/**
diff --git a/src/test/java/org/kohsuke/github/GHPublicKeyTest.java b/src/test/java/org/kohsuke/github/GHPublicKeyTest.java
index 4bd505b168..b4f4a07b8c 100644
--- a/src/test/java/org/kohsuke/github/GHPublicKeyTest.java
+++ b/src/test/java/org/kohsuke/github/GHPublicKeyTest.java
@@ -9,6 +9,12 @@
*/
public class GHPublicKeyTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHPublicKeyTest instance
+ */
+ public GHPublicKeyTest() {
+ }
+
private static final String TMP_KEY_NAME = "Temporary user key";
private static final String WIREMOCK_SSH_PUBLIC_KEY = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDepW2/BSVFM2AfuGGsvi+vjQzC0EBD3R+/7PNEvP0/nvTWxiC/tthfvvCJR6TKrsprCir5tiJFm73gX+K18W0RKYpkyg8H6d1eZu3q/JOiGvoDPeN8Oe9hOGeeexw1WOiz7ESPHzZYXI981evzHAzxxn8zibr2EryopVNsXyoenw==";
diff --git a/src/test/java/org/kohsuke/github/GHPullRequestMockTest.java b/src/test/java/org/kohsuke/github/GHPullRequestMockTest.java
index 852a442cca..45dd9af9f5 100644
--- a/src/test/java/org/kohsuke/github/GHPullRequestMockTest.java
+++ b/src/test/java/org/kohsuke/github/GHPullRequestMockTest.java
@@ -14,6 +14,12 @@
*/
public class GHPullRequestMockTest {
+ /**
+ * Create default GHPullRequestMockTest instance
+ */
+ public GHPullRequestMockTest() {
+ }
+
/**
* Should mock GH pull request.
*
diff --git a/src/test/java/org/kohsuke/github/GHPullRequestTest.java b/src/test/java/org/kohsuke/github/GHPullRequestTest.java
index c1e94336f8..919e1f8b68 100644
--- a/src/test/java/org/kohsuke/github/GHPullRequestTest.java
+++ b/src/test/java/org/kohsuke/github/GHPullRequestTest.java
@@ -34,6 +34,12 @@
*/
public class GHPullRequestTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHPullRequestTest instance
+ */
+ public GHPullRequestTest() {
+ }
+
/**
* Clean up.
*
diff --git a/src/test/java/org/kohsuke/github/GHReleaseTest.java b/src/test/java/org/kohsuke/github/GHReleaseTest.java
index 65fb6a9ba5..7d907c4335 100644
--- a/src/test/java/org/kohsuke/github/GHReleaseTest.java
+++ b/src/test/java/org/kohsuke/github/GHReleaseTest.java
@@ -12,6 +12,12 @@
*/
public class GHReleaseTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHReleaseTest instance
+ */
+ public GHReleaseTest() {
+ }
+
/**
* Test create simple release.
*
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryRuleTest.java b/src/test/java/org/kohsuke/github/GHRepositoryRuleTest.java
index 9f176883ed..084e41e159 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryRuleTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryRuleTest.java
@@ -21,6 +21,13 @@
* Test class for GHRepositoryRule.
*/
public class GHRepositoryRuleTest {
+
+ /**
+ * Create default GHRepositoryRuleTest instance
+ */
+ public GHRepositoryRuleTest() {
+ }
+
/**
* Test to cover the constructor of the Parameters class.
*/
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryStatisticsTest.java b/src/test/java/org/kohsuke/github/GHRepositoryStatisticsTest.java
index 56cf3d954a..b7e32ce0a8 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryStatisticsTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryStatisticsTest.java
@@ -14,6 +14,12 @@
*/
public class GHRepositoryStatisticsTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHRepositoryStatisticsTest instance
+ */
+ public GHRepositoryStatisticsTest() {
+ }
+
/** The max iterations. */
public static int MAX_ITERATIONS = 3;
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryTest.java b/src/test/java/org/kohsuke/github/GHRepositoryTest.java
index d387c93cb6..e37a39aee5 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryTest.java
@@ -32,6 +32,12 @@
*/
public class GHRepositoryTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHRepositoryTest instance
+ */
+ public GHRepositoryTest() {
+ }
+
/**
* Gets the repository.
*
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryTrafficReferralBaseTest.java b/src/test/java/org/kohsuke/github/GHRepositoryTrafficReferralBaseTest.java
index 78cd6d2520..af092d4c79 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryTrafficReferralBaseTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryTrafficReferralBaseTest.java
@@ -11,6 +11,12 @@
*/
public class GHRepositoryTrafficReferralBaseTest {
+ /**
+ * Create default GHRepositoryTrafficReferralBaseTest instance
+ */
+ public GHRepositoryTrafficReferralBaseTest() {
+ }
+
/**
* Test the constructor.
*/
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryTrafficTopReferralPathTest.java b/src/test/java/org/kohsuke/github/GHRepositoryTrafficTopReferralPathTest.java
index b1de0dff72..498de39fb5 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryTrafficTopReferralPathTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryTrafficTopReferralPathTest.java
@@ -11,6 +11,12 @@
*/
public class GHRepositoryTrafficTopReferralPathTest {
+ /**
+ * Create default GHRepositoryTrafficTopReferralPathTest instance
+ */
+ public GHRepositoryTrafficTopReferralPathTest() {
+ }
+
/**
* Test the constructor.
*/
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryTrafficTopReferralSourcesTest.java b/src/test/java/org/kohsuke/github/GHRepositoryTrafficTopReferralSourcesTest.java
index 9125f29080..7051d7f7ad 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryTrafficTopReferralSourcesTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryTrafficTopReferralSourcesTest.java
@@ -11,6 +11,12 @@
*/
public class GHRepositoryTrafficTopReferralSourcesTest {
+ /**
+ * Create default GHRepositoryTrafficTopReferralSourcesTest instance
+ */
+ public GHRepositoryTrafficTopReferralSourcesTest() {
+ }
+
/**
* Test the constructor.
*/
diff --git a/src/test/java/org/kohsuke/github/GHTagTest.java b/src/test/java/org/kohsuke/github/GHTagTest.java
index d4536ed929..48f990f3dc 100644
--- a/src/test/java/org/kohsuke/github/GHTagTest.java
+++ b/src/test/java/org/kohsuke/github/GHTagTest.java
@@ -16,6 +16,12 @@
*/
public class GHTagTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHTagTest instance
+ */
+ public GHTagTest() {
+ }
+
/**
* Clean up tags.
*
diff --git a/src/test/java/org/kohsuke/github/GHTeamBuilderTest.java b/src/test/java/org/kohsuke/github/GHTeamBuilderTest.java
index 60148acd7c..8a2a715173 100644
--- a/src/test/java/org/kohsuke/github/GHTeamBuilderTest.java
+++ b/src/test/java/org/kohsuke/github/GHTeamBuilderTest.java
@@ -12,6 +12,12 @@
*/
public class GHTeamBuilderTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHTeamBuilderTest instance
+ */
+ public GHTeamBuilderTest() {
+ }
+
/**
* Test create child team.
*
diff --git a/src/test/java/org/kohsuke/github/GHTeamTest.java b/src/test/java/org/kohsuke/github/GHTeamTest.java
index 8deba28c2b..1bd3ea6bae 100644
--- a/src/test/java/org/kohsuke/github/GHTeamTest.java
+++ b/src/test/java/org/kohsuke/github/GHTeamTest.java
@@ -22,6 +22,12 @@
*/
public class GHTeamTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHTeamTest instance
+ */
+ public GHTeamTest() {
+ }
+
/**
* Test set description.
*
diff --git a/src/test/java/org/kohsuke/github/GHTreeBuilderTest.java b/src/test/java/org/kohsuke/github/GHTreeBuilderTest.java
index 9071477889..c22332c72f 100644
--- a/src/test/java/org/kohsuke/github/GHTreeBuilderTest.java
+++ b/src/test/java/org/kohsuke/github/GHTreeBuilderTest.java
@@ -16,6 +16,13 @@
* The Class GHTreeBuilderTest.
*/
public class GHTreeBuilderTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default GHTreeBuilderTest instance
+ */
+ public GHTreeBuilderTest() {
+ }
+
private static String REPO_NAME = "hub4j-test-org/GHTreeBuilderTest";
private static String PATH_SCRIPT = "app/run.sh";
diff --git a/src/test/java/org/kohsuke/github/GHUserTest.java b/src/test/java/org/kohsuke/github/GHUserTest.java
index 5e67bf6451..633cf22f83 100644
--- a/src/test/java/org/kohsuke/github/GHUserTest.java
+++ b/src/test/java/org/kohsuke/github/GHUserTest.java
@@ -20,6 +20,12 @@
*/
public class GHUserTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHUserTest instance
+ */
+ public GHUserTest() {
+ }
+
/**
* Checks if is member of.
*
diff --git a/src/test/java/org/kohsuke/github/GHVerificationReasonTest.java b/src/test/java/org/kohsuke/github/GHVerificationReasonTest.java
index 42b3292c72..3573fd3860 100644
--- a/src/test/java/org/kohsuke/github/GHVerificationReasonTest.java
+++ b/src/test/java/org/kohsuke/github/GHVerificationReasonTest.java
@@ -12,6 +12,12 @@
*/
public class GHVerificationReasonTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHVerificationReasonTest instance
+ */
+ public GHVerificationReasonTest() {
+ }
+
/**
* Test expired key.
*
diff --git a/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java b/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java
index cda06a9ebf..d15f506672 100644
--- a/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java
+++ b/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java
@@ -30,6 +30,12 @@
*/
public class GHWorkflowRunTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHWorkflowRunTest instance
+ */
+ public GHWorkflowRunTest() {
+ }
+
private static final String REPO_NAME = "hub4j-test-org/GHWorkflowRunTest";
private static final String MAIN_BRANCH = "main";
private static final String SECOND_BRANCH = "second-branch";
diff --git a/src/test/java/org/kohsuke/github/GHWorkflowTest.java b/src/test/java/org/kohsuke/github/GHWorkflowTest.java
index 63b2aec5c8..33e3682bbd 100644
--- a/src/test/java/org/kohsuke/github/GHWorkflowTest.java
+++ b/src/test/java/org/kohsuke/github/GHWorkflowTest.java
@@ -21,6 +21,12 @@
*/
public class GHWorkflowTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GHWorkflowTest instance
+ */
+ public GHWorkflowTest() {
+ }
+
private static String REPO_NAME = "hub4j-test-org/GHWorkflowTest";
private GHRepository repo;
diff --git a/src/test/java/org/kohsuke/github/GitHubStaticTest.java b/src/test/java/org/kohsuke/github/GitHubStaticTest.java
index 16ac75b524..a6696be796 100644
--- a/src/test/java/org/kohsuke/github/GitHubStaticTest.java
+++ b/src/test/java/org/kohsuke/github/GitHubStaticTest.java
@@ -30,6 +30,12 @@
*/
public class GitHubStaticTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GitHubStaticTest instance
+ */
+ public GitHubStaticTest() {
+ }
+
/**
* Test parse URL.
*
diff --git a/src/test/java/org/kohsuke/github/GitHubTest.java b/src/test/java/org/kohsuke/github/GitHubTest.java
index fc2c76c21f..193652f84b 100644
--- a/src/test/java/org/kohsuke/github/GitHubTest.java
+++ b/src/test/java/org/kohsuke/github/GitHubTest.java
@@ -17,6 +17,12 @@
*/
public class GitHubTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default GitHubTest instance
+ */
+ public GitHubTest() {
+ }
+
/**
* List users.
*
diff --git a/src/test/java/org/kohsuke/github/junit/GitHubWireMockRule.java b/src/test/java/org/kohsuke/github/GitHubWireMockRule.java
similarity index 99%
rename from src/test/java/org/kohsuke/github/junit/GitHubWireMockRule.java
rename to src/test/java/org/kohsuke/github/GitHubWireMockRule.java
index 980a997e69..bd4224f9dc 100644
--- a/src/test/java/org/kohsuke/github/junit/GitHubWireMockRule.java
+++ b/src/test/java/org/kohsuke/github/GitHubWireMockRule.java
@@ -1,4 +1,4 @@
-package org.kohsuke.github.junit;
+package org.kohsuke.github;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
@@ -31,7 +31,6 @@
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static com.github.tomakehurst.wiremock.common.Gzip.unGzipToString;
-// TODO: Auto-generated Javadoc
/**
* The standard WireMockRule eagerly initializes a WireMockServer. This version suptakes a laze approach allowing us to
* automatically isolate snapshots for each method.
diff --git a/src/test/java/org/kohsuke/github/Github2faTest.java b/src/test/java/org/kohsuke/github/Github2faTest.java
index a76661a8d0..6aeec0cd7d 100644
--- a/src/test/java/org/kohsuke/github/Github2faTest.java
+++ b/src/test/java/org/kohsuke/github/Github2faTest.java
@@ -16,6 +16,12 @@
*/
public class Github2faTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default Github2faTest instance
+ */
+ public Github2faTest() {
+ }
+
/**
* Test 2 fa token.
*
diff --git a/src/test/java/org/kohsuke/github/LifecycleTest.java b/src/test/java/org/kohsuke/github/LifecycleTest.java
index 2651346f78..6a59e0e4fc 100644
--- a/src/test/java/org/kohsuke/github/LifecycleTest.java
+++ b/src/test/java/org/kohsuke/github/LifecycleTest.java
@@ -18,6 +18,12 @@
*/
public class LifecycleTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default LifecycleTest instance
+ */
+ public LifecycleTest() {
+ }
+
/**
* Test create repository.
*
diff --git a/src/test/java/org/kohsuke/github/RepositoryTrafficTest.java b/src/test/java/org/kohsuke/github/RepositoryTrafficTest.java
index 416c510710..2fd49958b6 100644
--- a/src/test/java/org/kohsuke/github/RepositoryTrafficTest.java
+++ b/src/test/java/org/kohsuke/github/RepositoryTrafficTest.java
@@ -14,6 +14,13 @@
* The Class RepositoryTrafficTest.
*/
public class RepositoryTrafficTest extends AbstractGitHubWireMockTest {
+
+ /**
+ * Create default RepositoryTrafficTest instance
+ */
+ public RepositoryTrafficTest() {
+ }
+
final private String repositoryName = "github-api";
@SuppressWarnings("unchecked")
diff --git a/src/test/java/org/kohsuke/github/junit/WireMockMultiServerRule.java b/src/test/java/org/kohsuke/github/WireMockMultiServerRule.java
similarity index 99%
rename from src/test/java/org/kohsuke/github/junit/WireMockMultiServerRule.java
rename to src/test/java/org/kohsuke/github/WireMockMultiServerRule.java
index 3d99281cf2..0df77f446f 100644
--- a/src/test/java/org/kohsuke/github/junit/WireMockMultiServerRule.java
+++ b/src/test/java/org/kohsuke/github/WireMockMultiServerRule.java
@@ -1,4 +1,4 @@
-package org.kohsuke.github.junit;
+package org.kohsuke.github;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.VerificationException;
@@ -18,7 +18,6 @@
import java.util.List;
import java.util.Map;
-// TODO: Auto-generated Javadoc
/**
* The standard WireMockRule eagerly initializes a WireMockServer. This version supports multiple servers in one rule
* and takes a lazy approach to intitialization allowing us to isolate files snapshots for each method.
diff --git a/src/test/java/org/kohsuke/github/junit/WireMockRule.java b/src/test/java/org/kohsuke/github/WireMockRule.java
similarity index 99%
rename from src/test/java/org/kohsuke/github/junit/WireMockRule.java
rename to src/test/java/org/kohsuke/github/WireMockRule.java
index b7e89a6cd4..66f2baf6dc 100644
--- a/src/test/java/org/kohsuke/github/junit/WireMockRule.java
+++ b/src/test/java/org/kohsuke/github/WireMockRule.java
@@ -1,4 +1,4 @@
-package org.kohsuke.github.junit;
+package org.kohsuke.github;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.admin.model.*;
@@ -34,7 +34,6 @@
import java.util.List;
import java.util.UUID;
-// TODO: Auto-generated Javadoc
/**
* The Class WireMockRule.
*
diff --git a/src/test/java/org/kohsuke/github/junit/WireMockRuleConfiguration.java b/src/test/java/org/kohsuke/github/WireMockRuleConfiguration.java
similarity index 99%
rename from src/test/java/org/kohsuke/github/junit/WireMockRuleConfiguration.java
rename to src/test/java/org/kohsuke/github/WireMockRuleConfiguration.java
index 1960061c04..c933f885f4 100644
--- a/src/test/java/org/kohsuke/github/junit/WireMockRuleConfiguration.java
+++ b/src/test/java/org/kohsuke/github/WireMockRuleConfiguration.java
@@ -1,4 +1,4 @@
-package org.kohsuke.github.junit;
+package org.kohsuke.github;
import com.github.tomakehurst.wiremock.common.*;
import com.github.tomakehurst.wiremock.core.MappingsSaver;
@@ -22,7 +22,6 @@
import java.util.List;
import java.util.Map;
-// TODO: Auto-generated Javadoc
/**
* The Class WireMockRuleConfiguration.
*/
diff --git a/src/test/java/org/kohsuke/github/WireMockStatusReporterTest.java b/src/test/java/org/kohsuke/github/WireMockStatusReporterTest.java
index 07eab6a2f0..eb1a5e143a 100644
--- a/src/test/java/org/kohsuke/github/WireMockStatusReporterTest.java
+++ b/src/test/java/org/kohsuke/github/WireMockStatusReporterTest.java
@@ -19,6 +19,12 @@
*/
public class WireMockStatusReporterTest extends AbstractGitHubWireMockTest {
+ /**
+ * Create default WireMockStatusReporterTest instance
+ */
+ public WireMockStatusReporterTest() {
+ }
+
/**
* User when proxying auth correctly configured.
*
diff --git a/src/test/java/org/kohsuke/github/extras/authorization/JWTTokenProviderTest.java b/src/test/java/org/kohsuke/github/extras/authorization/JWTTokenProviderTest.java
index 793da64bce..4b98cc18c5 100644
--- a/src/test/java/org/kohsuke/github/extras/authorization/JWTTokenProviderTest.java
+++ b/src/test/java/org/kohsuke/github/extras/authorization/JWTTokenProviderTest.java
@@ -32,6 +32,12 @@
*/
public class JWTTokenProviderTest extends AbstractGHAppInstallationTest {
+ /**
+ * Create default JWTTokenProviderTest instance
+ */
+ public JWTTokenProviderTest() {
+ }
+
private static String TEST_APP_ID_2 = "83009";
private static String PRIVATE_KEY_FILE_APP_2 = "/ghapi-test-app-2.private-key.pem";
diff --git a/src/test/java/org/kohsuke/github/internal/EnumUtilsTest.java b/src/test/java/org/kohsuke/github/internal/EnumUtilsTest.java
index b7bab96ec9..5169e947a5 100644
--- a/src/test/java/org/kohsuke/github/internal/EnumUtilsTest.java
+++ b/src/test/java/org/kohsuke/github/internal/EnumUtilsTest.java
@@ -11,6 +11,12 @@
*/
public class EnumUtilsTest {
+ /**
+ * Create default EnumUtilsTest instance
+ */
+ public EnumUtilsTest() {
+ }
+
/**
* Test get enum.
*/
diff --git a/src/test/resources/META-INF/spring/aot.factories b/src/test/resources/META-INF/spring/aot.factories
index f81c736a2b..bd66387017 100644
--- a/src/test/resources/META-INF/spring/aot.factories
+++ b/src/test/resources/META-INF/spring/aot.factories
@@ -1 +1 @@
-org.springframework.aot.hint.RuntimeHintsRegistrar=org.kohsuke.aot.AotTestRuntimeHints
\ No newline at end of file
+org.springframework.aot.hint.RuntimeHintsRegistrar=org.kohsuke.github.AotTestRuntimeHints
\ No newline at end of file
diff --git a/src/test/resources/no-reflect-and-serialization-list b/src/test/resources/no-reflect-and-serialization-list
index 4da5b76fe7..d786dc0cfa 100644
--- a/src/test/resources/no-reflect-and-serialization-list
+++ b/src/test/resources/no-reflect-and-serialization-list
@@ -26,6 +26,9 @@ org.kohsuke.github.GitHubConnectorResponseErrorHandler
org.kohsuke.github.GitHubPageIterator
org.kohsuke.github.GitHubRateLimitChecker
org.kohsuke.github.GitHubRateLimitHandler
+org.kohsuke.github.GitHubRateLimitHandler$1
+org.kohsuke.github.GitHubRateLimitHandler$2
+org.kohsuke.github.GitHubRequestBuilderDone
org.kohsuke.github.HttpConnector
org.kohsuke.github.HttpException
org.kohsuke.github.PagedIterator
diff --git a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests/mappings/2-r_h_t_fail.json b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests/mappings/2-r_h_t_fail.json
index d1127227f9..39bc810022 100644
--- a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests/mappings/2-r_h_t_fail.json
+++ b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests/mappings/2-r_h_t_fail.json
@@ -11,17 +11,14 @@
}
},
"response": {
- "status": 403,
+ "status": 429,
"body": "{\"message\":\"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\"}",
"headers": {
"Date": "{{now timezone='GMT' format='EEE, dd MMM yyyy HH:mm:ss z'}}",
"Content-Type": "application/json; charset=utf-8",
"Server": "GitHub.com",
- "Status": "403 Forbidden",
- "gh-limited-by": "search-elapsed-time-shared-grouped",
- "X-RateLimit-Limit": "5000",
- "X-RateLimit-Remaining": "4000",
- "X-RateLimit-Reset": "{{testStartDate offset='3 seconds' format='unix'}}",
+ "Status": "429 Too Many Requests",
+ "Retry-After": "8",
"Cache-Control": "private, max-age=60, s-maxage=60",
"Vary": [
"Accept, Authorization, Cookie, X-GitHub-OTP",
@@ -45,8 +42,8 @@
},
"uuid": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
"persistent": true,
- "scenarioName": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests",
+ "scenarioName": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits1",
"requiredScenarioState": "Started",
- "newScenarioState": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests-2",
+ "newScenarioState": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits1-2",
"insertionIndex": 2
}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests/mappings/3-r_h_t_fail.json b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests/mappings/3-r_h_t_fail.json
index a2dc66b59d..643ed2e9db 100644
--- a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests/mappings/3-r_h_t_fail.json
+++ b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests/mappings/3-r_h_t_fail.json
@@ -1,5 +1,5 @@
{
- "id": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
+ "id": "574da117-6845-46d8-b2c1-4415546ca670",
"name": "repos_hub4j-test-org_temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests",
"request": {
"url": "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests",
@@ -11,21 +11,23 @@
}
},
"response": {
- "status": 429,
- "body": "{\"message\":\"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\"}",
+ "status": 200,
+ "bodyFileName": "3-r_h_t_fail.json",
"headers": {
"Date": "{{now timezone='GMT' format='EEE, dd MMM yyyy HH:mm:ss z'}}",
"Content-Type": "application/json; charset=utf-8",
"Server": "GitHub.com",
- "Status": "429 Too Many Requests",
- "Retry-After": "42",
+ "Status": "200 OK",
+ "X-RateLimit-Limit": "5000",
+ "X-RateLimit-Remaining": "4922",
+ "X-RateLimit-Reset": "{{testStartDate offset='3 seconds' format='unix'}}",
"Cache-Control": "private, max-age=60, s-maxage=60",
"Vary": [
"Accept, Authorization, Cookie, X-GitHub-OTP",
"Accept-Encoding"
],
- "ETag": "W/\"7ff3c96399f7ddf6129622d675ca9935\"",
- "Last-Modified": "Thu, 06 Feb 2020 18:33:37 GMT",
+ "ETag": "W/\"858224998ac7d1fd6dcd43f73d375297\"",
+ "Last-Modified": "Thu, 06 Feb 2020 18:33:43 GMT",
"X-OAuth-Scopes": "admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, gist, notifications, repo, user, write:discussion",
"X-Accepted-OAuth-Scopes": "repo",
"X-GitHub-Media-Type": "unknown, github.v3",
@@ -37,13 +39,12 @@
"X-XSS-Protection": "1; mode=block",
"Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
"Content-Security-Policy": "default-src 'none'",
- "X-GitHub-Request-Id": "CC37:2605:3F982:4E949:5E3C5BFC"
+ "X-GitHub-Request-Id": "CC37:2605:3FADC:4EA8C:5E3C5C02"
}
},
- "uuid": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
+ "uuid": "574da117-6845-46d8-b2c1-4415546ca670",
"persistent": true,
- "scenarioName": "scenario-4-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests",
- "requiredScenarioState": "Started",
- "newScenarioState": "scenario-4-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests-2",
- "insertionIndex": 2
+ "scenarioName": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits1",
+ "requiredScenarioState": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits1-2",
+ "insertionIndex": 3
}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After/mappings/2-r_h_t_fail.json b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After/mappings/2-r_h_t_fail.json
index 41af8b707d..4d22b7d4bf 100644
--- a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After/mappings/2-r_h_t_fail.json
+++ b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After/mappings/2-r_h_t_fail.json
@@ -11,17 +11,14 @@
}
},
"response": {
- "status": 403,
+ "status": 429,
"body": "{\"message\":\"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\"}",
"headers": {
"Date": "{{now timezone='GMT' format='EEE, dd MMM yyyy HH:mm:ss z'}}",
"Content-Type": "application/json; charset=utf-8",
"Server": "GitHub.com",
- "Status": "403 Forbidden",
- "gh-limited-by": "search-elapsed-time-shared-grouped",
- "X-RateLimit-Limit": "5000",
- "X-RateLimit-Remaining": "4000",
- "X-RateLimit-Reset": "{{testStartDate offset='3 seconds' format='unix'}}",
+ "Status": "429 Too Many Requests",
+ "Retry-After": "{{now offset='8 seconds' timezone='GMT' format='EEE, dd MMM yyyy HH:mm:ss z'}}",
"Cache-Control": "private, max-age=60, s-maxage=60",
"Vary": [
"Accept, Authorization, Cookie, X-GitHub-OTP",
@@ -45,8 +42,8 @@
},
"uuid": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
"persistent": true,
- "scenarioName": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After",
+ "scenarioName": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits2",
"requiredScenarioState": "Started",
- "newScenarioState": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After-2",
+ "newScenarioState": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits2-2",
"insertionIndex": 2
}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After/mappings/3-r_h_t_fail.json b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After/mappings/3-r_h_t_fail.json
index a29ef6ac2d..f433290eab 100644
--- a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After/mappings/3-r_h_t_fail.json
+++ b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After/mappings/3-r_h_t_fail.json
@@ -1,5 +1,5 @@
{
- "id": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
+ "id": "574da117-6845-46d8-b2c1-4415546ca670",
"name": "repos_hub4j-test-org_temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After",
"request": {
"url": "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After",
@@ -11,21 +11,23 @@
}
},
"response": {
- "status": 429,
- "body": "{\"message\":\"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\"}",
+ "status": 200,
+ "bodyFileName": "3-r_h_t_fail.json",
"headers": {
"Date": "{{now timezone='GMT' format='EEE, dd MMM yyyy HH:mm:ss z'}}",
"Content-Type": "application/json; charset=utf-8",
"Server": "GitHub.com",
- "Status": "429 Too Many Requests",
- "Retry-After": "Mon, 21 Oct 2115 07:28:00 GMT",
+ "Status": "200 OK",
+ "X-RateLimit-Limit": "5000",
+ "X-RateLimit-Remaining": "4922",
+ "X-RateLimit-Reset": "{{testStartDate offset='3 seconds' format='unix'}}",
"Cache-Control": "private, max-age=60, s-maxage=60",
"Vary": [
"Accept, Authorization, Cookie, X-GitHub-OTP",
"Accept-Encoding"
],
- "ETag": "W/\"7ff3c96399f7ddf6129622d675ca9935\"",
- "Last-Modified": "Thu, 06 Feb 2020 18:33:37 GMT",
+ "ETag": "W/\"858224998ac7d1fd6dcd43f73d375297\"",
+ "Last-Modified": "Thu, 06 Feb 2020 18:33:43 GMT",
"X-OAuth-Scopes": "admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, gist, notifications, repo, user, write:discussion",
"X-Accepted-OAuth-Scopes": "repo",
"X-GitHub-Media-Type": "unknown, github.v3",
@@ -37,13 +39,12 @@
"X-XSS-Protection": "1; mode=block",
"Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
"Content-Security-Policy": "default-src 'none'",
- "X-GitHub-Request-Id": "CC37:2605:3F982:4E949:5E3C5BFC"
+ "X-GitHub-Request-Id": "CC37:2605:3FADC:4EA8C:5E3C5C02"
}
},
- "uuid": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
+ "uuid": "574da117-6845-46d8-b2c1-4415546ca670",
"persistent": true,
- "scenarioName": "scenario-4-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After",
- "requiredScenarioState": "Started",
- "newScenarioState": "scenario-4-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_Date_Retry_After-2",
- "insertionIndex": 2
+ "scenarioName": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits2",
+ "requiredScenarioState": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits2-2",
+ "insertionIndex": 3
}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After/mappings/2-r_h_t_fail.json b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After/mappings/2-r_h_t_fail.json
new file mode 100644
index 0000000000..f5e2fd8e29
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After/mappings/2-r_h_t_fail.json
@@ -0,0 +1,49 @@
+{
+ "id": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
+ "name": "repos_hub4j-test-org_temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After",
+ "request": {
+ "url": "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 429,
+ "body": "{\"message\":\"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\"}",
+ "headers": {
+ "Date": "{{now timezone='GMT' format='EEE, dd MMM yyyy HH:mm:ss z'}}",
+ "Content-Type": "application/json; charset=utf-8",
+ "Server": "GitHub.com",
+ "Status": "429 Too Many Requests",
+ "gh-limited-by": "search-elapsed-time-shared-grouped",
+ "Cache-Control": "private, max-age=60, s-maxage=60",
+ "Vary": [
+ "Accept, Authorization, Cookie, X-GitHub-OTP",
+ "Accept-Encoding"
+ ],
+ "ETag": "W/\"7ff3c96399f7ddf6129622d675ca9935\"",
+ "Last-Modified": "Thu, 06 Feb 2020 18:33:37 GMT",
+ "X-OAuth-Scopes": "admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, gist, notifications, repo, user, write:discussion",
+ "X-Accepted-OAuth-Scopes": "repo",
+ "X-GitHub-Media-Type": "unknown, github.v3",
+ "Access-Control-Expose-Headers": "ETag, Link, Location, gh-limited-by, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type",
+ "Access-Control-Allow-Origin": "*",
+ "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload",
+ "X-Frame-Options": "deny",
+ "X-Content-Type-Options": "nosniff",
+ "X-XSS-Protection": "1; mode=block",
+ "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
+ "Content-Security-Policy": "default-src 'none'",
+ "X-GitHub-Request-Id": "CC37:2605:3F982:4E949:5E3C5BFC"
+ }
+ },
+ "uuid": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
+ "persistent": true,
+ "scenarioName": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits3",
+ "requiredScenarioState": "Started",
+ "newScenarioState": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits3-2",
+ "insertionIndex": 2
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After/mappings/3-r_h_t_fail.json b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After/mappings/3-r_h_t_fail.json
index d6522df8e3..9d7f608e1a 100644
--- a/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After/mappings/3-r_h_t_fail.json
+++ b/src/test/resources/org/kohsuke/github/AbuseLimitHandlerTest/wiremock/testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After/mappings/3-r_h_t_fail.json
@@ -1,5 +1,5 @@
{
- "id": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
+ "id": "574da117-6845-46d8-b2c1-4415546ca670",
"name": "repos_hub4j-test-org_temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After",
"request": {
"url": "/repos/hub4j-test-org/temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After",
@@ -11,21 +11,23 @@
}
},
"response": {
- "status": 429,
- "body": "{\"message\":\"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\"}",
+ "status": 200,
+ "bodyFileName": "3-r_h_t_fail.json",
"headers": {
"Date": "{{now timezone='GMT' format='EEE, dd MMM yyyy HH:mm:ss z'}}",
"Content-Type": "application/json; charset=utf-8",
"Server": "GitHub.com",
- "Status": "429 Too Many Requests",
- "gh-limited-by": "search-elapsed-time-shared-grouped",
+ "Status": "200 OK",
+ "X-RateLimit-Limit": "5000",
+ "X-RateLimit-Remaining": "4922",
+ "X-RateLimit-Reset": "{{testStartDate offset='3 seconds' format='unix'}}",
"Cache-Control": "private, max-age=60, s-maxage=60",
"Vary": [
"Accept, Authorization, Cookie, X-GitHub-OTP",
"Accept-Encoding"
],
- "ETag": "W/\"7ff3c96399f7ddf6129622d675ca9935\"",
- "Last-Modified": "Thu, 06 Feb 2020 18:33:37 GMT",
+ "ETag": "W/\"858224998ac7d1fd6dcd43f73d375297\"",
+ "Last-Modified": "Thu, 06 Feb 2020 18:33:43 GMT",
"X-OAuth-Scopes": "admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, gist, notifications, repo, user, write:discussion",
"X-Accepted-OAuth-Scopes": "repo",
"X-GitHub-Media-Type": "unknown, github.v3",
@@ -37,13 +39,12 @@
"X-XSS-Protection": "1; mode=block",
"Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
"Content-Security-Policy": "default-src 'none'",
- "X-GitHub-Request-Id": "CC37:2605:3F982:4E949:5E3C5BFC"
+ "X-GitHub-Request-Id": "CC37:2605:3FADC:4EA8C:5E3C5C02"
}
},
- "uuid": "79fb1092-8bf3-4274-bc8e-ca126c9d9261",
+ "uuid": "574da117-6845-46d8-b2c1-4415546ca670",
"persistent": true,
- "scenarioName": "scenario-4-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After",
- "requiredScenarioState": "Started",
- "newScenarioState": "scenario-4-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits_Too_Many_Requests_No_Retry_After-2",
- "insertionIndex": 2
+ "scenarioName": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits3",
+ "requiredScenarioState": "scenario-1-repos-hub4j-test-org-temp-testHandler_Wait_Secondary_Limits3-2",
+ "insertionIndex": 3
}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/__files/1-user.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/__files/1-user.json
new file mode 100644
index 0000000000..9e0ff60437
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/__files/1-user.json
@@ -0,0 +1,47 @@
+{
+ "login": "bitwiseman",
+ "id": 1958953,
+ "node_id": "MDQ6VXNlcjE5NTg5NTM=",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/bitwiseman",
+ "html_url": "https://github.com/bitwiseman",
+ "followers_url": "https://api.github.com/users/bitwiseman/followers",
+ "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}",
+ "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions",
+ "organizations_url": "https://api.github.com/users/bitwiseman/orgs",
+ "repos_url": "https://api.github.com/users/bitwiseman/repos",
+ "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/bitwiseman/received_events",
+ "type": "User",
+ "site_admin": false,
+ "name": "Liam Newman",
+ "company": null,
+ "blog": "",
+ "location": "Seattle, WA, USA",
+ "email": "bitwiseman@gmail.com",
+ "hireable": null,
+ "bio": null,
+ "twitter_username": "bitwiseman",
+ "notification_email": "bitwiseman@gmail.com",
+ "public_repos": 212,
+ "public_gists": 8,
+ "followers": 258,
+ "following": 12,
+ "created_at": "2012-07-11T20:38:33Z",
+ "updated_at": "2024-07-11T16:46:55Z",
+ "private_gists": 19,
+ "total_private_repos": 3,
+ "owned_private_repos": 3,
+ "disk_usage": 34051,
+ "collaborators": 4,
+ "two_factor_authentication": true,
+ "plan": {
+ "name": "free",
+ "space": 976562499,
+ "collaborators": 0,
+ "private_repos": 10000
+ }
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/__files/2-user_emails.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/__files/2-user_emails.json
new file mode 100644
index 0000000000..b5e4d9f5bc
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/__files/2-user_emails.json
@@ -0,0 +1,14 @@
+[
+ {
+ "email": "bitwiseman@gmail.com",
+ "primary": true,
+ "verified": true,
+ "visibility": "public"
+ },
+ {
+ "email": "bitwiseman@users.noreply.github.com",
+ "primary": false,
+ "verified": true,
+ "visibility": null
+ }
+]
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/mappings/1-user.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/mappings/1-user.json
new file mode 100644
index 0000000000..dedf690872
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/mappings/1-user.json
@@ -0,0 +1,48 @@
+{
+ "id": "ccd6f98f-7d6f-44a8-87ab-375e3a49d8f2",
+ "name": "user",
+ "request": {
+ "url": "/user",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "1-user.json",
+ "headers": {
+ "Date": "Tue, 17 Sep 2024 18:41:52 GMT",
+ "Content-Type": "application/json; charset=utf-8",
+ "Cache-Control": "private, max-age=60, s-maxage=60",
+ "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With",
+ "ETag": "W/\"a27242a466c3df86c7421f5da77e7af0282d7b11679db48547af0b315d2eb3c1\"",
+ "Last-Modified": "Thu, 11 Jul 2024 16:46:55 GMT",
+ "X-OAuth-Scopes": "read:user, repo, user:email",
+ "X-Accepted-OAuth-Scopes": "",
+ "github-authentication-token-expiration": "2024-10-17 18:38:10 UTC",
+ "X-GitHub-Media-Type": "github.v3; format=json",
+ "x-github-api-version-selected": "2022-11-28",
+ "X-RateLimit-Limit": "5000",
+ "X-RateLimit-Remaining": "4991",
+ "X-RateLimit-Reset": "1726601960",
+ "X-RateLimit-Used": "9",
+ "X-RateLimit-Resource": "core",
+ "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset",
+ "Access-Control-Allow-Origin": "*",
+ "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload",
+ "X-Frame-Options": "deny",
+ "X-Content-Type-Options": "nosniff",
+ "X-XSS-Protection": "0",
+ "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
+ "Content-Security-Policy": "default-src 'none'",
+ "Server": "github.com",
+ "X-GitHub-Request-Id": "6A1F:A6CDA:12AE1BE:12C74DE:66E9CD70"
+ }
+ },
+ "uuid": "ccd6f98f-7d6f-44a8-87ab-375e3a49d8f2",
+ "persistent": true,
+ "insertionIndex": 1
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/mappings/2-user_emails.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/mappings/2-user_emails.json
new file mode 100644
index 0000000000..067a6a1d93
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testGetEmails/mappings/2-user_emails.json
@@ -0,0 +1,47 @@
+{
+ "id": "f17d4d94-f19c-425e-8133-f9f3ad2bafea",
+ "name": "user_emails",
+ "request": {
+ "url": "/user/emails",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "2-user_emails.json",
+ "headers": {
+ "Date": "Tue, 17 Sep 2024 18:41:52 GMT",
+ "Content-Type": "application/json; charset=utf-8",
+ "Cache-Control": "private, max-age=60, s-maxage=60",
+ "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With",
+ "ETag": "W/\"6e974566422ee9f8351add9d3450581b14045944d67d5b0d45d93816f7526d77\"",
+ "X-OAuth-Scopes": "read:user, repo, user:email",
+ "X-Accepted-OAuth-Scopes": "user, user:email",
+ "github-authentication-token-expiration": "2024-10-17 18:38:10 UTC",
+ "X-GitHub-Media-Type": "github.v3; format=json",
+ "x-github-api-version-selected": "2022-11-28",
+ "X-RateLimit-Limit": "5000",
+ "X-RateLimit-Remaining": "4989",
+ "X-RateLimit-Reset": "1726601960",
+ "X-RateLimit-Used": "11",
+ "X-RateLimit-Resource": "core",
+ "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset",
+ "Access-Control-Allow-Origin": "*",
+ "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload",
+ "X-Frame-Options": "deny",
+ "X-Content-Type-Options": "nosniff",
+ "X-XSS-Protection": "0",
+ "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
+ "Content-Security-Policy": "default-src 'none'",
+ "Server": "github.com",
+ "X-GitHub-Request-Id": "9EA1:32201C:118116E:119A333:66E9CD70"
+ }
+ },
+ "uuid": "f17d4d94-f19c-425e-8133-f9f3ad2bafea",
+ "persistent": true,
+ "insertionIndex": 2
+}
\ No newline at end of file
diff --git a/src/test/resources/slow-or-flaky-tests.txt b/src/test/resources/slow-or-flaky-tests.txt
index b9c6fbbdc2..df6827bec0 100644
--- a/src/test/resources/slow-or-flaky-tests.txt
+++ b/src/test/resources/slow-or-flaky-tests.txt
@@ -1,4 +1,5 @@
**/extras/**
+**/AbuseLimitHandlerTest
**/GHRateLimitTest
**/GHPullRequestTest
**/RequesterRetryTest