This repository has been archived by the owner on Jul 7, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: add core-graphql, core-json-rpc and core-snapshot-cli
- Loading branch information
Brian Faust
committed
Sep 2, 2019
1 parent
5057390
commit aab1a02
Showing
67 changed files
with
2,952 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
}); | ||
}); | ||
}); |
Oops, something went wrong.