Fixes after review, added:

* ResultCode class tests
* More integration test
* WireMock stubs( wrong repo, good repo and user, forbidden - when github blocks api)
* add log to shouldReturnOKInfoAboutOwnerRepoTest
* small fixes
This commit is contained in:
Mariusz Pacek committed 2018-03-17 13:38:12 +01:00
1 parent 84e56fe2ba
commit 324951ab93
10 files changed
+492 -28

No files matched your search

+13
View File
@@ -46,6 +46,19 @@
<artifactId>jackson-annotations</artifactId>
<version>${jackson-annotations.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<version>${wiremock.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
@@ -8,7 +8,8 @@ public enum Constant {
ACCEPT("Accept"),
USER_AGENT("User-Agent"),
CONFIG_YAML("config.yaml"),
CLIENT_POOL_SIZE("clientPoolSize"), CLIENT_TIMEOUT("clientTimeout");
CLIENT_POOL_SIZE("clientPoolSize"),
CLIENT_TIMEOUT("clientTimeout");
private final String prop;
@@ -18,9 +18,10 @@ import static edu.allegro.exercise.Constant.*;
public class RepositoryInfo {
public static final String GITHUB_USER_BASIC = "githubUserBasic";
private static final String GITHUB_USER_BASIC = "githubUserBasic";
private static final String AUTHORIZATION = "Authorization";
private static final String BASIC = "Basic ";
private static final String REPOS = "/repos/";
private final HttpClient client;
private final String resourceLink;
private final Headers headers;
@@ -31,6 +32,7 @@ public class RepositoryInfo {
this.client = initHttpClient(poolSize, timeout);
this.resourceLink = (String) configuration.get(GITHUB_REPOSITORY_OWNER_INFO.getName());
this.headers = setHeaders(configuration);
}
private HttpClient initHttpClient(int poolSize, int timeout) throws Exception {
@@ -44,7 +46,7 @@ public class RepositoryInfo {
}
public Promise<ReceivedResponse> getInfo(String owner, String repo) throws URISyntaxException {
String url = resourceLink + owner + "/" + repo;
String url = resourceLink + REPOS + owner + "/" + repo;
return client.get(new URI(url),
this::setHeaders);
@@ -0,0 +1,44 @@
package edu.allegro.exercise;
import edu.allegro.exercise.model.github.ErrorResponse;
import org.junit.Test;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import static org.junit.Assert.assertTrue;
public class ResultCodesTest {
@Test
public void errorResponseShouldBe404Test() {
ErrorResponse errorResponse = ResultCodes.fromCode(404);
assertTrue("Github error server 404 should be mapped on 404 error response", errorResponse.getStatusCode() == 404);
}
@Test
public void errorResponseShouldBe400Test() {
ErrorResponse errorResponse = ResultCodes.fromCode(403);
assertTrue("Github error server 403 should be mapped on 400 error response", errorResponse.getStatusCode() == 403);
}
@Test
public void errorResponseShouldBe500Test() {
ErrorResponse errorResponse = ResultCodes.fromCode(500);
assertTrue("Github error server 500 should be mapped on 500 error response", errorResponse.getStatusCode() == 500);
}
@Test
public void anyErrorDiffrentThanAboveShouldBePresentedAs500() {
Set<Integer> notUsed = new HashSet<>(Arrays.asList(400, 403, 404));
for (int i = 100; i < 511; i++) {
if (!notUsed.contains(i)) {
ErrorResponse errorResponse = ResultCodes.fromCode(i);
assertTrue("Github error server 404 should be mapped on 404 error response", errorResponse.getStatusCode() == 500);
}
}
}
}
@@ -6,7 +6,7 @@ import java.util.Map;
public class GetUserRepoInfoTest {
private static final Map<String, Object> CONFIGURATION = new HashMap<String, Object>() {{
put("githubResourceV3", "https://api.github.com/repos/");
put("githubResourceV3", "http://localhost:1111");
put("githubUserAgent", "Allegro-exercise");
put("githubAccept", "application/vnd.github.v3+json");
put("githubUserBasic", "YWxsZWdyb0V4ZXJjaXNlOkNpSHVuQmFIaWR1andpNg==");
@@ -1,71 +1,91 @@
package edu.allegro.exercise.handlers;
import com.github.tomakehurst.wiremock.common.Slf4jNotifier;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import io.netty.handler.codec.http.HttpResponseStatus;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ratpack.http.client.ReceivedResponse;
import ratpack.server.RatpackServer;
import ratpack.server.ServerConfigBuilder;
import ratpack.test.embed.EmbeddedApp;
import ratpack.test.http.TestHttpClient;
public class IntegrationTest {
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
public class IntegrationTest {
private static final Logger log = LoggerFactory.getLogger(IntegrationTest.class);
private static final String GITHUB_OWNER = "sinu0";
private static final String GIHTUB_REPO = "SiSPD";
private static final String GIHTUB_REPO_NOK = "SiSPDs";
private static final String GITHUB_REPO_FORBIDDEN = "Forbidden";
private final EmbeddedApp app;
private EmbeddedApp app;
@Rule
public WireMockRule rule = new WireMockRule(wireMockConfig().port(1111).notifier(new Slf4jNotifier(true)));
@Before
public void setUp() throws Exception {
public IntegrationTest() throws Exception {
rule.start();
GetUserRepoInfoService getUserRepoInfoService = GetUserRepoInfoTest.userRepoTest();
app = EmbeddedApp.fromServer(RatpackServer.of(ratpackServerSpec ->
ratpackServerSpec
.serverConfig(ServerConfigBuilder::build)
.handlers(getUserRepoInfoService.create())));
}
@After
public void endTests() throws Exception {
rule.stop();
app.getServer().stop();
app = null;
}
@Test
public void shouldReturnOKInfoAboutOwnerRepo() throws Exception {
public void shouldReturnForbiddenTest() throws Exception {
app.test(this::githubShouldReturnForbiddenAppShouldReturn403);
}
@Test
public void shouldReturnOKInfoAboutOwnerRepoTest() throws Exception {
app.test(this::shouldReturnOKInfoAboutOwnerRepo);
}
@Test
public void shouldReturnNOKInfoAboutOwnerRepo() throws Exception {
app.test(this::shouldReturnNOKInfoAboutOwnerRepo);
public void forNotExistingRepoShouldReturn404Test() throws Exception {
app.test(this::forNotExistingReposhouldReturn404);
}
@Test
public void WhenGithubShutdownShouldReturn500OnGithubUnavailabilityTest() throws Exception {
rule.stop();
app.test(this::forNotExistingReposhouldReturn404);
}
private void githubShouldReturnForbiddenAppShouldReturn403(TestHttpClient testHttpClient) {
ReceivedResponse receivedResponse = testHttpClient.get(String.format("/repositories/%s/%s", GITHUB_OWNER, GITHUB_REPO_FORBIDDEN));
Assert.assertTrue("Response should be nok for owner: " + GITHUB_OWNER + " and for repo: " + GITHUB_REPO_FORBIDDEN, receivedResponse.getStatusCode() == HttpResponseStatus.FORBIDDEN.code());
}
private void shouldReturnOKInfoAboutOwnerRepo(TestHttpClient testHttpClient) {
ReceivedResponse receivedResponse = testHttpClient.get(String.format("/repositories/%s/%s", GITHUB_OWNER, GIHTUB_REPO));
responseShouldBeValid(receivedResponse);
logResponse(receivedResponse);
Assert.assertTrue("Response should be ok for owner: " + GITHUB_OWNER + " and for repo: " + GIHTUB_REPO, receivedResponse.getStatusCode() == HttpResponseStatus.OK.code());
}
private void shouldReturnNOKInfoAboutOwnerRepo(TestHttpClient testHttpClient) {
private void forNotExistingReposhouldReturn404(TestHttpClient testHttpClient) {
ReceivedResponse receivedResponse = testHttpClient.get(String.format("/repositories/%s/%s", GITHUB_OWNER, GIHTUB_REPO_NOK));
responseShouldBeNotValid(receivedResponse);
Assert.assertTrue("Response should be nok for owner: " + GITHUB_OWNER + " and for repo: " + GIHTUB_REPO_NOK, receivedResponse.getStatusCode() != HttpResponseStatus.OK.code());
}
private void responseShouldBeValid(ReceivedResponse receivedResponse) {
System.out.println(receivedResponse.getHeaders().asMultiValueMap().toString());
System.out.println(receivedResponse.getBody().getText());
Assert.assertTrue("Response should be ok for owner:" + GITHUB_OWNER + " and for repo: " + GIHTUB_REPO, receivedResponse.getStatusCode() == HttpResponseStatus.OK.code());
private void logResponse(ReceivedResponse response) {
log.info(response.getHeaders().asMultiValueMap().toString());
log.info(response.getStatus().toString());
log.info(response.getBody().getText());
}
private void responseShouldBeNotValid(ReceivedResponse receivedResponse) {
System.out.println(receivedResponse.getHeaders().asMultiValueMap().toString());
System.out.println(receivedResponse.getBody().getText());
Assert.assertTrue("Response should be nok for owner:" + GITHUB_OWNER + " and for repo: " + GIHTUB_REPO_NOK, receivedResponse.getStatusCode() != HttpResponseStatus.OK.code());
}
}
@@ -0,0 +1,275 @@
{
"id": 6338269,
"name": "SiSPD",
"full_name": "sinu0/SiSPD",
"owner": {
"login": "sinu0",
"id": 1923291,
"avatar_url": "https://avatars1.githubusercontent.com/u/1923291?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/sinu0",
"html_url": "https://github.com/sinu0",
"followers_url": "https://api.github.com/users/sinu0/followers",
"following_url": "https://api.github.com/users/sinu0/following{/other_user}",
"gists_url": "https://api.github.com/users/sinu0/gists{/gist_id}",
"starred_url": "https://api.github.com/users/sinu0/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/sinu0/subscriptions",
"organizations_url": "https://api.github.com/users/sinu0/orgs",
"repos_url": "https://api.github.com/users/sinu0/repos",
"events_url": "https://api.github.com/users/sinu0/events{/privacy}",
"received_events_url": "https://api.github.com/users/sinu0/received_events",
"type": "User",
"site_admin": false
},
"private": false,
"html_url": "https://github.com/sinu0/SiSPD",
"description": "Symulacja i sterowanie procesów dyskretnych - projekt.",
"fork": true,
"url": "https://api.github.com/repos/sinu0/SiSPD",
"forks_url": "https://api.github.com/repos/sinu0/SiSPD/forks",
"keys_url": "https://api.github.com/repos/sinu0/SiSPD/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/sinu0/SiSPD/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/sinu0/SiSPD/teams",
"hooks_url": "https://api.github.com/repos/sinu0/SiSPD/hooks",
"issue_events_url": "https://api.github.com/repos/sinu0/SiSPD/issues/events{/number}",
"events_url": "https://api.github.com/repos/sinu0/SiSPD/events",
"assignees_url": "https://api.github.com/repos/sinu0/SiSPD/assignees{/user}",
"branches_url": "https://api.github.com/repos/sinu0/SiSPD/branches{/branch}",
"tags_url": "https://api.github.com/repos/sinu0/SiSPD/tags",
"blobs_url": "https://api.github.com/repos/sinu0/SiSPD/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/sinu0/SiSPD/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/sinu0/SiSPD/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/sinu0/SiSPD/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/sinu0/SiSPD/statuses/{sha}",
"languages_url": "https://api.github.com/repos/sinu0/SiSPD/languages",
"stargazers_url": "https://api.github.com/repos/sinu0/SiSPD/stargazers",
"contributors_url": "https://api.github.com/repos/sinu0/SiSPD/contributors",
"subscribers_url": "https://api.github.com/repos/sinu0/SiSPD/subscribers",
"subscription_url": "https://api.github.com/repos/sinu0/SiSPD/subscription",
"commits_url": "https://api.github.com/repos/sinu0/SiSPD/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/sinu0/SiSPD/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/sinu0/SiSPD/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/sinu0/SiSPD/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/sinu0/SiSPD/contents/{+path}",
"compare_url": "https://api.github.com/repos/sinu0/SiSPD/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/sinu0/SiSPD/merges",
"archive_url": "https://api.github.com/repos/sinu0/SiSPD/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/sinu0/SiSPD/downloads",
"issues_url": "https://api.github.com/repos/sinu0/SiSPD/issues{/number}",
"pulls_url": "https://api.github.com/repos/sinu0/SiSPD/pulls{/number}",
"milestones_url": "https://api.github.com/repos/sinu0/SiSPD/milestones{/number}",
"notifications_url": "https://api.github.com/repos/sinu0/SiSPD/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/sinu0/SiSPD/labels{/name}",
"releases_url": "https://api.github.com/repos/sinu0/SiSPD/releases{/id}",
"deployments_url": "https://api.github.com/repos/sinu0/SiSPD/deployments",
"created_at": "2012-10-22T16:19:46Z",
"updated_at": "2013-01-12T19:04:16Z",
"pushed_at": "2012-10-22T16:18:13Z",
"git_url": "git://github.com/sinu0/SiSPD.git",
"ssh_url": "git@github.com:sinu0/SiSPD.git",
"clone_url": "https://github.com/sinu0/SiSPD.git",
"svn_url": "https://github.com/sinu0/SiSPD",
"homepage": null,
"size": 7064,
"stargazers_count": 0,
"watchers_count": 0,
"language": null,
"has_issues": false,
"has_projects": true,
"has_downloads": true,
"has_wiki": false,
"has_pages": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"open_issues_count": 0,
"license": null,
"forks": 0,
"open_issues": 0,
"watchers": 0,
"default_branch": "master",
"parent": {
"id": 6212829,
"name": "SiSPD",
"full_name": "wojciechcibor/SiSPD",
"owner": {
"login": "wojciechcibor",
"id": 2141316,
"avatar_url": "https://avatars2.githubusercontent.com/u/2141316?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/wojciechcibor",
"html_url": "https://github.com/wojciechcibor",
"followers_url": "https://api.github.com/users/wojciechcibor/followers",
"following_url": "https://api.github.com/users/wojciechcibor/following{/other_user}",
"gists_url": "https://api.github.com/users/wojciechcibor/gists{/gist_id}",
"starred_url": "https://api.github.com/users/wojciechcibor/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/wojciechcibor/subscriptions",
"organizations_url": "https://api.github.com/users/wojciechcibor/orgs",
"repos_url": "https://api.github.com/users/wojciechcibor/repos",
"events_url": "https://api.github.com/users/wojciechcibor/events{/privacy}",
"received_events_url": "https://api.github.com/users/wojciechcibor/received_events",
"type": "User",
"site_admin": false
},
"private": false,
"html_url": "https://github.com/wojciechcibor/SiSPD",
"description": "Symulacja i sterowanie procesów dyskretnych - projekt.",
"fork": false,
"url": "https://api.github.com/repos/wojciechcibor/SiSPD",
"forks_url": "https://api.github.com/repos/wojciechcibor/SiSPD/forks",
"keys_url": "https://api.github.com/repos/wojciechcibor/SiSPD/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/wojciechcibor/SiSPD/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/wojciechcibor/SiSPD/teams",
"hooks_url": "https://api.github.com/repos/wojciechcibor/SiSPD/hooks",
"issue_events_url": "https://api.github.com/repos/wojciechcibor/SiSPD/issues/events{/number}",
"events_url": "https://api.github.com/repos/wojciechcibor/SiSPD/events",
"assignees_url": "https://api.github.com/repos/wojciechcibor/SiSPD/assignees{/user}",
"branches_url": "https://api.github.com/repos/wojciechcibor/SiSPD/branches{/branch}",
"tags_url": "https://api.github.com/repos/wojciechcibor/SiSPD/tags",
"blobs_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/wojciechcibor/SiSPD/statuses/{sha}",
"languages_url": "https://api.github.com/repos/wojciechcibor/SiSPD/languages",
"stargazers_url": "https://api.github.com/repos/wojciechcibor/SiSPD/stargazers",
"contributors_url": "https://api.github.com/repos/wojciechcibor/SiSPD/contributors",
"subscribers_url": "https://api.github.com/repos/wojciechcibor/SiSPD/subscribers",
"subscription_url": "https://api.github.com/repos/wojciechcibor/SiSPD/subscription",
"commits_url": "https://api.github.com/repos/wojciechcibor/SiSPD/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/wojciechcibor/SiSPD/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/wojciechcibor/SiSPD/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/wojciechcibor/SiSPD/contents/{+path}",
"compare_url": "https://api.github.com/repos/wojciechcibor/SiSPD/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/wojciechcibor/SiSPD/merges",
"archive_url": "https://api.github.com/repos/wojciechcibor/SiSPD/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/wojciechcibor/SiSPD/downloads",
"issues_url": "https://api.github.com/repos/wojciechcibor/SiSPD/issues{/number}",
"pulls_url": "https://api.github.com/repos/wojciechcibor/SiSPD/pulls{/number}",
"milestones_url": "https://api.github.com/repos/wojciechcibor/SiSPD/milestones{/number}",
"notifications_url": "https://api.github.com/repos/wojciechcibor/SiSPD/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/wojciechcibor/SiSPD/labels{/name}",
"releases_url": "https://api.github.com/repos/wojciechcibor/SiSPD/releases{/id}",
"deployments_url": "https://api.github.com/repos/wojciechcibor/SiSPD/deployments",
"created_at": "2012-10-14T11:03:28Z",
"updated_at": "2013-10-20T12:47:33Z",
"pushed_at": "2012-10-22T21:09:02Z",
"git_url": "git://github.com/wojciechcibor/SiSPD.git",
"ssh_url": "git@github.com:wojciechcibor/SiSPD.git",
"clone_url": "https://github.com/wojciechcibor/SiSPD.git",
"svn_url": "https://github.com/wojciechcibor/SiSPD",
"homepage": null,
"size": 7297,
"stargazers_count": 2,
"watchers_count": 2,
"language": null,
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": false,
"has_pages": false,
"forks_count": 1,
"mirror_url": null,
"archived": false,
"open_issues_count": 0,
"license": null,
"forks": 1,
"open_issues": 0,
"watchers": 2,
"default_branch": "master"
},
"source": {
"id": 6212829,
"name": "SiSPD",
"full_name": "wojciechcibor/SiSPD",
"owner": {
"login": "wojciechcibor",
"id": 2141316,
"avatar_url": "https://avatars2.githubusercontent.com/u/2141316?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/wojciechcibor",
"html_url": "https://github.com/wojciechcibor",
"followers_url": "https://api.github.com/users/wojciechcibor/followers",
"following_url": "https://api.github.com/users/wojciechcibor/following{/other_user}",
"gists_url": "https://api.github.com/users/wojciechcibor/gists{/gist_id}",
"starred_url": "https://api.github.com/users/wojciechcibor/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/wojciechcibor/subscriptions",
"organizations_url": "https://api.github.com/users/wojciechcibor/orgs",
"repos_url": "https://api.github.com/users/wojciechcibor/repos",
"events_url": "https://api.github.com/users/wojciechcibor/events{/privacy}",
"received_events_url": "https://api.github.com/users/wojciechcibor/received_events",
"type": "User",
"site_admin": false
},
"private": false,
"html_url": "https://github.com/wojciechcibor/SiSPD",
"description": "Symulacja i sterowanie procesów dyskretnych - projekt.",
"fork": false,
"url": "https://api.github.com/repos/wojciechcibor/SiSPD",
"forks_url": "https://api.github.com/repos/wojciechcibor/SiSPD/forks",
"keys_url": "https://api.github.com/repos/wojciechcibor/SiSPD/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/wojciechcibor/SiSPD/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/wojciechcibor/SiSPD/teams",
"hooks_url": "https://api.github.com/repos/wojciechcibor/SiSPD/hooks",
"issue_events_url": "https://api.github.com/repos/wojciechcibor/SiSPD/issues/events{/number}",
"events_url": "https://api.github.com/repos/wojciechcibor/SiSPD/events",
"assignees_url": "https://api.github.com/repos/wojciechcibor/SiSPD/assignees{/user}",
"branches_url": "https://api.github.com/repos/wojciechcibor/SiSPD/branches{/branch}",
"tags_url": "https://api.github.com/repos/wojciechcibor/SiSPD/tags",
"blobs_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/wojciechcibor/SiSPD/statuses/{sha}",
"languages_url": "https://api.github.com/repos/wojciechcibor/SiSPD/languages",
"stargazers_url": "https://api.github.com/repos/wojciechcibor/SiSPD/stargazers",
"contributors_url": "https://api.github.com/repos/wojciechcibor/SiSPD/contributors",
"subscribers_url": "https://api.github.com/repos/wojciechcibor/SiSPD/subscribers",
"subscription_url": "https://api.github.com/repos/wojciechcibor/SiSPD/subscription",
"commits_url": "https://api.github.com/repos/wojciechcibor/SiSPD/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/wojciechcibor/SiSPD/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/wojciechcibor/SiSPD/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/wojciechcibor/SiSPD/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/wojciechcibor/SiSPD/contents/{+path}",
"compare_url": "https://api.github.com/repos/wojciechcibor/SiSPD/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/wojciechcibor/SiSPD/merges",
"archive_url": "https://api.github.com/repos/wojciechcibor/SiSPD/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/wojciechcibor/SiSPD/downloads",
"issues_url": "https://api.github.com/repos/wojciechcibor/SiSPD/issues{/number}",
"pulls_url": "https://api.github.com/repos/wojciechcibor/SiSPD/pulls{/number}",
"milestones_url": "https://api.github.com/repos/wojciechcibor/SiSPD/milestones{/number}",
"notifications_url": "https://api.github.com/repos/wojciechcibor/SiSPD/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/wojciechcibor/SiSPD/labels{/name}",
"releases_url": "https://api.github.com/repos/wojciechcibor/SiSPD/releases{/id}",
"deployments_url": "https://api.github.com/repos/wojciechcibor/SiSPD/deployments",
"created_at": "2012-10-14T11:03:28Z",
"updated_at": "2013-10-20T12:47:33Z",
"pushed_at": "2012-10-22T21:09:02Z",
"git_url": "git://github.com/wojciechcibor/SiSPD.git",
"ssh_url": "git@github.com:wojciechcibor/SiSPD.git",
"clone_url": "https://github.com/wojciechcibor/SiSPD.git",
"svn_url": "https://github.com/wojciechcibor/SiSPD",
"homepage": null,
"size": 7297,
"stargazers_count": 2,
"watchers_count": 2,
"language": null,
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": false,
"has_pages": false,
"forks_count": 1,
"mirror_url": null,
"archived": false,
"open_issues_count": 0,
"license": null,
"forks": 1,
"open_issues": 0,
"watchers": 2,
"default_branch": "master"
},
"network_count": 1,
"subscribers_count": 1
}
@@ -0,0 +1,39 @@
{
"id": "570cfa1e-8aaa-4cd6-8037-d919654649d5",
"name": "repos_sinu0_sispd",
"request": {
"url": "/repos/sinu0/SiSPD",
"method": "GET"
},
"response": {
"status": 200,
"bodyFileName": "repos_sinu0_sispd-570cfa1e-8aaa-4cd6-8037-d919654649d5.json",
"headers": {
"Server": "GitHub.com",
"Date": "Fri, 16 Mar 2018 22:04:16 GMT",
"Content-Type": "application/json; charset=utf-8",
"Status": "200 OK",
"X-RateLimit-Limit": "60",
"X-RateLimit-Remaining": "47",
"X-RateLimit-Reset": "1521240469",
"Cache-Control": "public, max-age=60, s-maxage=60",
"Vary": "Accept",
"ETag": "W/\"7a441b97c24d52980b539d9d4ae38cd3\"",
"Last-Modified": "Sat, 12 Jan 2013 19:04:16 GMT",
"X-GitHub-Media-Type": "unknown, github.v3",
"Access-Control-Expose-Headers": "ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval",
"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-Runtime-rack": "0.054554",
"X-GitHub-Request-Id": "8956:23E8:D5D24:1D7E85:5AAC3F5F"
}
},
"uuid": "570cfa1e-8aaa-4cd6-8037-d919654649d5",
"persistent": true,
"insertionIndex": 3
}
@@ -0,0 +1,35 @@
{
"id": "2a04e50f-19c2-4b93-a3dd-17101e481e5f",
"name": "repos_sinu0_sispds",
"request": {
"url": "/repos/sinu0/Forbidden",
"method": "GET"
},
"response": {
"status": 403,
"body": "{\n\"documentation_url\": \"https://developer.github.com/v3/#abuse-rate-limits\",\n\"message\": \"You have triggered an abuse detection mechanism. Please wait a few minutes before you try again.\"\n}\n",
"headers": {
"Server": "GitHub.com",
"Date": "Sat, 17 Mar 2018 10:09:53 GMT",
"Content-Type": "application/json; charset=utf-8",
"Transfer-Encoding": "chunked",
"Status": "403 Forbidden",
"Retry-After": "60",
"Access-Control-Expose-Headers": "ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval",
"Access-Control-Allow-Origin": "*",
"X-GitHub-Media-Type": "github.v3; format=json",
"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",
"Expect-CT": "max-age=2592000, report-uri='https://api.github.com/_private/browser/errors'",
"Content-Security-Policy": "default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src render.githubusercontent.com; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; img-src 'self' data: assets-cdn.github.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com collector.githubapp.com avatars0.githubusercontent.com avatars1.githubusercontent.com avatars2.githubusercontent.com avatars3.githubusercontent.com github-cloud.s3.amazonaws.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com; worker-src 'self'",
"X-Runtime-rack": "0.007926",
"X-GitHub-Request-Id": "BC42:23E6:27A97E:59F513:5AACE971"
}
},
"uuid": "2a04e50f-19c2-4b93-a3dd-17101e481e8f",
"persistent": true,
"insertionIndex": 5
}
@@ -0,0 +1,35 @@
{
"id": "2a04e50f-19c2-4b93-a3dd-17101e481e8f",
"name": "repos_sinu0_sispds",
"request": {
"url": "/repos/sinu0/SiSPDs",
"method": "GET"
},
"response": {
"status": 404,
"body": "{\n \"message\": \"Not Found\",\n \"documentation_url\": \"https://developer.github.com/v3/repos/#get\"\n}\n",
"headers": {
"Server": "GitHub.com",
"Date": "Fri, 16 Mar 2018 22:05:04 GMT",
"Content-Type": "application/json; charset=utf-8",
"Status": "404 Not Found",
"X-RateLimit-Limit": "60",
"X-RateLimit-Remaining": "45",
"X-RateLimit-Reset": "1521240469",
"X-GitHub-Media-Type": "unknown, github.v3",
"Access-Control-Expose-Headers": "ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval",
"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-Runtime-rack": "0.019445",
"X-GitHub-Request-Id": "8A96:23E8:D6E71:1DA44B:5AAC3F8C"
}
},
"uuid": "2a04e50f-19c2-4b93-a3dd-17101e481e8f",
"persistent": true,
"insertionIndex": 5
}