From 90b80d52c46ffc8a948b26a97965c1264fa58a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20G=C5=82ownia?= Date: Mon, 24 Apr 2023 11:28:09 +0200 Subject: [PATCH] feat(trading): add oracle banner e2e tests --- .../src/integration/market-info.cy.ts | 14 ++++ apps/trading-e2e/src/support/trading.ts | 64 ++++++++++--------- .../components/banner/oracle-banner.tsx | 3 +- 3 files changed, 51 insertions(+), 30 deletions(-) diff --git a/apps/trading-e2e/src/integration/market-info.cy.ts b/apps/trading-e2e/src/integration/market-info.cy.ts index 9ebd9445d..c8ba30f26 100644 --- a/apps/trading-e2e/src/integration/market-info.cy.ts +++ b/apps/trading-e2e/src/integration/market-info.cy.ts @@ -1,4 +1,5 @@ import { MarketTradingModeMapping } from '@vegaprotocol/types'; +import { MarketState } from '@vegaprotocol/types'; const marketInfoBtn = 'Info'; const row = 'key-value-table-row'; @@ -207,6 +208,19 @@ describe('market info is displayed', { tags: '@smoke' }, () => { .and('contain', '/proposals/propose/update-market'); }); + it('show oracle banner', () => { + cy.mockTradingPage( + MarketState.STATE_ACTIVE, + undefined, + undefined, + 'COMPROMISED' + ); + cy.visit('/#/markets/market-0'); + cy.wait('@Markets'); + cy.wait('@MarketInfo'); + cy.getByTestId('oracle-status').should('contain.text', 'COMPROMISED'); + }); + afterEach('close toggle', () => { cy.get('[data-state="open"]').then((tab) => { if (tab) tab.find('button').trigger('click'); diff --git a/apps/trading-e2e/src/support/trading.ts b/apps/trading-e2e/src/support/trading.ts index ccf1d9b63..8d8202d6d 100644 --- a/apps/trading-e2e/src/support/trading.ts +++ b/apps/trading-e2e/src/support/trading.ts @@ -1,6 +1,7 @@ import { aliasGQLQuery } from '@vegaprotocol/cypress'; import * as Schema from '@vegaprotocol/types'; import type { CyHttpMessages } from 'cypress/types/net-stubbing'; +import type { Provider, Status } from '@vegaprotocol/oracles'; import { accountsQuery, assetQuery, @@ -155,7 +156,6 @@ const mockTradingPage = ( aliasGQLQuery(req, 'ProposalsList', proposalListQuery()); aliasGQLQuery(req, 'Deposits', depositsQuery()); }; - declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace Cypress { @@ -164,50 +164,56 @@ declare global { mockTradingPage( state?: Schema.MarketState, tradingMode?: Schema.MarketTradingMode, - trigger?: Schema.AuctionTrigger + trigger?: Schema.AuctionTrigger, + oracleStatus?: Status ): void; } } } + export const addMockTradingPage = () => { Cypress.Commands.add( 'mockTradingPage', - (state = Schema.MarketState.STATE_ACTIVE, tradingMode, trigger) => { + ( + state = Schema.MarketState.STATE_ACTIVE, + tradingMode, + trigger, + oracleStatus + ) => { cy.mockGQL((req) => { mockTradingPage(req, state, tradingMode, trigger); }); + const oracle: Provider = { + name: 'Another oracle', + url: 'https://zombo.com', + description_markdown: + 'Some markdown describing the oracle provider.\n\nTwitter: @FacesPics2\n', + oracle: { + status: oracleStatus || 'GOOD', + status_reason: '', + first_verified: '2022-01-01T00:00:00.000Z', + last_verified: '2022-12-31T00:00:00.000Z', + type: 'public_key', + public_key: ORACLE_PUBKEY, + }, + proofs: [ + { + format: 'signed_message', + available: true, + type: 'public_key', + public_key: ORACLE_PUBKEY, + message: 'SOMEHEX', + }, + ], + github_link: `https://github.com/vegaprotocol/well-known/blob/main/oracle-providers/public_key-${ORACLE_PUBKEY}.toml`, + }; // Prevent request to github, return some dummy content cy.intercept( 'GET', /^https:\/\/raw.githubusercontent.com\/vegaprotocol\/well-known/, { - body: [ - { - name: 'Another oracle', - url: 'https://zombo.com', - description_markdown: - 'Some markdown describing the oracle provider.\n\nTwitter: @FacesPics2\n', - oracle: { - status: 'GOOD', - status_reason: '', - first_verified: '2022-01-01T00:00:00.000Z', - last_verified: '2022-12-31T00:00:00.000Z', - type: 'public_key', - public_key: ORACLE_PUBKEY, - }, - proofs: [ - { - format: 'signed_message', - available: true, - type: 'public_key', - public_key: ORACLE_PUBKEY, - message: 'SOMEHEX', - }, - ], - github_link: `https://github.com/vegaprotocol/well-known/blob/main/oracle-providers/public_key-${ORACLE_PUBKEY}.toml`, - }, - ], + body: [oracle], } ); } diff --git a/apps/trading/components/banner/oracle-banner.tsx b/apps/trading/components/banner/oracle-banner.tsx index 08a27e9ed..894651fec 100644 --- a/apps/trading/components/banner/oracle-banner.tsx +++ b/apps/trading/components/banner/oracle-banner.tsx @@ -26,7 +26,8 @@ export const OracleBanner = ({ marketId }: { marketId: string }) => { return (
- Oracle status for this market is {oracle.status}.{' '} + Oracle status for this market is{' '} + {oracle.status}.{' '} {oracleStatuses[oracle.status]}
{oracle.status_reason ? (