copay-crown
Version:
A Secure Crown Wallet
179 lines (166 loc) • 4.89 kB
text/typescript
import { DecimalPipe } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
import { async, TestBed } from '@angular/core/testing';
import { AndroidFingerprintAuth } from '@ionic-native/android-fingerprint-auth';
import { TouchID } from '@ionic-native/touch-id';
import {
TranslateFakeLoader,
TranslateLoader,
TranslateModule,
TranslateService
} from '@ngx-translate/core';
import { Level, NgLoggerModule } from '@nsalaun/ng-logger';
import {
AlertController,
App,
Config,
Events,
LoadingController,
Platform
} from 'ionic-angular';
import { Logger } from '../../providers/logger/logger';
import { BwcErrorProvider } from '../bwc-error/bwc-error';
import { BwcProvider } from '../bwc/bwc';
import { ConfigProvider } from '../config/config';
import { FeeProvider } from '../fee/fee';
import { FilterProvider } from '../filter/filter';
import { OnGoingProcessProvider } from '../on-going-process/on-going-process';
import { PersistenceProvider } from '../persistence/persistence';
import { PlatformProvider } from '../platform/platform';
import { PopupProvider } from '../popup/popup';
import { RateProvider } from '../rate/rate';
import { TouchIdProvider } from '../touchid/touchid';
import { TxFormatProvider } from '../tx-format/tx-format';
import { WalletProvider } from './wallet';
describe('Provider: Wallet Provider', () => {
let walletProvider: WalletProvider;
class BwcProviderMock {
constructor() { }
getErrors() {
return 'error';
}
getBitcoreCash() { }
}
class PersistenceProviderMock {
constructor() { }
getLastAddress(walletId: any) {
return Promise.resolve('storedAddress');
}
storeLastAddress(walletId: any, address: any) {
return Promise.resolve(address);
}
}
class LoggerMock {
infoLogs = [];
debugLogs = [];
info(data) {
this.infoLogs.push(data);
}
debug(data) {
this.debugLogs.push(data);
}
}
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientModule,
NgLoggerModule.forRoot(Level.LOG),
TranslateModule.forRoot({
loader: { provide: TranslateLoader, useClass: TranslateFakeLoader }
})
],
providers: [
AlertController,
AndroidFingerprintAuth,
App,
BwcErrorProvider,
{ provide: BwcProvider, useClass: BwcProviderMock },
Config,
ConfigProvider,
DecimalPipe,
FeeProvider,
Events,
FilterProvider,
LoadingController,
Logger,
OnGoingProcessProvider,
{ provide: PersistenceProvider, useClass: PersistenceProviderMock },
Platform,
PlatformProvider,
PopupProvider,
RateProvider,
TouchID,
TouchIdProvider,
TranslateService,
TxFormatProvider,
WalletProvider
]
});
walletProvider = TestBed.get(WalletProvider);
});
describe('Function: Get Address Function', () => {
it('should get the last address stored', () => {
let wallet = {
isComplete() {
return true;
},
needsBackup: false
};
let force = false;
walletProvider.getAddress(wallet, force).then(address => {
expect(address).toEqual('storedAddress');
});
});
it('should reject to generate new address if wallet is not complete', () => {
let wallet = {
isComplete() {
return false;
},
needsBackup: false
};
let force = true;
walletProvider.getAddress(wallet, force).catch(err => {
expect(err);
});
});
it('should reject to generate new address if wallet is not backed up', () => {
let wallet = {
isComplete() {
return true;
},
needsBackup: true
};
let force = true;
walletProvider.getAddress(wallet, force).catch(err => {
expect(err);
});
});
it('should force to generate new address', () => {
let wallet = {
isComplete() {
return true;
},
needsBackup: false,
createAddress({ }, cb) {
return cb(null, { address: 'newAddress' });
}
};
let force = true;
walletProvider.getAddress(wallet, force).then(address => {
expect(address).toEqual('newAddress');
});
});
});
describe('Function: Get Protocol Handler Function', () => {
it('should return bitcoincash if coin is bch', () => {
let coin = 'bch';
let protocol = walletProvider.getProtocolHandler(coin);
expect(protocol).toEqual('bitcoincash');
});
it('should return bitcoin if coin is btc', () => {
let coin = 'btc';
let protocol = walletProvider.getProtocolHandler(coin);
expect(protocol).toEqual('bitcoin');
});
});
});