Skip to content
This repository has been archived by the owner on Jul 7, 2021. It is now read-only.

Commit

Permalink
chore: add core-graphql, core-json-rpc and core-snapshot-cli
Browse files Browse the repository at this point in the history
  • Loading branch information
Brian Faust committed Sep 2, 2019
1 parent 5057390 commit aab1a02
Show file tree
Hide file tree
Showing 67 changed files with 2,952 additions and 0 deletions.
7 changes: 7 additions & 0 deletions core-graphql/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Path-based git attributes
# https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

# Ignore all test and documentation with "export-ignore".
/.gitattributes export-ignore
/.gitignore export-ignore
/README.md export-ignore
28 changes: 28 additions & 0 deletions core-graphql/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# ARK Core - GraphQL

<p align="center">
<img src="https://raw.githubusercontent.com/ARKEcosystem/core/master/banner.png" />
</p>

## Deprecated

Note that this plugin is deprecated and should no longer be used.

## Documentation

You can find installation instructions and detailed instructions on how to use this package at the [dedicated documentation site](https://docs.ark.io/guidebook/core/plugins/deprecated/core-graphql.html).

## Security

If you discover a security vulnerability within this package, please send an e-mail to security@ark.io. All security vulnerabilities will be promptly addressed.

## Credits

- [Brian Faust](https://github.com/faustbrian)
- [Joshua Noack](https://github.com/supaiku0)
- [Lúcio Rubens](https://github.com/luciorubeens)
- [All Contributors](../../../../contributors)

## License

[MIT](LICENSE) © [ARK Ecosystem](https://ark.io)
30 changes: 30 additions & 0 deletions core-graphql/__tests__/__support__/setup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { app } from "@arkecosystem/core-container";
import { registerWithContainer, setUpContainer } from "../../../core-test-utils/src/helpers/container";

jest.setTimeout(60000);

const options = {
enabled: true,
host: "0.0.0.0",
port: 4005,
};

export const setUp = async () => {
process.env.CORE_GRAPHQL_ENABLED = "true";

await setUpContainer({
exclude: ["@arkecosystem/core-api", "@arkecosystem/core-forger"],
});

const { plugin } = require("../../src");
await registerWithContainer(plugin, options);

return app;
};

export const tearDown = async () => {
await app.tearDown();

const { plugin } = require("../../src");
await plugin.deregister(app, options);
};
16 changes: 16 additions & 0 deletions core-graphql/__tests__/__support__/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { app } from "@arkecosystem/core-container";
import { ApiHelpers } from "../../../core-test-utils/src/helpers/api";

class Helpers {
public async request(query) {
const url = "http://localhost:4005/graphql";
const server = app.resolvePlugin("graphql");

return ApiHelpers.request(server, "POST", url, {}, { query });
}
}

/**
* @type {Helpers}
*/
export const utils = new Helpers();
40 changes: 40 additions & 0 deletions core-graphql/__tests__/api/address.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import "@arkecosystem/core-test-utils";

import { setUp, tearDown } from "../__support__/setup";
import { utils } from "../__support__/utils";

beforeAll(async () => {
await setUp();
});

afterAll(() => {
tearDown();
});

describe("GraphQL API { address }", () => {
describe("GraphQL resolver for Address", () => {
it("should get wallter for a correctly formatted Address", async () => {
const query = '{ wallet(address: "APnhwwyTbMiykJwYbGhYjNgtHiVJDSEhSn") { producedBlocks } }';
const response = await utils.request(query);

expect(response).toBeSuccessfulResponse();

const data = response.data.data;
expect(data).toBeObject();
expect(data.wallet).toBeObject();

expect(data.wallet.producedBlocks).toBe(0);
});
it("should return an error for an incorrectly formatted Address", async () => {
const query = '{ wallet(address: "bad address") { producedBlocks } }';
const response = await utils.request(query);

expect(response).not.toBeSuccessfulResponse();

const data = response.data.data;
expect(data).toBeFalsy();
expect(response.data.errors[0]).toBeObject();
expect(response.data.errors[0].message).not.toBeNull();
});
});
});
29 changes: 29 additions & 0 deletions core-graphql/__tests__/api/block.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import "@arkecosystem/core-test-utils";
import genesisBlock from "../../../core-test-utils/src/config/testnet/genesisBlock.json";

import { setUp, tearDown } from "../__support__/setup";
import { utils } from "../__support__/utils";

beforeAll(async () => {
await setUp();
});

afterAll(() => {
tearDown();
});

describe("GraphQL API { block }", () => {
describe("GraphQL queries for Block", () => {
it("should get a block by its id", async () => {
const query = `{ block(id:"${genesisBlock.id}") { id } }`;
const response = await utils.request(query);

expect(response).toBeSuccessfulResponse();

const data = response.data.data;
expect(data).toBeObject();
expect(data.block).toBeObject();
expect(data.block.id).toBe(genesisBlock.id);
});
});
});
54 changes: 54 additions & 0 deletions core-graphql/__tests__/api/blocks.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import "@arkecosystem/core-test-utils";
import genesisBlock from "../../../core-test-utils/src/config/testnet/genesisBlock.json";

import { setUp, tearDown } from "../__support__/setup";
import { utils } from "../__support__/utils";

beforeAll(async () => {
await setUp();
});

afterAll(() => {
tearDown();
});

describe("GraphQL API { blocks }", () => {
describe("GraphQL queries for Blocks - filter by generatorPublicKey", () => {
it("should get blocks by generatorPublicKey", async () => {
const query = `{ blocks(filter: { generatorPublicKey: "${genesisBlock.generatorPublicKey}" }) { id } }`;
const response = await utils.request(query);

expect(response).toBeSuccessfulResponse();

const data = response.data.data;
expect(data).toBeObject();
expect(data.blocks).toEqual([{ id: genesisBlock.id }]);
});
});

describe("GraphQL queries for Blocks - testing relationships", () => {
it("should verify that relationships are valid", async () => {
const query = "{ blocks(limit: 1) { generator { address } } }";
const response = await utils.request(query);

expect(response).toBeSuccessfulResponse();

const data = response.data.data;
expect(data).toBeObject();
expect(data.blocks[0].generator.address).toEqual("AP6kAVdX1zQ3S8mfDnnHx9GaAohEqQUins");
});
});

describe("GraphQL queries for Blocks - testing api errors", () => {
it("should not be a successful query", async () => {
const query = "{ blocks(filter: { vers } ) { id } }";
const response = await utils.request(query);

expect(response).not.toBeSuccessfulResponse();

const error = response.data.errors;
expect(error).toBeArray();
expect(response.status).toEqual(400);
});
});
});
29 changes: 29 additions & 0 deletions core-graphql/__tests__/api/transaction.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import "@arkecosystem/core-test-utils";
import genesisBlock from "../../../core-test-utils/src/config/testnet/genesisBlock.json";

import { setUp, tearDown } from "../__support__/setup";
import { utils } from "../__support__/utils";

beforeAll(async () => {
await setUp();
});

afterAll(async () => {
await tearDown();
});

describe("GraphQL API { transaction }", () => {
describe("GraphQL queries for Transaction", () => {
it("should get a transaction by its id", async () => {
const query = `{ transaction(id:"${genesisBlock.transactions[0].id}") { id } }`;
const response = await utils.request(query);

await expect(response).toBeSuccessfulResponse();

const data = response.data.data;
expect(data).toBeObject();
expect(data.transaction).toBeObject();
expect(data.transaction.id).toBe(genesisBlock.transactions[0].id);
});
});
});
Loading

0 comments on commit aab1a02

Please sign in to comment.