mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-11 00:11:25 +00:00
Compare commits
128 Commits
github-api
...
github-api
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
38b1e367b1 | ||
|
|
3cddffa37f | ||
|
|
ea7a1a7175 | ||
|
|
36b5601588 | ||
|
|
c5ee07add4 | ||
|
|
279df00404 | ||
|
|
bfd4b17fa0 | ||
|
|
5fe2817164 | ||
|
|
b337bb39bc | ||
|
|
65ae41c5f1 | ||
|
|
796c644c4a | ||
|
|
bfd9023a27 | ||
|
|
c9cdf5d03e | ||
|
|
f60bb41ad9 | ||
|
|
c333903b4a | ||
|
|
dd55e8a22c | ||
|
|
3ab9381d0a | ||
|
|
58f1fe0671 | ||
|
|
82b9c05d0f | ||
|
|
7c9397f7f6 | ||
|
|
6214b6a3ff | ||
|
|
883c8cc4c8 | ||
|
|
8d47c72913 | ||
|
|
89a6664e45 | ||
|
|
30d792d6e1 | ||
|
|
3745bf3157 | ||
|
|
a7fda3e50d | ||
|
|
7f07204fef | ||
|
|
8b51a44b7c | ||
|
|
c499c73dcc | ||
|
|
c01f3f5e8a | ||
|
|
2aef35655f | ||
|
|
7ddf1f5830 | ||
|
|
b2c513ea42 | ||
|
|
4c30f94355 | ||
|
|
e911e86c4c | ||
|
|
ca640b3f64 | ||
|
|
b4c4a05f3b | ||
|
|
fd3c36a259 | ||
|
|
d8274ac2d4 | ||
|
|
9c7479f953 | ||
|
|
b5dc3c4366 | ||
|
|
26b8082155 | ||
|
|
418df15f7b | ||
|
|
31ed0125b8 | ||
|
|
494318b879 | ||
|
|
f554ddc372 | ||
|
|
03de12c221 | ||
|
|
6c41f22b57 | ||
|
|
7ae96388e3 | ||
|
|
e8b4de00d2 | ||
|
|
cd7963b30d | ||
|
|
0dc44cffcf | ||
|
|
7a650132c5 | ||
|
|
c7fb390c38 | ||
|
|
572ff9df19 | ||
|
|
b715e0cef7 | ||
|
|
36ab2a889f | ||
|
|
a78d2f28d7 | ||
|
|
7d5a39ed89 | ||
|
|
772272ff36 | ||
|
|
2ab4eafee9 | ||
|
|
b15e0d4c45 | ||
|
|
b8180314d8 | ||
|
|
fcb8d03a0f | ||
|
|
09ec89bc2e | ||
|
|
863ad0f486 | ||
|
|
79a1bb3571 | ||
|
|
9f1d7323c7 | ||
|
|
64a82f4785 | ||
|
|
f37e4bd76e | ||
|
|
98ef2cc640 | ||
|
|
134222fd69 | ||
|
|
0cb2371517 | ||
|
|
b7de4359fd | ||
|
|
2607d6a107 | ||
|
|
db46b1ce13 | ||
|
|
d7b08d5207 | ||
|
|
29fbba832c | ||
|
|
fd621a442a | ||
|
|
a1a73568ae | ||
|
|
3daccbd6ec | ||
|
|
293deadb48 | ||
|
|
452b56c47b | ||
|
|
5cb6bfa633 | ||
|
|
0515cee6f3 | ||
|
|
4247112539 | ||
|
|
8d3374f574 | ||
|
|
26833e5f7c | ||
|
|
6752b46f67 | ||
|
|
b9429ffcaa | ||
|
|
10827c7e21 | ||
|
|
23cb4a34a4 | ||
|
|
adfd09565f | ||
|
|
78b9ff49d4 | ||
|
|
fca425d25e | ||
|
|
1a4238156c | ||
|
|
f6210cc014 | ||
|
|
6c8b466e59 | ||
|
|
2aebe97f9f | ||
|
|
157724bff8 | ||
|
|
6cbb1a0bee | ||
|
|
960a13dd38 | ||
|
|
9213f80435 | ||
|
|
bccae94c7a | ||
|
|
d71f77ce06 | ||
|
|
2787f3dc71 | ||
|
|
fb00baab5b | ||
|
|
9e22155d31 | ||
|
|
963373435d | ||
|
|
377987fa92 | ||
|
|
0b6980639e | ||
|
|
4f1cc9f94f | ||
|
|
6e5434a0ec | ||
|
|
3244f7c38f | ||
|
|
f27b676e89 | ||
|
|
4f2a80a4a3 | ||
|
|
a51bc27829 | ||
|
|
4fd321c93d | ||
|
|
bbd62bdef5 | ||
|
|
4bb1d78939 | ||
|
|
53c37ef413 | ||
|
|
a6511b6c5a | ||
|
|
829e96a2d0 | ||
|
|
2e25f37433 | ||
|
|
fbf6c73226 | ||
|
|
aab54e3f23 | ||
|
|
a6eff7fbfb |
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -7,4 +7,6 @@ We love getting PRs, but we hate asking people for the same basic changes every
|
||||
- [ ] Push your changes to a branch other than `master`. Create your PR from that branch.
|
||||
- [ ] Add JavaDocs and other comments
|
||||
- [ ] Write tests that run and pass in CI. See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to capture snapshot data.
|
||||
- [ ] Run `mvn -D enable-ci clean install site` locally. This may reformat your code, commit those changes. If this command doesn't succeed, your change will not pass CI.
|
||||
- [ ] Run `mvn clean compile` locally. This may reformat your code, commit those changes.
|
||||
- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.
|
||||
|
||||
|
||||
2
.github/workflows/maven-build.yml
vendored
2
.github/workflows/maven-build.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
java: [ 11 ]
|
||||
java: [ 8, 11 ]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up JDK
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
[](https://mvnrepository.com/artifact/org.kohsuke/github-api)
|
||||
[](https://gitter.im/github-api/github-api?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||

|
||||
|
||||
|
||||
|
||||
See https://github-api.kohsuke.org/ for more details
|
||||
|
||||
42
pom.xml
42
pom.xml
@@ -2,7 +2,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.kohsuke</groupId>
|
||||
<artifactId>github-api</artifactId>
|
||||
<version>1.108</version>
|
||||
<version>1.109</version>
|
||||
<name>GitHub API for Java</name>
|
||||
<url>https://github-api.kohsuke.org/</url>
|
||||
<description>GitHub API for Java</description>
|
||||
@@ -11,7 +11,7 @@
|
||||
<connection>scm:git:git@github.com/github-api/${project.artifactId}.git</connection>
|
||||
<developerConnection>scm:git:ssh://git@github.com/github-api/${project.artifactId}.git</developerConnection>
|
||||
<url>https://github.com/github-api/github-api/</url>
|
||||
<tag>github-api-1.108</tag>
|
||||
<tag>github-api-1.109</tag>
|
||||
</scm>
|
||||
|
||||
<distributionManagement>
|
||||
@@ -33,12 +33,12 @@
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<spotbugs-maven-plugin.version>3.1.12.2</spotbugs-maven-plugin.version>
|
||||
<spotbugs.version>4.0.0</spotbugs.version>
|
||||
<spotbugs-maven-plugin.version>4.0.0</spotbugs-maven-plugin.version>
|
||||
<spotbugs.version>4.0.1</spotbugs.version>
|
||||
<spotbugs-maven-plugin.failOnError>true</spotbugs-maven-plugin.failOnError>
|
||||
<hamcrest.version>2.2</hamcrest.version>
|
||||
<okhttp3.version>4.4.0</okhttp3.version>
|
||||
<okio.version>2.4.3</okio.version>
|
||||
<okhttp3.version>4.4.1</okhttp3.version>
|
||||
<okio.version>2.5.0</okio.version>
|
||||
<formatter-maven-plugin.goal>format</formatter-maven-plugin.goal>
|
||||
<impsort-maven-plugin.goal>sort</impsort-maven-plugin.goal>
|
||||
<!-- Using this as the minimum bar for code coverage. Adding methods without covering them will fail this. -->
|
||||
@@ -209,7 +209,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
<version>3.2.0</version>
|
||||
<configuration>
|
||||
<source>8</source>
|
||||
<failOnWarnings>true</failOnWarnings>
|
||||
@@ -233,7 +233,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-site-plugin</artifactId>
|
||||
<version>3.8.2</version>
|
||||
<version>3.9.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
@@ -281,6 +281,10 @@
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.22.2</version>
|
||||
<configuration>
|
||||
<!-- SUREFIRE-1226 workaround -->
|
||||
<trimStackTrace>false</trimStackTrace>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
@@ -453,7 +457,7 @@
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jgit</groupId>
|
||||
<artifactId>org.eclipse.jgit</artifactId>
|
||||
<version>5.6.1.202002131546-r</version>
|
||||
<version>5.7.0.202003110725-r</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -491,7 +495,7 @@
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
<version>3.3.1</version>
|
||||
<version>3.3.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -503,7 +507,7 @@
|
||||
<dependency>
|
||||
<groupId>com.github.tomakehurst</groupId>
|
||||
<artifactId>wiremock-jre8-standalone</artifactId>
|
||||
<version>2.26.2</version>
|
||||
<version>2.26.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -568,6 +572,10 @@
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>jacoco-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
@@ -617,6 +625,18 @@
|
||||
</profiles>
|
||||
<reporting>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>jacoco-maven-plugin</artifactId>
|
||||
<reportSets>
|
||||
<reportSet>
|
||||
<reports>
|
||||
<!-- select non-aggregate reports -->
|
||||
<report>report</report>
|
||||
</reports>
|
||||
</reportSet>
|
||||
</reportSets>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
|
||||
165
src/main/java/org/kohsuke/github/AbstractBuilder.java
Normal file
165
src/main/java/org/kohsuke/github/AbstractBuilder.java
Normal file
@@ -0,0 +1,165 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.annotation.CheckForNull;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* An abstract data object builder/updater.
|
||||
*
|
||||
* This class can be use to make a Builder that supports both batch and single property changes.
|
||||
* <p>
|
||||
* Batching looks like this:
|
||||
* </p>
|
||||
*
|
||||
* <pre>
|
||||
* update().someName(value).otherName(value).done()
|
||||
* </pre>
|
||||
* <p>
|
||||
* Single changes look like this:
|
||||
* </p>
|
||||
*
|
||||
* <pre>
|
||||
* set().someName(value);
|
||||
* set().otherName(value);
|
||||
* </pre>
|
||||
* <p>
|
||||
* If {@link S} is the same as {@link R}, {@link #with(String, Object)} will commit changes after the first value change
|
||||
* and return a {@link R} from {@link #done()}.
|
||||
* </p>
|
||||
* <p>
|
||||
* If {@link S} is not the same as {@link R}, {@link #with(String, Object)} will batch together multiple changes and let
|
||||
* the user call {@link #done()} when they are ready.
|
||||
*
|
||||
* @param <R>
|
||||
* Final return type built by this builder returned when {@link #done()}} is called.
|
||||
* @param <S>
|
||||
* Intermediate return type for this builder returned by calls to {@link #with(String, Object)}. If {@link S}
|
||||
* the same as {@link R}, this builder will commit changes after each call to {@link #with(String, Object)}.
|
||||
*/
|
||||
abstract class AbstractBuilder<R, S> {
|
||||
|
||||
@Nonnull
|
||||
private final Class<R> returnType;
|
||||
|
||||
private final boolean commitChangesImmediately;
|
||||
|
||||
@CheckForNull
|
||||
private final R baseInstance;
|
||||
|
||||
@Nonnull
|
||||
protected final Requester requester;
|
||||
|
||||
// TODO: Not sure how update-in-place behavior should be controlled
|
||||
// However, it certainly can be controlled dynamically down to the instance level or inherited for all children of
|
||||
// some
|
||||
// connection.
|
||||
protected boolean updateInPlace;
|
||||
|
||||
/**
|
||||
* Creates a builder.
|
||||
*
|
||||
* @param root
|
||||
* the GitHub instance to connect to.
|
||||
* @param intermediateReturnType
|
||||
* the intermediate return type of type {@link S} returned by calls to {@link #with(String, Object)}.
|
||||
* Must either be equal to {@code builtReturnType} or this instance must be castable to this class. If
|
||||
* not, the constructor will throw {@link IllegalArgumentException}.
|
||||
* @param finalReturnType
|
||||
* the final return type for built by this builder returned when {@link #done()}} is called.
|
||||
* @param baseInstance
|
||||
* optional instance on which to base this builder.
|
||||
*/
|
||||
protected AbstractBuilder(@Nonnull Class<R> finalReturnType,
|
||||
@Nonnull Class<S> intermediateReturnType,
|
||||
@Nonnull GitHub root,
|
||||
@CheckForNull R baseInstance) {
|
||||
this.requester = root.createRequest();
|
||||
this.returnType = finalReturnType;
|
||||
this.commitChangesImmediately = returnType.equals(intermediateReturnType);
|
||||
if (!commitChangesImmediately && !intermediateReturnType.isInstance(this)) {
|
||||
throw new IllegalArgumentException(
|
||||
"Argument \"intermediateReturnType\": This instance must be castable to intermediateReturnType or finalReturnType must be equal to intermediateReturnType.");
|
||||
}
|
||||
|
||||
this.baseInstance = baseInstance;
|
||||
this.updateInPlace = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finishes an update, 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
|
||||
*/
|
||||
@Nonnull
|
||||
@Preview
|
||||
@Deprecated
|
||||
public R done() throws IOException {
|
||||
R result;
|
||||
if (updateInPlace && baseInstance != null) {
|
||||
result = requester.fetchInto(baseInstance);
|
||||
} else {
|
||||
result = requester.fetch(returnType);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies a value to a name for this builder.
|
||||
*
|
||||
* If {@link S} is the same as {@link R}, this method will commit changes after the first value change and return a
|
||||
* {@link R} from {@link #done()}.
|
||||
*
|
||||
* If {@link S} is not the same as {@link R}, this method will return an {@link S} and letting the caller batch
|
||||
* together multiple changes and call {@link #done()} when they are ready.
|
||||
*
|
||||
* @param name
|
||||
* the name of the field
|
||||
* @param value
|
||||
* the value of the field
|
||||
* @return either a continuing builder or an updated data record
|
||||
* @throws IOException
|
||||
* if an I/O error occurs
|
||||
*/
|
||||
@Nonnull
|
||||
@Preview
|
||||
@Deprecated
|
||||
protected S with(@Nonnull String name, Object value) throws IOException {
|
||||
requester.with(name, value);
|
||||
return continueOrDone();
|
||||
}
|
||||
|
||||
/**
|
||||
* Chooses whether to return a continuing builder or an updated data record
|
||||
*
|
||||
* If {@link S} is the same as {@link R}, this method will commit changes after the first value change and return a
|
||||
* {@link R} from {@link #done()}.
|
||||
*
|
||||
* If {@link S} is not the same as {@link R}, this method will return an {@link S} and letting the caller batch
|
||||
* together multiple changes and call {@link #done()} when they are ready.
|
||||
*
|
||||
* @return either a continuing builder or an updated data record
|
||||
* @throws IOException
|
||||
* if an I/O error occurs
|
||||
*/
|
||||
@Nonnull
|
||||
@Preview
|
||||
@Deprecated
|
||||
protected S continueOrDone() throws IOException {
|
||||
// This little bit of roughness in this base class means all inheriting builders get to create Updater and
|
||||
// Setter classes from almost identical code. Creator can often be implemented with significant code reuse as
|
||||
// well.
|
||||
if (commitChangesImmediately) {
|
||||
// These casts look strange and risky, but they they're actually guaranteed safe due to the return path
|
||||
// being based on the previous comparison of class instances passed to the constructor.
|
||||
return (S) done();
|
||||
} else {
|
||||
return (S) this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -51,24 +51,33 @@ public class GHCheckRun extends GHObject {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets status of the check run. It can be one of "queue", "in_progress", or "completed"
|
||||
* Gets status of the check run.
|
||||
*
|
||||
* @return Status of the check run
|
||||
* @see Status
|
||||
*/
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public static enum Status {
|
||||
QUEUED, IN_PROGRESS, COMPLETED
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets conclusion of a completed check run. It can be one of "success", "failure", "neutral", "cancelled",
|
||||
* "time_out", or "action_required".
|
||||
* Gets conclusion of a completed check run.
|
||||
*
|
||||
* @return Status of the check run
|
||||
* @see Conclusion
|
||||
*/
|
||||
public String getConclusion() {
|
||||
return conclusion;
|
||||
}
|
||||
|
||||
public static enum Conclusion {
|
||||
SUCCESS, FAILURE, NEUTRAL, CANCELLED, TIMED_OUT, ACTION_REQUIRED
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the custom name of this check run.
|
||||
*
|
||||
@@ -243,4 +252,8 @@ public class GHCheckRun extends GHObject {
|
||||
}
|
||||
}
|
||||
|
||||
public static enum AnnotationLevel {
|
||||
NOTICE, WARNING, FAILURE
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
291
src/main/java/org/kohsuke/github/GHCheckRunBuilder.java
Normal file
291
src/main/java/org/kohsuke/github/GHCheckRunBuilder.java
Normal file
@@ -0,0 +1,291 @@
|
||||
/*
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright 2020 CloudBees, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package org.kohsuke.github;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Drafts a check run.
|
||||
*
|
||||
* @see GHCheckRun
|
||||
* @see GHRepository#createCheckRun
|
||||
* @see <a href="https://developer.github.com/v3/checks/runs/#create-a-check-run">documentation</a>
|
||||
*/
|
||||
@SuppressFBWarnings(value = "URF_UNREAD_FIELD", justification = "Jackson serializes these even without a getter")
|
||||
@Preview
|
||||
@Deprecated
|
||||
public final class GHCheckRunBuilder {
|
||||
|
||||
private final GHRepository repo;
|
||||
private final Requester requester;
|
||||
private Output output;
|
||||
private List<Action> actions;
|
||||
|
||||
GHCheckRunBuilder(GHRepository repo, String name, String headSHA) {
|
||||
this.repo = repo;
|
||||
requester = repo.root.createRequest()
|
||||
.withPreview(Previews.ANTIOPE)
|
||||
.method("POST")
|
||||
.with("name", name)
|
||||
.with("head_sha", headSHA)
|
||||
.withUrlPath(repo.getApiTailUrl("check-runs"));
|
||||
}
|
||||
|
||||
public @NonNull GHCheckRunBuilder withDetailsURL(@CheckForNull String detailsURL) {
|
||||
requester.with("details_url", detailsURL);
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull GHCheckRunBuilder withExternalID(@CheckForNull String externalID) {
|
||||
requester.with("external_id", externalID);
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull GHCheckRunBuilder withStatus(@CheckForNull GHCheckRun.Status status) {
|
||||
if (status != null) {
|
||||
// Do *not* use the overload taking Enum, as that s/_/-/g which would be wrong here.
|
||||
requester.with("status", status.toString().toLowerCase(Locale.ROOT));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull GHCheckRunBuilder withConclusion(@CheckForNull GHCheckRun.Conclusion conclusion) {
|
||||
if (conclusion != null) {
|
||||
requester.with("conclusion", conclusion.toString().toLowerCase(Locale.ROOT));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull GHCheckRunBuilder withStartedAt(@CheckForNull Date startedAt) {
|
||||
if (startedAt != null) {
|
||||
requester.with("started_at", GitHubClient.printDate(startedAt));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull GHCheckRunBuilder withCompletedAt(@CheckForNull Date completedAt) {
|
||||
if (completedAt != null) {
|
||||
requester.with("completed_at", GitHubClient.printDate(completedAt));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull GHCheckRunBuilder add(@NonNull Output output) {
|
||||
if (this.output != null) {
|
||||
throw new IllegalStateException("cannot add Output twice");
|
||||
}
|
||||
this.output = output;
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull GHCheckRunBuilder add(@NonNull Action action) {
|
||||
if (actions == null) {
|
||||
actions = new LinkedList<>();
|
||||
}
|
||||
actions.add(action);
|
||||
return this;
|
||||
}
|
||||
|
||||
private static final int MAX_ANNOTATIONS = 50;
|
||||
/**
|
||||
* Actually creates the check run. (If more than fifty annotations were requested, this is done in batches.)
|
||||
*
|
||||
* @return the resulting run
|
||||
* @throws IOException
|
||||
* for the usual reasons
|
||||
*/
|
||||
public @NonNull GHCheckRun create() throws IOException {
|
||||
List<Annotation> extraAnnotations;
|
||||
if (output != null && output.annotations != null && output.annotations.size() > MAX_ANNOTATIONS) {
|
||||
extraAnnotations = output.annotations.subList(MAX_ANNOTATIONS, output.annotations.size());
|
||||
output.annotations = output.annotations.subList(0, MAX_ANNOTATIONS);
|
||||
} else {
|
||||
extraAnnotations = Collections.emptyList();
|
||||
}
|
||||
GHCheckRun run = requester.with("output", output).with("actions", actions).fetch(GHCheckRun.class).wrap(repo);
|
||||
while (!extraAnnotations.isEmpty()) {
|
||||
Output output2 = new Output(output.title, output.summary);
|
||||
int i = Math.min(extraAnnotations.size(), MAX_ANNOTATIONS);
|
||||
output2.annotations = extraAnnotations.subList(0, i);
|
||||
extraAnnotations = extraAnnotations.subList(i, extraAnnotations.size());
|
||||
run = repo.root.createRequest()
|
||||
.withPreview(Previews.ANTIOPE)
|
||||
.method("PATCH")
|
||||
.with("output", output2)
|
||||
.withUrlPath(repo.getApiTailUrl("check-runs/" + run.id))
|
||||
.fetch(GHCheckRun.class)
|
||||
.wrap(repo);
|
||||
}
|
||||
return run;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see <a href="https://developer.github.com/v3/checks/runs/#output-object">documentation</a>
|
||||
*/
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public static final class Output {
|
||||
|
||||
private final String title;
|
||||
private final String summary;
|
||||
private String text;
|
||||
private List<Annotation> annotations;
|
||||
private List<Image> images;
|
||||
|
||||
public Output(@NonNull String title, @NonNull String summary) {
|
||||
this.title = title;
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
public @NonNull Output withText(@CheckForNull String text) {
|
||||
this.text = text;
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull Output add(@NonNull Annotation annotation) {
|
||||
if (annotations == null) {
|
||||
annotations = new LinkedList<>();
|
||||
}
|
||||
annotations.add(annotation);
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull Output add(@NonNull Image image) {
|
||||
if (images == null) {
|
||||
images = new LinkedList<>();
|
||||
}
|
||||
images.add(image);
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @see <a href="https://developer.github.com/v3/checks/runs/#annotations-object">documentation</a>
|
||||
*/
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public static final class Annotation {
|
||||
|
||||
private final String path;
|
||||
private final int start_line;
|
||||
private final int end_line;
|
||||
private final String annotation_level;
|
||||
private final String message;
|
||||
private Integer start_column;
|
||||
private Integer end_column;
|
||||
private String title;
|
||||
private String raw_details;
|
||||
|
||||
public Annotation(@NonNull String path,
|
||||
int line,
|
||||
@NonNull GHCheckRun.AnnotationLevel annotationLevel,
|
||||
@NonNull String message) {
|
||||
this(path, line, line, annotationLevel, message);
|
||||
}
|
||||
|
||||
public Annotation(@NonNull String path,
|
||||
int startLine,
|
||||
int endLine,
|
||||
@NonNull GHCheckRun.AnnotationLevel annotationLevel,
|
||||
@NonNull String message) {
|
||||
this.path = path;
|
||||
start_line = startLine;
|
||||
end_line = endLine;
|
||||
annotation_level = annotationLevel.toString().toLowerCase(Locale.ROOT);
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public @NonNull Annotation withStartColumn(@CheckForNull Integer startColumn) {
|
||||
start_column = startColumn;
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull Annotation withEndColumn(@CheckForNull Integer endColumn) {
|
||||
end_column = endColumn;
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull Annotation withTitle(@CheckForNull String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull Annotation withRawDetails(@CheckForNull String rawDetails) {
|
||||
raw_details = rawDetails;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @see <a href="https://developer.github.com/v3/checks/runs/#images-object">documentation</a>
|
||||
*/
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public static final class Image {
|
||||
|
||||
private final String alt;
|
||||
private final String image_url;
|
||||
private String caption;
|
||||
|
||||
public Image(@NonNull String alt, @NonNull String imageURL) {
|
||||
this.alt = alt;
|
||||
image_url = imageURL;
|
||||
}
|
||||
|
||||
public @NonNull Image withCaption(@CheckForNull String caption) {
|
||||
this.caption = caption;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @see <a href="https://developer.github.com/v3/checks/runs/#actions-object">documentation</a>
|
||||
*/
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public static final class Action {
|
||||
|
||||
private final String label;
|
||||
private final String description;
|
||||
private final String identifier;
|
||||
|
||||
public Action(@NonNull String label, @NonNull String description, @NonNull String identifier) {
|
||||
this.label = label;
|
||||
this.description = description;
|
||||
this.identifier = identifier;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
44
src/main/java/org/kohsuke/github/GHCheckRunsIterable.java
Normal file
44
src/main/java/org/kohsuke/github/GHCheckRunsIterable.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Iterable for check-runs listing.
|
||||
*/
|
||||
class GHCheckRunsIterable extends PagedIterable<GHCheckRun> {
|
||||
private GitHub root;
|
||||
private final GitHubRequest request;
|
||||
|
||||
private GHCheckRunsPage result;
|
||||
|
||||
public GHCheckRunsIterable(GitHub root, GitHubRequest request) {
|
||||
this.root = root;
|
||||
this.request = request;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public PagedIterator<GHCheckRun> _iterator(int pageSize) {
|
||||
return new PagedIterator<>(
|
||||
adapt(GitHubPageIterator.create(root.getClient(), GHCheckRunsPage.class, request, pageSize)),
|
||||
null);
|
||||
}
|
||||
|
||||
protected Iterator<GHCheckRun[]> adapt(final Iterator<GHCheckRunsPage> base) {
|
||||
return new Iterator<GHCheckRun[]>() {
|
||||
public boolean hasNext() {
|
||||
return base.hasNext();
|
||||
}
|
||||
|
||||
public GHCheckRun[] next() {
|
||||
GHCheckRunsPage v = base.next();
|
||||
if (result == null) {
|
||||
result = v;
|
||||
}
|
||||
return v.getCheckRuns(root);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
20
src/main/java/org/kohsuke/github/GHCheckRunsPage.java
Normal file
20
src/main/java/org/kohsuke/github/GHCheckRunsPage.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
/**
|
||||
* Represents the one page of check-runs result when listing check-runs.
|
||||
*/
|
||||
class GHCheckRunsPage {
|
||||
private int total_count;
|
||||
private GHCheckRun[] check_runs;
|
||||
|
||||
public int getTotalCount() {
|
||||
return total_count;
|
||||
}
|
||||
|
||||
GHCheckRun[] getCheckRuns(GitHub root) {
|
||||
for (GHCheckRun check_run : check_runs) {
|
||||
check_run.wrap(root);
|
||||
}
|
||||
return check_runs;
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,8 @@ public class GHCommit {
|
||||
|
||||
private int comment_count;
|
||||
|
||||
private GHVerification verification;
|
||||
|
||||
static class Tree {
|
||||
String sha;
|
||||
}
|
||||
@@ -100,6 +102,15 @@ public class GHCommit {
|
||||
public int getCommentCount() {
|
||||
return comment_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Verification Status.
|
||||
*
|
||||
* @return the Verification status
|
||||
*/
|
||||
public GHVerification getVerification() {
|
||||
return verification;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -512,6 +523,19 @@ public class GHCommit {
|
||||
return owner.getLastCommitStatus(sha);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets check-runs for given sha.
|
||||
*
|
||||
* @return check runs for given sha.
|
||||
* @throws IOException
|
||||
* on error
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
public PagedIterable<GHCheckRun> getCheckRuns() throws IOException {
|
||||
return owner.getCheckRuns(sha);
|
||||
}
|
||||
|
||||
/**
|
||||
* Some of the fields are not always filled in when this object is retrieved as a part of another API call.
|
||||
*
|
||||
|
||||
@@ -79,6 +79,18 @@ public class GHCreateRepositoryBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables projects
|
||||
*
|
||||
* @param enabled
|
||||
* true if enabled
|
||||
* @return a builder to continue with building
|
||||
*/
|
||||
public GHCreateRepositoryBuilder projects(boolean enabled) {
|
||||
this.builder.with("has_projects", enabled);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables wiki
|
||||
*
|
||||
|
||||
@@ -50,6 +50,7 @@ public enum GHEvent {
|
||||
PULL_REQUEST_REVIEW,
|
||||
PULL_REQUEST_REVIEW_COMMENT,
|
||||
PUSH,
|
||||
REGISTRY_PACKAGE,
|
||||
RELEASE,
|
||||
REPOSITORY_DISPATCH, // only valid for org hooks
|
||||
REPOSITORY,
|
||||
|
||||
@@ -48,7 +48,7 @@ public abstract class GHEventPayload {
|
||||
}
|
||||
|
||||
// List of events that still need to be added:
|
||||
// CheckRunEvent CheckSuiteEvent ContentReferenceEvent
|
||||
// ContentReferenceEvent
|
||||
// DeployKeyEvent DownloadEvent FollowEvent ForkApplyEvent GitHubAppAuthorizationEvent GistEvent GollumEvent
|
||||
// InstallationEvent InstallationRepositoriesEvent IssuesEvent LabelEvent MarketplacePurchaseEvent MemberEvent
|
||||
// MembershipEvent MetaEvent MilestoneEvent OrganizationEvent OrgBlockEvent PackageEvent PageBuildEvent
|
||||
@@ -191,6 +191,20 @@ public abstract class GHEventPayload {
|
||||
repository.root = root;
|
||||
return repository;
|
||||
}
|
||||
|
||||
@Override
|
||||
void wrapUp(GitHub root) {
|
||||
super.wrapUp(root);
|
||||
if (checkSuite == null)
|
||||
throw new IllegalStateException(
|
||||
"Expected check_suite payload, but got something else. Maybe we've got another type of event?");
|
||||
if (repository != null) {
|
||||
repository.wrap(root);
|
||||
checkSuite.wrap(repository);
|
||||
} else {
|
||||
checkSuite.wrap(root);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,56 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JacksonInject;
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.annotation.CheckForNull;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* The type GHLabel.
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
* @see <a href="https://developer.github.com/v3/issues/labels/">Labels</a>
|
||||
* @see GHIssue#getLabels() GHIssue#getLabels()
|
||||
* @see GHRepository#listLabels() GHRepository#listLabels()
|
||||
*/
|
||||
public class GHLabel {
|
||||
private String url, name, color, description;
|
||||
private GHRepository repo;
|
||||
|
||||
@Nonnull
|
||||
private String url, name, color;
|
||||
|
||||
@CheckForNull
|
||||
private String description;
|
||||
|
||||
@Nonnull
|
||||
private final GitHub root;
|
||||
|
||||
@JsonCreator
|
||||
private GHLabel(@JacksonInject @Nonnull GitHub root) {
|
||||
this.root = root;
|
||||
url = "";
|
||||
name = "";
|
||||
color = "";
|
||||
description = null;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
GitHub getApiRoot() {
|
||||
return Objects.requireNonNull(root);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets url.
|
||||
*
|
||||
* @return the url
|
||||
*/
|
||||
@Nonnull
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
@@ -31,6 +60,7 @@ public class GHLabel {
|
||||
*
|
||||
* @return the name
|
||||
*/
|
||||
@Nonnull
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
@@ -40,6 +70,7 @@ public class GHLabel {
|
||||
*
|
||||
* @return the color
|
||||
*/
|
||||
@Nonnull
|
||||
public String getColor() {
|
||||
return color;
|
||||
}
|
||||
@@ -49,25 +80,11 @@ public class GHLabel {
|
||||
*
|
||||
* @return the description
|
||||
*/
|
||||
@CheckForNull
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
GHLabel wrapUp(GHRepository repo) {
|
||||
this.repo = repo;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete.
|
||||
*
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
*/
|
||||
public void delete() throws IOException {
|
||||
repo.root.createRequest().method("DELETE").setRawUrlPath(url).send();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets color.
|
||||
*
|
||||
@@ -75,15 +92,11 @@ public class GHLabel {
|
||||
* 6-letter hex color code, like "f29513"
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
* @deprecated use {@link #set()} or {@link #update()} instead
|
||||
*/
|
||||
@Deprecated
|
||||
public void setColor(String newColor) throws IOException {
|
||||
repo.root.createRequest()
|
||||
.method("PATCH")
|
||||
.with("name", name)
|
||||
.with("color", newColor)
|
||||
.with("description", description)
|
||||
.setRawUrlPath(url)
|
||||
.send();
|
||||
set().color(newColor);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,25 +106,106 @@ public class GHLabel {
|
||||
* Description of label
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
* @deprecated use {@link #set()} or {@link #update()} instead
|
||||
*/
|
||||
@Deprecated
|
||||
public void setDescription(String newDescription) throws IOException {
|
||||
repo.root.createRequest()
|
||||
.method("PATCH")
|
||||
.with("name", name)
|
||||
.with("color", color)
|
||||
.with("description", newDescription)
|
||||
.setRawUrlPath(url)
|
||||
.send();
|
||||
set().description(newDescription);
|
||||
}
|
||||
|
||||
static Collection<String> toNames(Collection<GHLabel> labels) {
|
||||
List<String> r = new ArrayList<String>();
|
||||
List<String> r = new ArrayList<>();
|
||||
for (GHLabel l : labels) {
|
||||
r.add(l.getName());
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Begins the creation of a new instance.
|
||||
*
|
||||
* Consumer must call {@link Creator#done()} to commit changes.
|
||||
*
|
||||
* @param repository
|
||||
* the repository in which the label will be created.
|
||||
* @return a {@link Creator}
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
static Creator create(GHRepository repository) throws IOException {
|
||||
return new Creator(repository);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a label from a repository.
|
||||
*
|
||||
* @param repository
|
||||
* the repository to read from
|
||||
* @param name
|
||||
* the name of the label
|
||||
* @return a label
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
*/
|
||||
static GHLabel read(@Nonnull GHRepository repository, @Nonnull String name) throws IOException {
|
||||
return repository.root.createRequest()
|
||||
.withUrlPath(repository.getApiTailUrl("labels"), name)
|
||||
.fetch(GHLabel.class);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads all labels from a repository.
|
||||
*
|
||||
* @param repository
|
||||
* the repository to read from
|
||||
* @return iterable of all labels
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
*/
|
||||
static PagedIterable<GHLabel> readAll(@Nonnull final GHRepository repository) throws IOException {
|
||||
return repository.root.createRequest()
|
||||
.withUrlPath(repository.getApiTailUrl("labels"))
|
||||
.toIterable(GHLabel[].class, null);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Begins a batch update
|
||||
*
|
||||
* Consumer must call {@link Updater#done()} to commit changes.
|
||||
*
|
||||
* @return a {@link Updater}
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
public Updater update() {
|
||||
return new Updater(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Begins a single property update.
|
||||
*
|
||||
* @return a {@link Setter}
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
public Setter set() {
|
||||
return new Setter(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete this label from the repository.
|
||||
*
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
*/
|
||||
public void delete() throws IOException {
|
||||
root.createRequest().method("DELETE").setRawUrlPath(getUrl()).send();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object o) {
|
||||
if (this == o)
|
||||
@@ -120,11 +214,54 @@ public class GHLabel {
|
||||
return false;
|
||||
final GHLabel ghLabel = (GHLabel) o;
|
||||
return Objects.equals(url, ghLabel.url) && Objects.equals(name, ghLabel.name)
|
||||
&& Objects.equals(color, ghLabel.color) && Objects.equals(repo, ghLabel.repo);
|
||||
&& Objects.equals(color, ghLabel.color) && Objects.equals(description, ghLabel.description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(url, name, color, repo);
|
||||
return Objects.hash(url, name, color, description);
|
||||
}
|
||||
|
||||
/**
|
||||
* A {@link GHLabelBuilder} that updates a single property per request
|
||||
*
|
||||
* {@link #done()} is called automatically after the property is set.
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
public static class Setter extends GHLabelBuilder<GHLabel> {
|
||||
private Setter(@Nonnull GHLabel base) {
|
||||
super(GHLabel.class, base.getApiRoot(), base);
|
||||
requester.method("PATCH").setRawUrlPath(base.getUrl());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A {@link GHLabelBuilder} that allows multiple properties to be updated per request.
|
||||
*
|
||||
* Consumer must call {@link #done()} to commit changes.
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
public static class Updater extends GHLabelBuilder<Updater> {
|
||||
private Updater(@Nonnull GHLabel base) {
|
||||
super(Updater.class, base.getApiRoot(), base);
|
||||
requester.method("PATCH").setRawUrlPath(base.getUrl());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A {@link GHLabelBuilder} that creates a new {@link GHLabel}
|
||||
*
|
||||
* Consumer must call {@link #done()} to create the new instance.
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
public static class Creator extends GHLabelBuilder<Creator> {
|
||||
private Creator(@Nonnull GHRepository repository) {
|
||||
super(Creator.class, repository.root, null);
|
||||
requester.method("POST").withUrlPath(repository.getApiTailUrl("labels"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
60
src/main/java/org/kohsuke/github/GHLabelBuilder.java
Normal file
60
src/main/java/org/kohsuke/github/GHLabelBuilder.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.annotation.CheckForNull;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param <S>
|
||||
* Intermediate return type for this builder returned by calls to {@link #with(String, Object)}. If {@link S}
|
||||
* the same as {@link GHLabel}, this builder will commit changes after each call to
|
||||
* {@link #with(String, Object)}.
|
||||
*/
|
||||
class GHLabelBuilder<S> extends AbstractBuilder<GHLabel, S> {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param intermediateReturnType
|
||||
* Intermediate return type for this builder returned by calls to {@link #with(String, Object)}. If
|
||||
* {@link S} the same as {@link GHLabel}, this builder will commit changes after each call to
|
||||
* {@link #with(String, Object)}.
|
||||
* @param root
|
||||
* the GitHub instance to which updates will be sent
|
||||
* @param baseInstance
|
||||
* instance on which to base this builder. If {@code null} a new instance will be created.
|
||||
*/
|
||||
protected GHLabelBuilder(@Nonnull Class<S> intermediateReturnType,
|
||||
@Nonnull GitHub root,
|
||||
@CheckForNull GHLabel baseInstance) {
|
||||
super(GHLabel.class, intermediateReturnType, root, baseInstance);
|
||||
|
||||
if (baseInstance != null) {
|
||||
requester.with("name", baseInstance.getName());
|
||||
requester.with("color", baseInstance.getColor());
|
||||
requester.with("description", baseInstance.getDescription());
|
||||
}
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Preview
|
||||
@Deprecated
|
||||
public S name(String value) throws IOException {
|
||||
return with("name", value);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Preview
|
||||
@Deprecated
|
||||
public S color(String value) throws IOException {
|
||||
return with("color", value);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Preview
|
||||
@Deprecated
|
||||
public S description(String value) throws IOException {
|
||||
return with("description", value);
|
||||
}
|
||||
}
|
||||
@@ -128,6 +128,24 @@ public class GHOrganization extends GHPerson {
|
||||
.toIterable(GHTeam[].class, item -> item.wrapUp(this));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a single team by ID.
|
||||
*
|
||||
* @param teamId
|
||||
* id of the team that we want to query for
|
||||
* @return the team
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
*
|
||||
* @see <a href= "https://developer.github.com/v3/teams/#get-team-by-name">documentation</a>
|
||||
*/
|
||||
public GHTeam getTeam(int teamId) throws IOException {
|
||||
return root.createRequest()
|
||||
.withUrlPath(String.format("/organizations/%d/team/%d", id, teamId))
|
||||
.fetch(GHTeam.class)
|
||||
.wrapUp(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds a team that has the given name in its {@link GHTeam#getName()}
|
||||
*
|
||||
@@ -147,19 +165,19 @@ public class GHOrganization extends GHPerson {
|
||||
|
||||
/**
|
||||
* Finds a team that has the given slug in its {@link GHTeam#getSlug()}
|
||||
*
|
||||
*
|
||||
* @param slug
|
||||
* the slug
|
||||
* @return the team by slug
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
* @see <a href= "https://developer.github.com/v3/teams/#get-team-by-name">documentation</a>
|
||||
*/
|
||||
public GHTeam getTeamBySlug(String slug) throws IOException {
|
||||
for (GHTeam t : listTeams()) {
|
||||
if (t.getSlug().equals(slug))
|
||||
return t;
|
||||
}
|
||||
return null;
|
||||
return root.createRequest()
|
||||
.withUrlPath(String.format("/orgs/%s/teams/%s", login, slug))
|
||||
.fetch(GHTeam.class)
|
||||
.wrapUp(this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -44,6 +44,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
|
||||
private String body;
|
||||
private GHUser user;
|
||||
private String path;
|
||||
private String html_url;
|
||||
private int position = -1;
|
||||
private int original_position = -1;
|
||||
private long in_reply_to_id = -1L;
|
||||
@@ -143,7 +144,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
|
||||
|
||||
@Override
|
||||
public URL getHtmlUrl() {
|
||||
return null;
|
||||
return GitHubClient.parseURL(html_url);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -76,7 +76,7 @@ public class GHRepository extends GHObject {
|
||||
|
||||
private String git_url, ssh_url, clone_url, svn_url, mirror_url;
|
||||
private GHUser owner; // not fully populated. beware.
|
||||
private boolean has_issues, has_wiki, fork, has_downloads, has_pages, archived;
|
||||
private boolean has_issues, has_wiki, fork, has_downloads, has_pages, archived, has_projects;
|
||||
|
||||
private boolean allow_squash_merge;
|
||||
private boolean allow_merge_commit;
|
||||
@@ -547,6 +547,15 @@ public class GHRepository extends GHObject {
|
||||
return has_issues;
|
||||
}
|
||||
|
||||
/**
|
||||
* Has projects boolean.
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
public boolean hasProjects() {
|
||||
return has_projects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Has wiki boolean.
|
||||
*
|
||||
@@ -988,6 +997,18 @@ public class GHRepository extends GHObject {
|
||||
edit("has_issues", String.valueOf(v));
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables or disables projects for this repository.
|
||||
*
|
||||
* @param v
|
||||
* the v
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
*/
|
||||
public void enableProjects(boolean v) throws IOException {
|
||||
edit("has_projects", String.valueOf(v));
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables or disables Wiki for this repository.
|
||||
*
|
||||
@@ -1745,7 +1766,7 @@ public class GHRepository extends GHObject {
|
||||
}
|
||||
|
||||
/**
|
||||
* /** Lists all the commit statues attached to the given commit, newer ones first.
|
||||
* /** Lists all the commit statuses attached to the given commit, newer ones first.
|
||||
*
|
||||
* @param sha1
|
||||
* the sha 1
|
||||
@@ -1773,6 +1794,27 @@ public class GHRepository extends GHObject {
|
||||
return v.isEmpty() ? null : v.get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets check runs for given ref.
|
||||
*
|
||||
* @param ref
|
||||
* ref
|
||||
* @return check runs for given ref
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
* @see <a href="https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-specific-ref">List check runs
|
||||
* for a specific ref</a>
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
public PagedIterable<GHCheckRun> getCheckRuns(String ref) throws IOException {
|
||||
GitHubRequest request = root.createRequest()
|
||||
.withUrlPath(String.format("/repos/%s/%s/commits/%s/check-runs", getOwnerName(), name, ref))
|
||||
.withPreview(ANTIOPE)
|
||||
.build();
|
||||
return new GHCheckRunsIterable(root, request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a commit status
|
||||
*
|
||||
@@ -1828,6 +1870,21 @@ public class GHRepository extends GHObject {
|
||||
return createCommitStatus(sha1, state, targetUrl, description, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a check run for a commit.
|
||||
*
|
||||
* @param name
|
||||
* an identifier for the run
|
||||
* @param headSHA
|
||||
* the commit hash
|
||||
* @return a builder which you should customize, then call {@link GHCheckRunBuilder#create}
|
||||
*/
|
||||
@Preview
|
||||
@Deprecated
|
||||
public @NonNull GHCheckRunBuilder createCheckRun(@NonNull String name, @NonNull String headSHA) {
|
||||
return new GHCheckRunBuilder(this, name, headSHA);
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists repository events.
|
||||
*
|
||||
@@ -1851,9 +1908,7 @@ public class GHRepository extends GHObject {
|
||||
* the io exception
|
||||
*/
|
||||
public PagedIterable<GHLabel> listLabels() throws IOException {
|
||||
return root.createRequest()
|
||||
.withUrlPath(getApiTailUrl("labels"))
|
||||
.toIterable(GHLabel[].class, item -> item.wrapUp(this));
|
||||
return GHLabel.readAll(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1866,7 +1921,7 @@ public class GHRepository extends GHObject {
|
||||
* the io exception
|
||||
*/
|
||||
public GHLabel getLabel(String name) throws IOException {
|
||||
return root.createRequest().withUrlPath(getApiTailUrl("labels/" + name)).fetch(GHLabel.class).wrapUp(this);
|
||||
return GHLabel.read(this, name);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1881,7 +1936,7 @@ public class GHRepository extends GHObject {
|
||||
* the io exception
|
||||
*/
|
||||
public GHLabel createLabel(String name, String color) throws IOException {
|
||||
return createLabel(name, color, "");
|
||||
return GHLabel.create(this).name(name).color(color).description("").done();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1898,14 +1953,7 @@ public class GHRepository extends GHObject {
|
||||
* the io exception
|
||||
*/
|
||||
public GHLabel createLabel(String name, String color, String description) throws IOException {
|
||||
return root.createRequest()
|
||||
.method("POST")
|
||||
.with("name", name)
|
||||
.with("color", color)
|
||||
.with("description", description)
|
||||
.withUrlPath(getApiTailUrl("labels"))
|
||||
.fetch(GHLabel.class)
|
||||
.wrapUp(this);
|
||||
return GHLabel.create(this).name(name).color(color).description(description).done();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,6 +19,7 @@ public class GHTagObject {
|
||||
private String message;
|
||||
private GitUser tagger;
|
||||
private GHRef.GHObject object;
|
||||
private GHVerification verification;
|
||||
|
||||
GHTagObject wrap(GHRepository owner) {
|
||||
this.owner = owner;
|
||||
@@ -97,4 +98,13 @@ public class GHTagObject {
|
||||
public GHRef.GHObject getObject() {
|
||||
return object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Verification Status.
|
||||
*
|
||||
* @return the Verification status
|
||||
*/
|
||||
public GHVerification getVerification() {
|
||||
return verification;
|
||||
}
|
||||
}
|
||||
|
||||
82
src/main/java/org/kohsuke/github/GHVerification.java
Normal file
82
src/main/java/org/kohsuke/github/GHVerification.java
Normal file
@@ -0,0 +1,82 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
|
||||
/**
|
||||
* The commit/tag can be signed by user. This object holds the verification status. Whether the Commit/Tag is signed or
|
||||
* not.
|
||||
*
|
||||
* @see <a href="https://developer.github.com/v3/git/tags/#signature-verification-object">tags signature
|
||||
* verificatiion</a>
|
||||
* @see <a href="https://developer.github.com/v3/git/commits/#signature-verification-object">commits signature
|
||||
* verificatiion</a>
|
||||
*
|
||||
* @author Sourabh Sarvotham Parkala
|
||||
*/
|
||||
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
|
||||
justification = "JSON API")
|
||||
public class GHVerification {
|
||||
private String signature, payload;
|
||||
private boolean verified;
|
||||
private Reason reason;
|
||||
|
||||
/**
|
||||
* Indicates whether GitHub considers the signature in this commit to be verified.
|
||||
*
|
||||
* @return true if the signature is valid else returns false.
|
||||
*/
|
||||
public boolean isVerified() {
|
||||
return verified;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets reason for verification value.
|
||||
*
|
||||
* @return return reason of type {@link Reason}, such as "valid" or "unsigned". The possible values can be found in
|
||||
* {@link Reason}}
|
||||
*/
|
||||
public Reason getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets signature used for the verification.
|
||||
*
|
||||
* @return null if not signed else encoded signature.
|
||||
*/
|
||||
public String getSignature() {
|
||||
return signature;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the payload that was signed.
|
||||
*
|
||||
* @return null if not signed else encoded signature.
|
||||
*/
|
||||
public String getPayload() {
|
||||
return payload;
|
||||
}
|
||||
|
||||
/**
|
||||
* The possible values for reason in verification object from github.
|
||||
*
|
||||
* @see <a href="https://developer.github.com/v3/repos/commits/#signature-verification-object">List of possible
|
||||
* reason values</a>
|
||||
* @author Sourabh Sarvotham Parkala
|
||||
*/
|
||||
public enum Reason {
|
||||
EXPIRED_KEY,
|
||||
NOT_SIGNING_KEY,
|
||||
GPGVERIFY_ERROR,
|
||||
GPGVERIFY_UNAVAILABLE,
|
||||
UNSIGNED,
|
||||
UNKNOWN_SIGNATURE_TYPE,
|
||||
NO_USER,
|
||||
UNVERIFIED_EMAIL,
|
||||
BAD_EMAIL,
|
||||
UNKNOWN_KEY,
|
||||
MALFORMED_SIGNATURE,
|
||||
INVALID,
|
||||
VALID
|
||||
}
|
||||
}
|
||||
@@ -724,7 +724,11 @@ public class GitHub {
|
||||
* @return the team
|
||||
* @throws IOException
|
||||
* the io exception
|
||||
*
|
||||
* @deprecated Use {@link GHOrganization#getTeam(int)}
|
||||
* @see <a href= "https://developer.github.com/v3/teams/#get-team-legacy">deprecation notice</a>
|
||||
*/
|
||||
@Deprecated
|
||||
public GHTeam getTeam(int id) throws IOException {
|
||||
return createRequest().withUrlPath("/teams/" + id).fetch(GHTeam.class).wrapUp(this);
|
||||
}
|
||||
|
||||
@@ -148,13 +148,15 @@ abstract class GitHubClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the credential is valid.
|
||||
* Ensures that the credential for this client is valid.
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
public boolean isCredentialValid() {
|
||||
try {
|
||||
fetch(GHUser.class, "/user");
|
||||
// If 404, ratelimit returns a default value.
|
||||
// This works as credential test because invalid credentials returns 401, not 404
|
||||
getRateLimit();
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
if (LOGGER.isLoggable(FINE))
|
||||
|
||||
@@ -12,9 +12,10 @@ import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import javax.annotation.CheckForNull;
|
||||
import javax.annotation.Nonnull;
|
||||
@@ -206,6 +207,9 @@ class GitHubResponse<T> {
|
||||
*/
|
||||
static abstract class ResponseInfo {
|
||||
|
||||
private static final Comparator<String> nullableCaseInsensitiveComparator = Comparator
|
||||
.nullsFirst(String.CASE_INSENSITIVE_ORDER);
|
||||
|
||||
private final int statusCode;
|
||||
@Nonnull
|
||||
private final GitHubRequest request;
|
||||
@@ -217,7 +221,12 @@ class GitHubResponse<T> {
|
||||
@Nonnull Map<String, List<String>> headers) {
|
||||
this.request = request;
|
||||
this.statusCode = statusCode;
|
||||
this.headers = Collections.unmodifiableMap(new HashMap<>(headers));
|
||||
|
||||
// Response header field names must be case-insensitive.
|
||||
TreeMap<String, List<String>> caseInsensitiveMap = new TreeMap<>(nullableCaseInsensitiveComparator);
|
||||
caseInsensitiveMap.putAll(headers);
|
||||
|
||||
this.headers = Collections.unmodifiableMap(caseInsensitiveMap);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,6 +8,12 @@ package org.kohsuke.github;
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
class Previews {
|
||||
/**
|
||||
* Check-runs and check-suites
|
||||
*
|
||||
* @see <a href="https://developer.github.com/v3/previews/#check-runs-and-check-suites-api">GitHub API Previews</a>
|
||||
*/
|
||||
static final String ANTIOPE = "application/vnd.github.antiope-preview+json";
|
||||
|
||||
/**
|
||||
* Commit Search
|
||||
|
||||
@@ -134,7 +134,7 @@ public abstract class AbstractGitHubWireMockTest extends Assert {
|
||||
|
||||
protected void verifyAuthenticated(GitHub instance) {
|
||||
assertThat(
|
||||
"GitHub connection believes it is anonymous. Make sure you set GITHUB_OAUTH or both GITHUB_USER and GITHUB_PASSWORD environment variables",
|
||||
"GitHub connection believes it is anonymous. Make sure you set GITHUB_OAUTH or both GITHUB_LOGIN and GITHUB_PASSWORD environment variables",
|
||||
instance.isAnonymous(),
|
||||
Matchers.is(false));
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.junit.Test;
|
||||
import org.kohsuke.github.GHCommit.File;
|
||||
import org.kohsuke.github.GHOrganization.Permission;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
@@ -39,13 +40,40 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
"a test repository",
|
||||
"http://github-api.kohsuke.org/",
|
||||
true);
|
||||
|
||||
assertThat(r.hasIssues(), is(true));
|
||||
assertThat(r.hasWiki(), is(true));
|
||||
assertThat(r.hasDownloads(), is(true));
|
||||
assertThat(r.hasProjects(), is(true));
|
||||
|
||||
r.enableIssueTracker(false);
|
||||
r.enableDownloads(false);
|
||||
r.enableWiki(false);
|
||||
r.enableProjects(false);
|
||||
|
||||
r.renameTo(targetName);
|
||||
getUser().getRepository(targetName).delete();
|
||||
|
||||
// local instance remains unchanged
|
||||
assertThat(r.getName(), equalTo("github-api-test-rename"));
|
||||
assertThat(r.hasIssues(), is(true));
|
||||
assertThat(r.hasWiki(), is(true));
|
||||
assertThat(r.hasDownloads(), is(true));
|
||||
assertThat(r.hasProjects(), is(true));
|
||||
|
||||
r = gitHub.getMyself().getRepository(targetName);
|
||||
|
||||
// values are updated
|
||||
assertThat(r.hasIssues(), is(false));
|
||||
assertThat(r.hasWiki(), is(false));
|
||||
assertThat(r.hasDownloads(), is(false));
|
||||
assertThat(r.getName(), equalTo(targetName));
|
||||
|
||||
// ISSUE: #765
|
||||
// From what I can tell this is a bug in GithHub.
|
||||
// updating `has_projects` doesn't seem to do anything
|
||||
assertThat(r.hasProjects(), is(true));
|
||||
|
||||
r.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -57,14 +85,12 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
.homepage("http://github-api.kohsuke.org/")
|
||||
.autoInit(true)
|
||||
.create();
|
||||
r.enableIssueTracker(false);
|
||||
r.enableDownloads(false);
|
||||
r.enableWiki(false);
|
||||
if (mockGitHub.isUseProxy()) {
|
||||
Thread.sleep(3000);
|
||||
}
|
||||
assertNotNull(r.getReadme());
|
||||
getUser().getRepository(name).delete();
|
||||
|
||||
r.delete();
|
||||
}
|
||||
|
||||
private void cleanupUserRepository(final String name) throws IOException {
|
||||
@@ -76,8 +102,34 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
@Test
|
||||
public void testCredentialValid() throws IOException {
|
||||
assertTrue(gitHub.isCredentialValid());
|
||||
GitHub connect = GitHub.connect("totally", "bogus");
|
||||
assertFalse(connect.isCredentialValid());
|
||||
assertThat(gitHub.lastRateLimit().getCore(), not(instanceOf(GHRateLimit.UnknownLimitRecord.class)));
|
||||
assertThat(gitHub.lastRateLimit().getCore().getLimit(), equalTo(5000));
|
||||
|
||||
gitHub = getGitHubBuilder().withOAuthToken("bogus", "user")
|
||||
.withEndpoint(mockGitHub.apiServer().baseUrl())
|
||||
.build();
|
||||
assertThat(gitHub.lastRateLimit(), nullValue());
|
||||
assertFalse(gitHub.isCredentialValid());
|
||||
// For invalid credentials, we get a 401 but it includes anonymous rate limit headers
|
||||
assertThat(gitHub.lastRateLimit().getCore(), not(instanceOf(GHRateLimit.UnknownLimitRecord.class)));
|
||||
assertThat(gitHub.lastRateLimit().getCore().getLimit(), equalTo(60));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCredentialValidEnterprise() throws IOException {
|
||||
// Simulated GHE: getRateLimit returns 404
|
||||
assertThat(gitHub.lastRateLimit(), nullValue());
|
||||
assertTrue(gitHub.isCredentialValid());
|
||||
// lastRateLimit stays null when 404 is encountered
|
||||
assertThat(gitHub.lastRateLimit(), nullValue());
|
||||
|
||||
gitHub = getGitHubBuilder().withOAuthToken("bogus", "user")
|
||||
.withEndpoint(mockGitHub.apiServer().baseUrl())
|
||||
.build();
|
||||
assertThat(gitHub.lastRateLimit(), nullValue());
|
||||
assertFalse(gitHub.isCredentialValid());
|
||||
// Simulated GHE: For invalid credentials, we get a 401 that does not include ratelimit info
|
||||
assertThat(gitHub.lastRateLimit(), nullValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -234,16 +286,28 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
return team.hasMember(gitHub.getMyself());
|
||||
}
|
||||
|
||||
@Ignore("Needs mocking check")
|
||||
@Test
|
||||
public void testShouldFetchTeam() throws Exception {
|
||||
GHOrganization j = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
||||
GHTeam teamByName = j.getTeams().get("Core Developers");
|
||||
GHOrganization organization = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
||||
GHTeam teamByName = organization.getTeams().get("Core Developers");
|
||||
|
||||
GHTeam teamById = gitHub.getTeam(teamByName.getId());
|
||||
assertNotNull(teamById);
|
||||
|
||||
assertEquals(teamByName, teamById);
|
||||
assertEquals(teamByName.getId(), teamById.getId());
|
||||
assertEquals(teamByName.getDescription(), teamById.getDescription());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShouldFetchTeamFromOrganization() throws Exception {
|
||||
GHOrganization organization = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
||||
GHTeam teamByName = organization.getTeams().get("Core Developers");
|
||||
|
||||
GHTeam teamById = organization.getTeam(teamByName.getId());
|
||||
assertNotNull(teamById);
|
||||
|
||||
assertEquals(teamByName.getId(), teamById.getId());
|
||||
assertEquals(teamByName.getDescription(), teamById.getDescription());
|
||||
}
|
||||
|
||||
@Ignore("Needs mocking check")
|
||||
@@ -584,6 +648,8 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f23");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Kohsuke Kawaguchi");
|
||||
assertEquals(commit.getCommitShortInfo().getMessage(), "doc");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.UNSIGNED);
|
||||
}
|
||||
|
||||
@Ignore("Needs mocking check")
|
||||
@@ -781,7 +847,7 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
GHRepository r = gitHub.getRepository("github-api-test-org/test-labels");
|
||||
List<GHLabel> lst = r.listLabels().toList();
|
||||
for (GHLabel l : lst) {
|
||||
// System.out.println(l.getName());
|
||||
assertThat(l.getUrl(), containsString(l.getName().replace(" ", "%20")));
|
||||
}
|
||||
assertTrue(lst.size() > 5);
|
||||
GHLabel e = r.getLabel("enhancement");
|
||||
@@ -791,9 +857,13 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
|
||||
GHLabel t = null;
|
||||
GHLabel t2 = null;
|
||||
GHLabel t3 = null;
|
||||
try {// CRUD
|
||||
t = r.createLabel("test", "123456");
|
||||
t2 = r.getLabel("test");
|
||||
assertThat(t, not(sameInstance(t2)));
|
||||
assertThat(t, equalTo(t2));
|
||||
|
||||
assertEquals(t.getName(), t2.getName());
|
||||
assertEquals(t.getColor(), "123456");
|
||||
assertEquals(t.getColor(), t2.getColor());
|
||||
@@ -801,28 +871,69 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
assertEquals(t.getDescription(), t2.getDescription());
|
||||
assertEquals(t.getUrl(), t2.getUrl());
|
||||
|
||||
t.setColor("000000");
|
||||
// update works on multiple changes in one call
|
||||
t3 = t.update().color("000000").description("It is dark!").done();
|
||||
|
||||
// instances behave as immutable by default. Update returns a new updated instance.
|
||||
assertThat(t, not(sameInstance(t2)));
|
||||
assertThat(t, equalTo(t2));
|
||||
|
||||
assertThat(t, not(sameInstance(t3)));
|
||||
assertThat(t, not(equalTo(t3)));
|
||||
|
||||
// This is annoying behavior, but it is by design at this time.
|
||||
// Verifying so we can know when it is fixed.
|
||||
assertEquals(t.getColor(), "123456");
|
||||
assertEquals(t.getDescription(), "");
|
||||
assertEquals(t3.getColor(), "000000");
|
||||
assertEquals(t3.getDescription(), "It is dark!");
|
||||
|
||||
// Test deprecated methods
|
||||
t.setDescription("Deprecated");
|
||||
t = r.getLabel("test");
|
||||
t.setDescription("this is also a test");
|
||||
|
||||
GHLabel t3 = r.getLabel("test");
|
||||
// By using the old instance t when calling setDescription it also sets color to the old value
|
||||
// this is a bad behavior, but it is expected
|
||||
assertEquals(t.getColor(), "123456");
|
||||
assertEquals(t.getDescription(), "Deprecated");
|
||||
|
||||
t.setColor("000000");
|
||||
t = r.getLabel("test");
|
||||
assertEquals(t.getColor(), "000000");
|
||||
assertEquals(t.getDescription(), "Deprecated");
|
||||
|
||||
// set() makes a single change
|
||||
t3 = t.set().description("this is also a test");
|
||||
|
||||
// instances behave as immutable by default. Update returns a new updated instance.
|
||||
assertThat(t, not(sameInstance(t3)));
|
||||
assertThat(t, not(equalTo(t3)));
|
||||
|
||||
assertEquals(t3.getColor(), "000000");
|
||||
assertEquals(t3.getDescription(), "this is also a test");
|
||||
|
||||
t.delete();
|
||||
try {
|
||||
t = r.getLabel("test");
|
||||
fail("Test label should be deleted.");
|
||||
} catch (IOException ex) {
|
||||
assertThat(ex, instanceOf(FileNotFoundException.class));
|
||||
}
|
||||
|
||||
t = r.createLabel("test2", "123457", "this is a different test");
|
||||
t2 = r.getLabel("test2");
|
||||
|
||||
assertEquals(t.getName(), t2.getName());
|
||||
assertEquals(t.getColor(), "123457");
|
||||
assertEquals(t.getColor(), t2.getColor());
|
||||
assertEquals(t.getDescription(), "this is a different test");
|
||||
assertEquals(t.getDescription(), t2.getDescription());
|
||||
assertEquals(t.getUrl(), t2.getUrl());
|
||||
t.delete();
|
||||
|
||||
// Allow null description
|
||||
t = GHLabel.create(r).name("test2").color("123458").done();
|
||||
assertThat(t.getName(), equalTo("test2"));
|
||||
assertThat(t.getDescription(), is(nullValue()));
|
||||
|
||||
} finally {
|
||||
cleanupLabel("test");
|
||||
cleanupLabel("test2");
|
||||
@@ -832,7 +943,7 @@ public class AppTest extends AbstractGitHubWireMockTest {
|
||||
void cleanupLabel(String name) {
|
||||
if (mockGitHub.isUseProxy()) {
|
||||
try {
|
||||
GHLabel t = getGitHubBeforeAfter().getRepository("github-api-test-org/test-labels").getLabel("test");
|
||||
GHLabel t = getGitHubBeforeAfter().getRepository("github-api-test-org/test-labels").getLabel(name);
|
||||
t.delete();
|
||||
} catch (IOException e) {
|
||||
|
||||
|
||||
@@ -24,4 +24,21 @@ public class CommitTest extends AbstractGitHubWireMockTest {
|
||||
assertEquals(expected.getFiles().size(), commit.getFiles().size());
|
||||
}
|
||||
}
|
||||
|
||||
@Test // issue 737
|
||||
public void commitSignatureVerification() throws Exception {
|
||||
GHRepository repo = gitHub.getRepository("stapler/stapler");
|
||||
PagedIterable<GHCommit> commits = repo.queryCommits().path("pom.xml").list();
|
||||
for (GHCommit commit : Iterables.limit(commits, 10)) {
|
||||
GHCommit expected = repo.getCommit(commit.getSHA1());
|
||||
assertEquals(expected.getCommitShortInfo().getVerification().isVerified(),
|
||||
commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(expected.getCommitShortInfo().getVerification().getReason(),
|
||||
commit.getCommitShortInfo().getVerification().getReason());
|
||||
assertEquals(expected.getCommitShortInfo().getVerification().getSignature(),
|
||||
commit.getCommitShortInfo().getVerification().getSignature());
|
||||
assertEquals(expected.getCommitShortInfo().getVerification().getPayload(),
|
||||
commit.getCommitShortInfo().getVerification().getPayload());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
117
src/test/java/org/kohsuke/github/GHCheckRunBuilderTest.java
Normal file
117
src/test/java/org/kohsuke/github/GHCheckRunBuilderTest.java
Normal file
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright 2020 CloudBees, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package org.kohsuke.github;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
|
||||
@SuppressWarnings("deprecation") // preview
|
||||
public class GHCheckRunBuilderTest extends AbstractGitHubWireMockTest {
|
||||
|
||||
@Test
|
||||
public void createCheckRun() throws Exception {
|
||||
GHCheckRun checkRun = gitHub.getRepository("jglick/github-api-test")
|
||||
.createCheckRun("foo", "4a929d464a2fae7ee899ce603250f7dab304bc4b")
|
||||
.withStatus(GHCheckRun.Status.COMPLETED)
|
||||
.withConclusion(GHCheckRun.Conclusion.SUCCESS)
|
||||
.withDetailsURL("http://nowhere.net/stuff")
|
||||
.withExternalID("whatever")
|
||||
.withStartedAt(new Date(999_999_000))
|
||||
.withCompletedAt(new Date(999_999_999))
|
||||
.add(new GHCheckRunBuilder.Output("Some Title", "what happened…")
|
||||
.add(new GHCheckRunBuilder.Annotation("stuff.txt",
|
||||
1,
|
||||
GHCheckRun.AnnotationLevel.NOTICE,
|
||||
"hello to you too").withTitle("Look here"))
|
||||
.add(new GHCheckRunBuilder.Image("Unikitty",
|
||||
"https://i.pinimg.com/474x/9e/65/c0/9e65c0972294f1e10f648c9780a79fab.jpg")
|
||||
.withCaption("Princess Unikitty")))
|
||||
.add(new GHCheckRunBuilder.Action("Help", "what I need help with", "doit"))
|
||||
.create();
|
||||
assertEquals("completed", checkRun.getStatus());
|
||||
assertEquals(1, checkRun.getOutput().getAnnotationsCount());
|
||||
assertEquals(546384586, checkRun.id);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createCheckRunManyAnnotations() throws Exception {
|
||||
GHCheckRunBuilder.Output output = new GHCheckRunBuilder.Output("Big Run", "Lots of stuff here »");
|
||||
for (int i = 0; i < 101; i++) {
|
||||
output.add(
|
||||
new GHCheckRunBuilder.Annotation("stuff.txt", 1, GHCheckRun.AnnotationLevel.NOTICE, "hello #" + i));
|
||||
}
|
||||
GHCheckRun checkRun = gitHub.getRepository("jglick/github-api-test")
|
||||
.createCheckRun("big", "4a929d464a2fae7ee899ce603250f7dab304bc4b")
|
||||
.withConclusion(GHCheckRun.Conclusion.SUCCESS)
|
||||
.add(output)
|
||||
.create();
|
||||
assertEquals("completed", checkRun.getStatus());
|
||||
assertEquals("Big Run", checkRun.getOutput().getTitle());
|
||||
assertEquals("Lots of stuff here »", checkRun.getOutput().getSummary());
|
||||
assertEquals(101, checkRun.getOutput().getAnnotationsCount());
|
||||
assertEquals(546384622, checkRun.id);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createCheckRunNoAnnotations() throws Exception {
|
||||
GHCheckRun checkRun = gitHub.getRepository("jglick/github-api-test")
|
||||
.createCheckRun("quick", "4a929d464a2fae7ee899ce603250f7dab304bc4b")
|
||||
.withConclusion(GHCheckRun.Conclusion.NEUTRAL)
|
||||
.add(new GHCheckRunBuilder.Output("Quick note", "nothing more to see here"))
|
||||
.create();
|
||||
assertEquals("completed", checkRun.getStatus());
|
||||
assertEquals(0, checkRun.getOutput().getAnnotationsCount());
|
||||
assertEquals(546384705, checkRun.id);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createPendingCheckRun() throws Exception {
|
||||
GHCheckRun checkRun = gitHub.getRepository("jglick/github-api-test")
|
||||
.createCheckRun("outstanding", "4a929d464a2fae7ee899ce603250f7dab304bc4b")
|
||||
.withStatus(GHCheckRun.Status.IN_PROGRESS)
|
||||
.create();
|
||||
assertEquals("in_progress", checkRun.getStatus());
|
||||
assertNull(checkRun.getConclusion());
|
||||
assertEquals(546469053, checkRun.id);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createCheckRunErrMissingConclusion() throws Exception {
|
||||
try {
|
||||
gitHub.getRepository("jglick/github-api-test")
|
||||
.createCheckRun("outstanding", "4a929d464a2fae7ee899ce603250f7dab304bc4b")
|
||||
.withStatus(GHCheckRun.Status.COMPLETED)
|
||||
.create();
|
||||
fail("should have been rejected");
|
||||
} catch (HttpException x) {
|
||||
assertEquals(422, x.getResponseCode());
|
||||
assertThat(x.getMessage(), containsString("\\\"conclusion\\\" wasn't supplied"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -119,6 +120,11 @@ public class GHPullRequestTest extends AbstractGitHubWireMockTest {
|
||||
GHPullRequestReviewComment comment = comments.get(0);
|
||||
assertEquals("Sample review comment", comment.getBody());
|
||||
|
||||
// Assert htmlUrl is not null
|
||||
assertNotNull(comment.getHtmlUrl());
|
||||
assertEquals(new URL("https://github.com/github-api-test-org/github-api/pull/266#discussion_r321995146"),
|
||||
comment.getHtmlUrl());
|
||||
|
||||
comment.update("Updated review comment");
|
||||
comments = p.listReviewComments().toList();
|
||||
assertEquals(1, comments.size());
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.util.Date;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.hamcrest.core.IsInstanceOf.instanceOf;
|
||||
|
||||
/**
|
||||
@@ -74,7 +74,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
GHRateLimit headerRateLimit = rateLimit;
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// ratelimit() uses headerRateLimit if available and headerRateLimit is not expired
|
||||
assertThat(gitHub.rateLimit(), equalTo(headerRateLimit));
|
||||
@@ -82,7 +82,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
assertThat(mockGitHub.getRequestCount(), equalTo(1));
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// Always requests new info
|
||||
rateLimit = gitHub.getRateLimit();
|
||||
@@ -96,7 +96,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
previousLimit = rateLimit;
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// Always requests new info
|
||||
rateLimit = gitHub.getRateLimit();
|
||||
@@ -163,16 +163,20 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
}
|
||||
|
||||
private void verifyRateLimitValues(GHRateLimit previousLimit, int remaining, boolean changedResetDate) {
|
||||
// newer or unchange
|
||||
int resetComparisionValue = changedResetDate ? 1 : 0;
|
||||
|
||||
// Basic checks of values
|
||||
assertThat(rateLimit, notNullValue());
|
||||
assertThat(rateLimit.getLimit(), equalTo(previousLimit.getLimit()));
|
||||
assertThat(rateLimit.getRemaining(), equalTo(remaining));
|
||||
|
||||
// Check that the reset date of the current limit is not older than the previous one
|
||||
assertThat(rateLimit.getResetDate().compareTo(previousLimit.getResetDate()), equalTo(resetComparisionValue));
|
||||
long diffMillis = rateLimit.getResetDate().getTime() - previousLimit.getResetDate().getTime();
|
||||
|
||||
assertThat(diffMillis, greaterThanOrEqualTo(0L));
|
||||
if (changedResetDate) {
|
||||
assertThat(diffMillis, greaterThan(1000L));
|
||||
} else {
|
||||
assertThat(diffMillis, lessThanOrEqualTo(1000L));
|
||||
}
|
||||
|
||||
// Additional checks for record values
|
||||
assertThat(rateLimit.getCore().getLimit(), equalTo(rateLimit.getLimit()));
|
||||
@@ -196,7 +200,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
Date lastReset = new Date(System.currentTimeMillis() / 1000L);
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// Before any queries, rate limit starts as null but may be requested
|
||||
@@ -220,7 +224,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
assertThat(mockGitHub.getRequestCount(), equalTo(1));
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// First call to /user gets response without rate limit information
|
||||
@@ -240,7 +244,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
assertThat(mockGitHub.getRequestCount(), equalTo(3));
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// Always requests new info
|
||||
rateLimit = gitHub.getRateLimit();
|
||||
@@ -252,13 +256,13 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
assertThat(rateLimit.getResetDate().compareTo(lastReset), equalTo(1));
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// last is still null, because it actually means lastHeaderRateLimit
|
||||
assertThat(gitHub.lastRateLimit(), CoreMatchers.nullValue());
|
||||
|
||||
// ratelimit() tries not to make additional requests, uses queried rate limit since header not available
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
assertThat(gitHub.rateLimit(), sameInstance(rateLimit));
|
||||
|
||||
// -------------------------------------------------------------
|
||||
@@ -279,7 +283,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
GHRateLimit headerRateLimit = rateLimit;
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// ratelimit() uses headerRateLimit if available and headerRateLimit is not expired
|
||||
assertThat(gitHub.rateLimit(), sameInstance(headerRateLimit));
|
||||
@@ -287,7 +291,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
assertThat(mockGitHub.getRequestCount(), equalTo(5));
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// Always requests new info
|
||||
rateLimit = gitHub.getRateLimit();
|
||||
@@ -304,7 +308,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
assertThat(mockGitHub.getRequestCount(), equalTo(6));
|
||||
|
||||
// Wait for the header
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -357,7 +361,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
GHRateLimit headerRateLimit = null;
|
||||
|
||||
// Give this a moment
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// /user gets response with rate limit information
|
||||
@@ -376,7 +380,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
sameInstance(headerRateLimit));
|
||||
|
||||
// Nothing changes still valid
|
||||
Thread.sleep(1000);
|
||||
Thread.sleep(1500);
|
||||
|
||||
assertThat("rateLimit() selects header instance when not expired, does not ask server",
|
||||
gitHub.rateLimit(),
|
||||
@@ -388,7 +392,7 @@ public class GHRateLimitTest extends AbstractGitHubWireMockTest {
|
||||
assertThat(mockGitHub.getRequestCount(), equalTo(1));
|
||||
|
||||
// This time, rateLimit() should find an expired record and get a new one.
|
||||
Thread.sleep(3000);
|
||||
Thread.sleep(2500);
|
||||
|
||||
assertThat("Header instance has expired", gitHub.lastRateLimit().isExpired(), is(true));
|
||||
|
||||
|
||||
@@ -496,4 +496,31 @@ public class GHRepositoryTest extends AbstractGitHubWireMockTest {
|
||||
List<GHUser> collaborators = repo.listCollaborators().toList();
|
||||
assertThat(collaborators.size(), greaterThan(10));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getCheckRuns() throws Exception {
|
||||
final int expectedCount = 8;
|
||||
// Use github-api repository as it has checks set up
|
||||
PagedIterable<GHCheckRun> checkRuns = gitHub.getOrganization("github-api")
|
||||
.getRepository("github-api")
|
||||
.getCheckRuns("78b9ff49d47daaa158eb373c4e2e040f739df8b9");
|
||||
// Check if the paging works correctly
|
||||
assertThat(checkRuns.withPageSize(2).iterator().nextPage(), hasSize(2));
|
||||
|
||||
// Check if the checkruns are all succeeded and if we got all of them
|
||||
int checkRunsCount = 0;
|
||||
for (GHCheckRun checkRun : checkRuns) {
|
||||
assertThat(checkRun.getConclusion(), equalTo("success"));
|
||||
checkRunsCount++;
|
||||
}
|
||||
assertThat(checkRunsCount, equalTo(expectedCount));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getLastCommitStatus() throws Exception {
|
||||
GHCommitStatus status = getRepository().getLastCommitStatus("8051615eff597f4e49f4f47625e6fc2b49f26bfc");
|
||||
assertThat(status.getId(), equalTo(9027542286L));
|
||||
assertThat(status.getState(), equalTo(GHCommitState.SUCCESS));
|
||||
assertThat(status.getContext(), equalTo("ci/circleci: build"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@ public class GHTagTest extends AbstractGitHubWireMockTest {
|
||||
assertEquals(tagName, tag.getTag());
|
||||
assertEquals(tagMessage, tag.getMessage());
|
||||
assertEquals(commitSha, tag.getObject().getSha());
|
||||
assertFalse(tag.getVerification().isVerified());
|
||||
assertEquals(tag.getVerification().getReason(), GHVerification.Reason.UNSIGNED);
|
||||
|
||||
// Make a reference to the newly created tag.
|
||||
GHRef ref = repo.createRef("refs/tags/" + tagName, tag.getSha());
|
||||
|
||||
131
src/test/java/org/kohsuke/github/GHVerificationReasonTest.java
Normal file
131
src/test/java/org/kohsuke/github/GHVerificationReasonTest.java
Normal file
@@ -0,0 +1,131 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @author Sourabh Sarvotham Parkala
|
||||
*/
|
||||
public class GHVerificationReasonTest extends AbstractGitHubWireMockTest {
|
||||
// Issue 737
|
||||
@Test
|
||||
public void testExpiredKey() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f01");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.EXPIRED_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNotSigningKey() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f02");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.NOT_SIGNING_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGpgverifyError() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f03");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.GPGVERIFY_ERROR);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGpgverifyUnavailable() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f04");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(),
|
||||
GHVerification.Reason.GPGVERIFY_UNAVAILABLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnsigned() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f05");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.UNSIGNED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnknownSignatureType() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f06");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(),
|
||||
GHVerification.Reason.UNKNOWN_SIGNATURE_TYPE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoUser() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f07");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.NO_USER);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnverifiedEmail() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f08");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.UNVERIFIED_EMAIL);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBadEmail() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f09");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.BAD_EMAIL);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnknownKey() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f10");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.UNKNOWN_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMalformedSignature() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f11");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(),
|
||||
GHVerification.Reason.MALFORMED_SIGNATURE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalid() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f12");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertFalse(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.INVALID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValid() throws Exception {
|
||||
GHRepository r = gitHub.getRepository("github-api/github-api");
|
||||
GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f13");
|
||||
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Sourabh Parkala");
|
||||
assertTrue(commit.getCommitShortInfo().getVerification().isVerified());
|
||||
assertEquals(commit.getCommitShortInfo().getVerification().getReason(), GHVerification.Reason.VALID);
|
||||
assertNotNull(commit.getCommitShortInfo().getVerification().getPayload());
|
||||
assertNotNull(commit.getCommitShortInfo().getVerification().getSignature());
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,8 @@ import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.notNullValue;
|
||||
import static org.kohsuke.github.GHMarketplaceAccountType.ORGANIZATION;
|
||||
|
||||
/**
|
||||
@@ -162,4 +164,47 @@ public class GitHubTest extends AbstractGitHubWireMockTest {
|
||||
assertNull(account.getOrganizationBillingEmail());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void gzip() throws Exception {
|
||||
|
||||
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
||||
|
||||
// getResponseHeaderFields is deprecated but we'll use it for testing.
|
||||
assertThat(org.getResponseHeaderFields(), notNullValue());
|
||||
|
||||
// WireMock should automatically gzip all responses
|
||||
assertThat(org.getResponseHeaderFields().get("Content-Encoding").get(0), is("gzip"));
|
||||
assertThat(org.getResponseHeaderFields().get("Content-eNcoding").get(0), is("gzip"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeaderFieldName() throws Exception {
|
||||
|
||||
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
||||
|
||||
// getResponseHeaderFields is deprecated but we'll use it for testing.
|
||||
assertThat(org.getResponseHeaderFields(), notNullValue());
|
||||
|
||||
// Header field names must be case-insensitive
|
||||
assertThat(org.getResponseHeaderFields().containsKey("CacHe-ContrOl"), is(true));
|
||||
|
||||
// The KeySet from header fields should also be case-insensitive
|
||||
assertThat(org.getResponseHeaderFields().keySet().contains("CacHe-ControL"), is(true));
|
||||
assertThat(org.getResponseHeaderFields().keySet().contains("CacHe-ControL"), is(true));
|
||||
|
||||
assertThat(org.getResponseHeaderFields().get("cachE-cOntrol").get(0), is("private, max-age=60, s-maxage=60"));
|
||||
|
||||
// GitHub has started changing their headers to all lowercase.
|
||||
// For this test we want the field names to be with mixed-case (harder to do comparison).
|
||||
// Ensure that it remains that way, if test resources are ever refreshed.
|
||||
boolean found = false;
|
||||
for (String key : org.getResponseHeaderFields().keySet()) {
|
||||
if (Objects.equals("Cache-Control", key)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
assertThat("Must have the literal expected string 'Cache-Control' for header field name", found);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,8 @@ public class WireMockStatusReporterTest extends AbstractGitHubWireMockTest {
|
||||
|
||||
assertThat(e, Matchers.<Exception>instanceOf(GHFileNotFoundException.class));
|
||||
assertThat(e.getMessage(),
|
||||
equalTo("{\"message\":\"Not Found\",\"documentation_url\":\"https://developer.github.com/v3/repos/#get\"}"));
|
||||
containsString(
|
||||
"{\"message\":\"Not Found\",\"documentation_url\":\"https://developer.github.com/v3/repos/#get\"}"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -17,6 +17,7 @@ import java.lang.reflect.Type;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.github.tomakehurst.wiremock.client.WireMock.*;
|
||||
@@ -120,7 +121,7 @@ public class GitHubWireMockRule extends WireMockMultiServerRule {
|
||||
.extractTextBodiesOver(255));
|
||||
|
||||
// After taking the snapshot, format the output
|
||||
formatJsonFiles(new File(this.apiServer().getOptions().filesRoot().getPath()).toPath());
|
||||
formatTestResources(new File(this.apiServer().getOptions().filesRoot().getPath()).toPath(), false);
|
||||
|
||||
if (this.rawServer() != null) {
|
||||
this.rawServer()
|
||||
@@ -132,7 +133,7 @@ public class GitHubWireMockRule extends WireMockMultiServerRule {
|
||||
.extractTextBodiesOver(255));
|
||||
|
||||
// For raw server, only fix up mapping files
|
||||
formatJsonFiles(new File(this.rawServer().getOptions().filesRoot().child("mappings").getPath()).toPath());
|
||||
formatTestResources(new File(this.rawServer().getOptions().filesRoot().getPath()).toPath(), true);
|
||||
}
|
||||
|
||||
if (this.uploadsServer() != null) {
|
||||
@@ -144,7 +145,7 @@ public class GitHubWireMockRule extends WireMockMultiServerRule {
|
||||
.captureHeader("Accept")
|
||||
.extractTextBodiesOver(255));
|
||||
|
||||
formatJsonFiles(new File(this.uploadsServer().getOptions().filesRoot().getPath()).toPath());
|
||||
formatTestResources(new File(this.uploadsServer().getOptions().filesRoot().getPath()).toPath(), false);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -157,7 +158,7 @@ public class GitHubWireMockRule extends WireMockMultiServerRule {
|
||||
return server.countRequestsMatching(RequestPatternBuilder.allRequests().build()).getCount();
|
||||
}
|
||||
|
||||
private void formatJsonFiles(Path path) {
|
||||
private void formatTestResources(Path path, boolean isRawServer) {
|
||||
// The more consistent we can make the json output the more meaningful it will be.
|
||||
Gson g = new Gson().newBuilder()
|
||||
.serializeNulls()
|
||||
@@ -176,8 +177,32 @@ public class GitHubWireMockRule extends WireMockMultiServerRule {
|
||||
.create();
|
||||
|
||||
try {
|
||||
Map<String, String> idToIndex = new HashMap<>();
|
||||
|
||||
// Match all the ids to request indexes
|
||||
Files.walk(path).forEach(filePath -> {
|
||||
try {
|
||||
if (filePath.toString().endsWith(".json") && filePath.toString().contains("/mappings/")) {
|
||||
String fileText = new String(Files.readAllBytes(filePath));
|
||||
Object parsedObject = g.fromJson(fileText, Object.class);
|
||||
addMappingId((Map<String, Object>) parsedObject, idToIndex);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Files could not be read: " + filePath.toString(), e);
|
||||
}
|
||||
});
|
||||
|
||||
// Update all
|
||||
Files.walk(path).forEach(filePath -> {
|
||||
try {
|
||||
Map.Entry<String, String> entry = getId(filePath, idToIndex);
|
||||
if (entry != null) {
|
||||
filePath = renameFileToIndex(filePath, entry);
|
||||
}
|
||||
// For raw server, only fix up mapping files
|
||||
if (isRawServer && !filePath.toString().contains("mappings")) {
|
||||
return;
|
||||
}
|
||||
if (filePath.toString().endsWith(".json")) {
|
||||
String fileText = new String(Files.readAllBytes(filePath));
|
||||
// while recording responses we replaced all github calls localhost
|
||||
@@ -193,16 +218,18 @@ public class GitHubWireMockRule extends WireMockMultiServerRule {
|
||||
fileText = fileText.replace(this.uploadsServer().baseUrl(), "https://uploads.github.com");
|
||||
}
|
||||
|
||||
// point bodyFile in the mapping to the renamed body file
|
||||
if (entry != null && filePath.toString().contains("mappings")) {
|
||||
fileText = fileText.replace("-" + entry.getKey(), "-" + entry.getValue());
|
||||
}
|
||||
|
||||
// Can be Array or Map
|
||||
Object parsedObject = g.fromJson(fileText, Object.class);
|
||||
if (parsedObject instanceof Map && filePath.toString().contains("mappings")) {
|
||||
filePath = renameMappingFile(filePath, (Map<String, Object>) parsedObject);
|
||||
}
|
||||
fileText = g.toJson(parsedObject);
|
||||
Files.write(filePath, fileText.getBytes());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Files could not be written", e);
|
||||
throw new RuntimeException("Files could not be written: " + filePath.toString(), e);
|
||||
}
|
||||
});
|
||||
} catch (IOException e) {
|
||||
@@ -210,20 +237,29 @@ public class GitHubWireMockRule extends WireMockMultiServerRule {
|
||||
}
|
||||
}
|
||||
|
||||
private Path renameMappingFile(Path filePath, Map<String, Object> parsedObject) throws IOException {
|
||||
// Shorten the file names
|
||||
// For understandability, rename the files to include the response order
|
||||
Path targetPath = filePath;
|
||||
private void addMappingId(Map<String, Object> parsedObject, Map<String, String> idToIndex) {
|
||||
String id = (String) parsedObject.getOrDefault("id", null);
|
||||
Long insertionIndex = ((Double) parsedObject.getOrDefault("insertionIndex", 0.0)).longValue();
|
||||
long insertionIndex = ((Double) parsedObject.getOrDefault("insertionIndex", 0.0)).longValue();
|
||||
if (id != null && insertionIndex > 0) {
|
||||
String filePathString = filePath.toString();
|
||||
if (filePathString.contains(id)) {
|
||||
targetPath = new File(filePathString.replace(id, insertionIndex.toString() + "-" + id.substring(0, 6)))
|
||||
.toPath();
|
||||
Files.move(filePath, targetPath);
|
||||
idToIndex.put(id, Long.toString(insertionIndex));
|
||||
}
|
||||
}
|
||||
|
||||
private Map.Entry<String, String> getId(Path filePath, Map<String, String> idToIndex) throws IOException {
|
||||
Path targetPath = filePath;
|
||||
String filePathString = filePath.toString();
|
||||
for (Map.Entry<String, String> item : idToIndex.entrySet()) {
|
||||
if (filePathString.contains(item.getKey())) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private Path renameFileToIndex(Path filePath, Map.Entry<String, String> idToIndex) throws IOException {
|
||||
String filePathString = filePath.toString();
|
||||
Path targetPath = new File(filePathString.replace(idToIndex.getKey(), idToIndex.getValue())).toPath();
|
||||
Files.move(filePath, targetPath);
|
||||
|
||||
return targetPath;
|
||||
}
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
{
|
||||
"id": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"name": "repos_github-api-test-org_temp-testratelimithandler_fail",
|
||||
"request": {
|
||||
"url": "/repos/github-api-test-org/temp-testHandler_Fail",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api-test-org_temp-testratelimithandler_fail-574da117-6845-46d8-b2c1-4415546ca670.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": "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/\"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",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3FADC:4EA8C:5E3C5C02"
|
||||
}
|
||||
},
|
||||
"uuid": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-test-org-temp-testHandler_Fail",
|
||||
"requiredScenarioState": "scenario-1-repos-github-api-test-org-temp-testHandler_Fail-2",
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"id": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"name": "repos_github-api-test-org_temp-testratelimithandler_fail",
|
||||
"request": {
|
||||
"url": "/repos/github-api-test-org/temp-testHandler_Fail",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api-test-org_temp-testratelimithandler_fail-3.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": "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/\"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",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3FADC:4EA8C:5E3C5C02"
|
||||
}
|
||||
},
|
||||
"uuid": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-test-org-temp-testHandler_Fail",
|
||||
"requiredScenarioState": "scenario-1-repos-github-api-test-org-temp-testHandler_Fail-2",
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-a60baf84-5b5c-4f86-af3d-cab0d609c7b2.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": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4930",
|
||||
"X-RateLimit-Reset": "{{now 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/\"1cb30f031c67c499473b3aad01c7f7a5\"",
|
||||
"Last-Modified": "Thu, 06 Feb 2020 17:29:39 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3F884:4E941:5E3C5BFC"
|
||||
}
|
||||
},
|
||||
"uuid": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-1.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": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4930",
|
||||
"X-RateLimit-Reset": "{{now 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/\"1cb30f031c67c499473b3aad01c7f7a5\"",
|
||||
"Last-Modified": "Thu, 06 Feb 2020 17:29:39 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3F884:4E941:5E3C5BFC"
|
||||
}
|
||||
},
|
||||
"uuid": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
{
|
||||
"id": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"name": "repos_github-api-test-org_temp-testratelimithandler_fail",
|
||||
"request": {
|
||||
"url": "/repos/github-api-test-org/temp-testHandler_Fail",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api-test-org_temp-testratelimithandler_fail-574da117-6845-46d8-b2c1-4415546ca670.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": "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/\"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",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3FADC:4EA8C:5E3C5C02"
|
||||
}
|
||||
},
|
||||
"uuid": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-test-org-temp-testHandler_Fail",
|
||||
"requiredScenarioState": "scenario-1-repos-github-api-test-org-temp-testHandler_Fail-2",
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"id": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"name": "repos_github-api-test-org_temp-testratelimithandler_fail",
|
||||
"request": {
|
||||
"url": "/repos/github-api-test-org/temp-testHandler_Fail",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api-test-org_temp-testratelimithandler_fail-3.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": "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/\"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",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3FADC:4EA8C:5E3C5C02"
|
||||
}
|
||||
},
|
||||
"uuid": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-test-org-temp-testHandler_Fail",
|
||||
"requiredScenarioState": "scenario-1-repos-github-api-test-org-temp-testHandler_Fail-2",
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-a60baf84-5b5c-4f86-af3d-cab0d609c7b2.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": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4930",
|
||||
"X-RateLimit-Reset": "{{now 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/\"1cb30f031c67c499473b3aad01c7f7a5\"",
|
||||
"Last-Modified": "Thu, 06 Feb 2020 17:29:39 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3F884:4E941:5E3C5BFC"
|
||||
}
|
||||
},
|
||||
"uuid": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-1.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": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4930",
|
||||
"X-RateLimit-Reset": "{{now 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/\"1cb30f031c67c499473b3aad01c7f7a5\"",
|
||||
"Last-Modified": "Thu, 06 Feb 2020 17:29:39 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3F884:4E941:5E3C5BFC"
|
||||
}
|
||||
},
|
||||
"uuid": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
{
|
||||
"id": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"name": "repos_github-api-test-org_temp-testHandler_Wait",
|
||||
"request": {
|
||||
"url": "/repos/github-api-test-org/temp-testHandler_Wait",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api-test-org_temp-testratelimithandler_fail-574da117-6845-46d8-b2c1-4415546ca670.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": "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/\"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",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3FADC:4EA8C:5E3C5C02"
|
||||
}
|
||||
},
|
||||
"uuid": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-test-org-temp-testHandler_Wait",
|
||||
"requiredScenarioState": "scenario-1-repos-github-api-test-org-temp-testHandler_Wait-2",
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"id": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"name": "repos_github-api-test-org_temp-testHandler_Wait",
|
||||
"request": {
|
||||
"url": "/repos/github-api-test-org/temp-testHandler_Wait",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api-test-org_temp-testratelimithandler_fail-3.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": "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/\"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",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3FADC:4EA8C:5E3C5C02"
|
||||
}
|
||||
},
|
||||
"uuid": "574da117-6845-46d8-b2c1-4415546ca670",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-test-org-temp-testHandler_Wait",
|
||||
"requiredScenarioState": "scenario-1-repos-github-api-test-org-temp-testHandler_Wait-2",
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-a60baf84-5b5c-4f86-af3d-cab0d609c7b2.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": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4930",
|
||||
"X-RateLimit-Reset": "{{now 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/\"1cb30f031c67c499473b3aad01c7f7a5\"",
|
||||
"Last-Modified": "Thu, 06 Feb 2020 17:29:39 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3F884:4E941:5E3C5BFC"
|
||||
}
|
||||
},
|
||||
"uuid": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-1.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": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4930",
|
||||
"X-RateLimit-Reset": "{{now 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/\"1cb30f031c67c499473b3aad01c7f7a5\"",
|
||||
"Last-Modified": "Thu, 06 Feb 2020 17:29:39 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3F884:4E941:5E3C5BFC"
|
||||
}
|
||||
},
|
||||
"uuid": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-a60baf84-5b5c-4f86-af3d-cab0d609c7b2.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": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4930",
|
||||
"X-RateLimit-Reset": "{{now 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/\"1cb30f031c67c499473b3aad01c7f7a5\"",
|
||||
"Last-Modified": "Thu, 06 Feb 2020 17:29:39 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3F884:4E941:5E3C5BFC"
|
||||
}
|
||||
},
|
||||
"uuid": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-1.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": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4930",
|
||||
"X-RateLimit-Reset": "{{now 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/\"1cb30f031c67c499473b3aad01c7f7a5\"",
|
||||
"Last-Modified": "Thu, 06 Feb 2020 17:29:39 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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:3F884:4E941:5E3C5BFC"
|
||||
}
|
||||
},
|
||||
"uuid": "a60baf84-5b5c-4f86-af3d-cab0d609c7b2",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "db8eacb0-947c-4677-9780-1c1d1b8383eb",
|
||||
"name": "repos_github-api_github-api",
|
||||
"request": {
|
||||
"url": "/repos/github-api/github-api",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api_github-api-db8eacb0-947c-4677-9780-1c1d1b8383eb.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:28:28 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4352",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"c1a01d01a6354d93b3cc6098e0b2d047\"",
|
||||
"Last-Modified": "Fri, 25 Oct 2019 01:32:16 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, Retry-After, 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": "CAD0:98FF:9ED63E:BB8EED:5DB3A13B"
|
||||
}
|
||||
},
|
||||
"uuid": "db8eacb0-947c-4677-9780-1c1d1b8383eb",
|
||||
"persistent": true,
|
||||
"insertionIndex": 2
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "db8eacb0-947c-4677-9780-1c1d1b8383eb",
|
||||
"name": "repos_github-api_github-api",
|
||||
"request": {
|
||||
"url": "/repos/github-api/github-api",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api_github-api-2.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:28:28 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4352",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"c1a01d01a6354d93b3cc6098e0b2d047\"",
|
||||
"Last-Modified": "Fri, 25 Oct 2019 01:32:16 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, Retry-After, 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": "CAD0:98FF:9ED63E:BB8EED:5DB3A13B"
|
||||
}
|
||||
},
|
||||
"uuid": "db8eacb0-947c-4677-9780-1c1d1b8383eb",
|
||||
"persistent": true,
|
||||
"insertionIndex": 2
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
{
|
||||
"id": "6408bcc8-3cd2-4e1a-a25b-a9fdc81972e8",
|
||||
"name": "repos_github-api_github-api_git_blobs_a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"request": {
|
||||
"url": "/repos/github-api/github-api/git/blobs/a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "application/vnd.github.v3.raw"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api_github-api_git_blobs_a12243f2fc5b8c2ba47dd677d0b0c7583539584d-6408bcc8-3cd2-4e1a-a25b-a9fdc81972e8.txt",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:28:28 GMT",
|
||||
"Content-Type": "text/plain; charset=iso-8859-1",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4351",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"ffa971e80b5300a0fc0164a3114acb0f\"",
|
||||
"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": "",
|
||||
"X-GitHub-Media-Type": "github.v3; param=VERSION.raw",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAD0:98FF:9ED64E:BB8F10:5DB3A13C"
|
||||
}
|
||||
},
|
||||
"uuid": "6408bcc8-3cd2-4e1a-a25b-a9fdc81972e8",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-github-api-git-blobs-a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"requiredScenarioState": "Started",
|
||||
"newScenarioState": "scenario-1-repos-github-api-github-api-git-blobs-a12243f2fc5b8c2ba47dd677d0b0c7583539584d-2",
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"id": "6408bcc8-3cd2-4e1a-a25b-a9fdc81972e8",
|
||||
"name": "repos_github-api_github-api_git_blobs_a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"request": {
|
||||
"url": "/repos/github-api/github-api/git/blobs/a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "application/vnd.github.v3.raw"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api_github-api_git_blobs_a12243f2fc5b8c2ba47dd677d0b0c7583539584d-3.txt",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:28:28 GMT",
|
||||
"Content-Type": "text/plain; charset=iso-8859-1",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4351",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"ffa971e80b5300a0fc0164a3114acb0f\"",
|
||||
"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": "",
|
||||
"X-GitHub-Media-Type": "github.v3; param=VERSION.raw",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAD0:98FF:9ED64E:BB8F10:5DB3A13C"
|
||||
}
|
||||
},
|
||||
"uuid": "6408bcc8-3cd2-4e1a-a25b-a9fdc81972e8",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-github-api-git-blobs-a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"requiredScenarioState": "Started",
|
||||
"newScenarioState": "scenario-1-repos-github-api-github-api-git-blobs-a12243f2fc5b8c2ba47dd677d0b0c7583539584d-2",
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
{
|
||||
"id": "72e1ca23-1f03-45b5-90a2-e6dd6467b2f9",
|
||||
"name": "repos_github-api_github-api_git_blobs_a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"request": {
|
||||
"url": "/repos/github-api/github-api/git/blobs/a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api_github-api_git_blobs_a12243f2fc5b8c2ba47dd677d0b0c7583539584d-72e1ca23-1f03-45b5-90a2-e6dd6467b2f9.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:28:28 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4350",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"89459bc4c8c6c982a48ccd6cb6060fff\"",
|
||||
"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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAD0:98FF:9ED65A:BB8F1C:5DB3A13C"
|
||||
}
|
||||
},
|
||||
"uuid": "72e1ca23-1f03-45b5-90a2-e6dd6467b2f9",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-github-api-git-blobs-a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"requiredScenarioState": "scenario-1-repos-github-api-github-api-git-blobs-a12243f2fc5b8c2ba47dd677d0b0c7583539584d-2",
|
||||
"insertionIndex": 4
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"id": "72e1ca23-1f03-45b5-90a2-e6dd6467b2f9",
|
||||
"name": "repos_github-api_github-api_git_blobs_a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"request": {
|
||||
"url": "/repos/github-api/github-api/git/blobs/a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_github-api_github-api_git_blobs_a12243f2fc5b8c2ba47dd677d0b0c7583539584d-4.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:28:28 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4350",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"89459bc4c8c6c982a48ccd6cb6060fff\"",
|
||||
"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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAD0:98FF:9ED65A:BB8F1C:5DB3A13C"
|
||||
}
|
||||
},
|
||||
"uuid": "72e1ca23-1f03-45b5-90a2-e6dd6467b2f9",
|
||||
"persistent": true,
|
||||
"scenarioName": "scenario-1-repos-github-api-github-api-git-blobs-a12243f2fc5b8c2ba47dd677d0b0c7583539584d",
|
||||
"requiredScenarioState": "scenario-1-repos-github-api-github-api-git-blobs-a12243f2fc5b8c2ba47dd677d0b0c7583539584d-2",
|
||||
"insertionIndex": 4
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "8996d059-e95f-4604-a534-b734e99d9e15",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-8996d059-e95f-4604-a534-b734e99d9e15.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:28:27 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4354",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"8c3d3dcf6fc5f9edaf26c902295396e5\"",
|
||||
"Last-Modified": "Tue, 24 Sep 2019 19:32:29 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAD0:98FF:9ED62C:BB8EE6:5DB3A13B"
|
||||
}
|
||||
},
|
||||
"uuid": "8996d059-e95f-4604-a534-b734e99d9e15",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "8996d059-e95f-4604-a534-b734e99d9e15",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-1.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:28:27 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4354",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"8c3d3dcf6fc5f9edaf26c902295396e5\"",
|
||||
"Last-Modified": "Tue, 24 Sep 2019 19:32:29 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAD0:98FF:9ED62C:BB8EE6:5DB3A13B"
|
||||
}
|
||||
},
|
||||
"uuid": "8996d059-e95f-4604-a534-b734e99d9e15",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "448d3f92-8488-4c5c-a81b-ca22a6039b39",
|
||||
"name": "repos_jenkinsci_jenkins",
|
||||
"request": {
|
||||
"url": "/repos/jenkinsci/jenkins",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_jenkinsci_jenkins-448d3f92-8488-4c5c-a81b-ca22a6039b39.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:32 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4434",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"bc93de689b79708d9501fd02bc1f7696\"",
|
||||
"Last-Modified": "Sat, 26 Oct 2019 01:07:22 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, Retry-After, 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": "CA8F:3649:E327A7:1091CF2:5DB3A103"
|
||||
}
|
||||
},
|
||||
"uuid": "448d3f92-8488-4c5c-a81b-ca22a6039b39",
|
||||
"persistent": true,
|
||||
"insertionIndex": 2
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "448d3f92-8488-4c5c-a81b-ca22a6039b39",
|
||||
"name": "repos_jenkinsci_jenkins",
|
||||
"request": {
|
||||
"url": "/repos/jenkinsci/jenkins",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_jenkinsci_jenkins-2.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:32 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4434",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"bc93de689b79708d9501fd02bc1f7696\"",
|
||||
"Last-Modified": "Sat, 26 Oct 2019 01:07:22 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, Retry-After, 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": "CA8F:3649:E327A7:1091CF2:5DB3A103"
|
||||
}
|
||||
},
|
||||
"uuid": "448d3f92-8488-4c5c-a81b-ca22a6039b39",
|
||||
"persistent": true,
|
||||
"insertionIndex": 2
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "7e1b6c60-f829-4e6a-a1e5-089cebc4e1c7",
|
||||
"name": "repos_jenkinsci_jenkins_contents_core",
|
||||
"request": {
|
||||
"url": "/repos/jenkinsci/jenkins/contents/core",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_jenkinsci_jenkins_contents_core-7e1b6c60-f829-4e6a-a1e5-089cebc4e1c7.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:32 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4433",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"64e666d1755b0fc334c6c5d6a7ddeb2948f8313b\"",
|
||||
"Last-Modified": "Sat, 26 Oct 2019 01:07:22 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CA8F:3649:E327B9:1091D1B:5DB3A104"
|
||||
}
|
||||
},
|
||||
"uuid": "7e1b6c60-f829-4e6a-a1e5-089cebc4e1c7",
|
||||
"persistent": true,
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "7e1b6c60-f829-4e6a-a1e5-089cebc4e1c7",
|
||||
"name": "repos_jenkinsci_jenkins_contents_core",
|
||||
"request": {
|
||||
"url": "/repos/jenkinsci/jenkins/contents/core",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_jenkinsci_jenkins_contents_core-3.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:32 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4433",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"64e666d1755b0fc334c6c5d6a7ddeb2948f8313b\"",
|
||||
"Last-Modified": "Sat, 26 Oct 2019 01:07:22 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CA8F:3649:E327B9:1091D1B:5DB3A104"
|
||||
}
|
||||
},
|
||||
"uuid": "7e1b6c60-f829-4e6a-a1e5-089cebc4e1c7",
|
||||
"persistent": true,
|
||||
"insertionIndex": 3
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "0566ab8b-d260-47cb-a6e6-fafa6fc2836c",
|
||||
"name": "repos_jenkinsci_jenkins_contents_core_src",
|
||||
"request": {
|
||||
"url": "/repos/jenkinsci/jenkins/contents/core/src?ref=master",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_jenkinsci_jenkins_contents_core_src-0566ab8b-d260-47cb-a6e6-fafa6fc2836c.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:32 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4432",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"64e666d1755b0fc334c6c5d6a7ddeb2948f8313b\"",
|
||||
"Last-Modified": "Sat, 26 Oct 2019 01:07:22 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CA8F:3649:E327C7:1091D2B:5DB3A104"
|
||||
}
|
||||
},
|
||||
"uuid": "0566ab8b-d260-47cb-a6e6-fafa6fc2836c",
|
||||
"persistent": true,
|
||||
"insertionIndex": 4
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "0566ab8b-d260-47cb-a6e6-fafa6fc2836c",
|
||||
"name": "repos_jenkinsci_jenkins_contents_core_src",
|
||||
"request": {
|
||||
"url": "/repos/jenkinsci/jenkins/contents/core/src?ref=master",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "repos_jenkinsci_jenkins_contents_core_src-4.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:32 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4432",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"64e666d1755b0fc334c6c5d6a7ddeb2948f8313b\"",
|
||||
"Last-Modified": "Sat, 26 Oct 2019 01:07:22 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CA8F:3649:E327C7:1091D2B:5DB3A104"
|
||||
}
|
||||
},
|
||||
"uuid": "0566ab8b-d260-47cb-a6e6-fafa6fc2836c",
|
||||
"persistent": true,
|
||||
"insertionIndex": 4
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "0cdbd9dc-1c6f-42f5-a4b5-9d5472b2a56b",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-0cdbd9dc-1c6f-42f5-a4b5-9d5472b2a56b.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:31 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4436",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"8c3d3dcf6fc5f9edaf26c902295396e5\"",
|
||||
"Last-Modified": "Tue, 24 Sep 2019 19:32:29 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CA8F:3649:E32786:1091CE0:5DB3A103"
|
||||
}
|
||||
},
|
||||
"uuid": "0cdbd9dc-1c6f-42f5-a4b5-9d5472b2a56b",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"id": "8636c5bc-5f1d-45cf-8182-9e7926d5231e",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-8636c5bc-5f1d-45cf-8182-9e7926d5231e.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:46 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4398",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"8c3d3dcf6fc5f9edaf26c902295396e5\"",
|
||||
"Last-Modified": "Tue, 24 Sep 2019 19:32:29 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAB4:5F2B:EE3A33:1187E2D:5DB3A112"
|
||||
}
|
||||
},
|
||||
"uuid": "8636c5bc-5f1d-45cf-8182-9e7926d5231e",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "8636c5bc-5f1d-45cf-8182-9e7926d5231e",
|
||||
"name": "user",
|
||||
"request": {
|
||||
"url": "/user",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user-1.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:46 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4398",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"8c3d3dcf6fc5f9edaf26c902295396e5\"",
|
||||
"Last-Modified": "Tue, 24 Sep 2019 19:32:29 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": "",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAB4:5F2B:EE3A33:1187E2D:5DB3A112"
|
||||
}
|
||||
},
|
||||
"uuid": "8636c5bc-5f1d-45cf-8182-9e7926d5231e",
|
||||
"persistent": true,
|
||||
"insertionIndex": 1
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
{
|
||||
"id": "29d7ac4b-573b-4044-a2b8-470ac1bf6335",
|
||||
"name": "user_memberships_orgs",
|
||||
"request": {
|
||||
"url": "/user/memberships/orgs",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user_memberships_orgs-29d7ac4b-573b-4044-a2b8-470ac1bf6335.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:46 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4396",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"421157c0a61f3834ed23839360e0441a\"",
|
||||
"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": "admin:org, read:org, repo, user, write:org",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAB4:5F2B:EE3A4F:1187E42:5DB3A112"
|
||||
}
|
||||
},
|
||||
"uuid": "29d7ac4b-573b-4044-a2b8-470ac1bf6335",
|
||||
"persistent": true,
|
||||
"insertionIndex": 2
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"id": "29d7ac4b-573b-4044-a2b8-470ac1bf6335",
|
||||
"name": "user_memberships_orgs",
|
||||
"request": {
|
||||
"url": "/user/memberships/orgs",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"Accept": {
|
||||
"equalTo": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"bodyFileName": "user_memberships_orgs-2.json",
|
||||
"headers": {
|
||||
"Date": "Sat, 26 Oct 2019 01:27:46 GMT",
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
"Server": "GitHub.com",
|
||||
"Status": "200 OK",
|
||||
"X-RateLimit-Limit": "5000",
|
||||
"X-RateLimit-Remaining": "4396",
|
||||
"X-RateLimit-Reset": "1572055286",
|
||||
"Cache-Control": "private, max-age=60, s-maxage=60",
|
||||
"Vary": [
|
||||
"Accept, Authorization, Cookie, X-GitHub-OTP",
|
||||
"Accept-Encoding"
|
||||
],
|
||||
"ETag": "W/\"421157c0a61f3834ed23839360e0441a\"",
|
||||
"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": "admin:org, read:org, repo, user, write:org",
|
||||
"X-GitHub-Media-Type": "unknown, github.v3",
|
||||
"Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, 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": "CAB4:5F2B:EE3A4F:1187E42:5DB3A112"
|
||||
}
|
||||
},
|
||||
"uuid": "29d7ac4b-573b-4044-a2b8-470ac1bf6335",
|
||||
"persistent": true,
|
||||
"insertionIndex": 2
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user