Compare commits

..

19 Commits

Author SHA1 Message Date
4cabc22c34 Add pyresttest dep. 2021-04-21 15:36:00 +03:00
0fac7246f0 Adds expect scripts for transaction smoke tests. 2021-04-21 13:48:24 +03:00
6dd775051c Refactors to improve expect scripts. 2021-04-21 13:45:04 +03:00
ee37a23ac5 Merge branch 'master' of gitlab.com:grassrootseconomics/cic-internal-integration into philip/expect-scripts 2021-04-21 13:37:36 +03:00
f53e9a7d2a Bug fixes discovered from smoke tests. 2021-04-21 13:36:59 +03:00
Louis Holbrook
0123ce13ea Merge branch 'lash/settable-gas-price' into 'master'
Adapt deployment to Bloxberg

See merge request grassrootseconomics/cic-internal-integration!99
2021-04-21 05:46:42 +00:00
Louis Holbrook
03b3e8cd3f Adapt deployment to Bloxberg 2021-04-21 05:46:42 +00:00
Louis Holbrook
3ee84f780e Merge branch 'lash/cic-cache-syncer-backend-mixup' into 'master'
CIC-cache backend syncer mixup

See merge request grassrootseconomics/cic-internal-integration!106
2021-04-20 13:25:03 +00:00
Louis Holbrook
95269f69ed CIC-cache backend syncer mixup 2021-04-20 13:25:02 +00:00
621780e9b6 Update .cic-template.yml 2021-04-19 17:56:19 +00:00
eecdca1a55 Merge branch 'philip/ussd-db-fixes' into 'master'
Philip/ussd db fixes

See merge request grassrootseconomics/cic-internal-integration!107
2021-04-19 08:44:41 +00:00
6fef0ecec9 Philip/ussd db fixes 2021-04-19 08:44:40 +00:00
fad9b62539 Merge "origin/master" into "philip/expect-scripts" 2021-04-14 13:50:44 +03:00
a44e2734a4 Adds bash script to run test suite. 2021-04-14 13:49:03 +03:00
52059fe302 Rudimentary setup for account creation. 2021-04-02 12:20:23 +03:00
bbba6f48e2 Funny pip decouples from os packages with no hint what's missing. 2021-03-30 10:22:29 +03:00
d71e87198e Adds missing dependency for rest testing. 2021-03-30 05:08:15 +03:00
71e864695b Adds first rudimentary test for account creation. 2021-03-30 04:48:31 +03:00
071cbcc6fb Adds dependency for expect tests. 2021-03-30 04:47:59 +03:00
22 changed files with 764 additions and 2217 deletions

4
.gitignore vendored
View File

@@ -1,6 +1,6 @@
service-configs/* service-configs/*
!service-configs/.gitkeep !service-configs/.gitkeep
node_modules **/node_modules/
__pycache__ __pycache__
*.pyc *.pyc
*.o *.o

View File

@@ -67,6 +67,7 @@ class ERC20TransferFilter(SyncFilter):
tx.status == Status.SUCCESS, tx.status == Status.SUCCESS,
block.timestamp, block.timestamp,
) )
db_session.flush() #db_session.flush()
db_session.commit()
return True return True

View File

@@ -77,7 +77,7 @@ def main():
if len(syncer_backends) == 0: if len(syncer_backends) == 0:
logg.info('found no backends to resume') logg.info('found no backends to resume')
syncers.append(SQLBackend.initial(chain_spec, block_offset)) syncer_backends.append(SQLBackend.initial(chain_spec, block_offset))
else: else:
for syncer_backend in syncer_backends: for syncer_backend in syncer_backends:
logg.info('resuming sync session {}'.format(syncer_backend)) logg.info('resuming sync session {}'.format(syncer_backend))

View File

@@ -20,5 +20,5 @@ TRANSITIONS=/usr/src/cic-ussd/transitions/
[client] [client]
host = host =
port = port =
ssl = ssl =

View File

@@ -71,7 +71,7 @@ def process_exit_insufficient_balance(display_key: str, user: Account, ussd_sess
operational_balance = get_cached_operational_balance(blockchain_address=user.blockchain_address) operational_balance = get_cached_operational_balance(blockchain_address=user.blockchain_address)
# compile response data # compile response data
user_input = ussd_session.get('user_input').split('*')[-1] user_input = ussd_session.get('session_data').get('transaction_amount')
transaction_amount = to_wei(value=int(user_input)) transaction_amount = to_wei(value=int(user_input))
token_symbol = 'SRF' token_symbol = 'SRF'
@@ -86,7 +86,7 @@ def process_exit_insufficient_balance(display_key: str, user: Account, ussd_sess
amount=from_wei(transaction_amount), amount=from_wei(transaction_amount),
token_symbol=token_symbol, token_symbol=token_symbol,
recipient_information=tx_recipient_information, recipient_information=tx_recipient_information,
token_balance=operational_balance token_balance=operational_balance,
) )
@@ -401,7 +401,11 @@ def process_request(user_input: str, user: Account, ussd_session: Optional[dict]
'exit_invalid_pin', 'exit_invalid_pin',
'exit_invalid_new_pin', 'exit_invalid_new_pin',
'exit_pin_mismatch', 'exit_pin_mismatch',
'exit_invalid_request' 'exit_invalid_request',
"exit_insufficient_balance",
"exit_successful_transaction",
"help",
"complete"
] and person_metadata is not None: ] and person_metadata is not None:
return UssdMenu.find_by_name(name='start') return UssdMenu.find_by_name(name='start')
else: else:

View File

@@ -45,7 +45,15 @@ def is_authorized_pin(state_machine_data: Tuple[str, dict, Account]) -> bool:
:rtype: bool :rtype: bool
""" """
user_input, ussd_session, user = state_machine_data user_input, ussd_session, user = state_machine_data
return user.verify_password(password=user_input) pin_validity = user.verify_password(password=user_input)
if pin_validity is True:
return user.verify_password(password=user_input)
else:
# bump number for failed attempts
user.failed_pin_attempts += 1
Account.session.add(user)
Account.session.commit()
return pin_validity
def is_locked_account(state_machine_data: Tuple[str, dict, Account]) -> bool: def is_locked_account(state_machine_data: Tuple[str, dict, Account]) -> bool:

View File

@@ -8,7 +8,7 @@ WORKDIR /usr/src
ARG pip_extra_index_url_flag='--extra-index-url https://pip.grassrootseconomics.net:8433' ARG pip_extra_index_url_flag='--extra-index-url https://pip.grassrootseconomics.net:8433'
RUN apt-get update && \ RUN apt-get update && \
apt install -y gcc gnupg libpq-dev wget make g++ gnupg bash procps git apt install -y gcc gnupg libpq-dev wget make g++ gnupg bash procps git python-pycurl libcurl4-openssl-dev libssl-dev
# create secrets directory # create secrets directory
RUN mkdir -vp pgp/keys RUN mkdir -vp pgp/keys

View File

@@ -0,0 +1,281 @@
- config:
- testset: "account tests"
- test:
- group: "accounts"
- name: "create account [EN]"
- url: "/"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek020", "text": ""}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"175"}
- compare: {"raw_body":"", "comparator":"contains", expected: "END Your account is being created. You will receive an SMS when your account is ready.\nAkaunti yako ya Sarafu inatayarishwa. Utapokea ujumbe wa SMS akaunti yako ikiwa tayari.\n" }
- test:
- group: "accounts"
- name: "create account [SW]"
- url: "/"
- method: "POST"
- delay: 2
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek021", "text": ""}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"175"}
- compare: {"raw_body":"", "comparator":"contains", expected: "END Your account is being created. You will receive an SMS when your account is ready.\nAkaunti yako ya Sarafu inatayarishwa. Utapokea ujumbe wa SMS akaunti yako ikiwa tayari.\n" }
- test:
- group: "accounts"
- name: "select preferred language prompt [EN]"
- url: "/"
- method: "POST"
- delay: 5 # delay to allow celery tasks to run to create account
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": ""}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"53"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Welcome to Sarafu\n1. English\n2. Kiswahili\n3. Help"}
- test:
- group: "accounts"
- name: "select preferred language prompt [SW]"
- url: "/"
- method: "POST"
- delay: 5 # delay to allow celery tasks to run to create account
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": ""}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"53"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Welcome to Sarafu\n1. English\n2. Kiswahili\n3. Help"}
- test:
- group: "accounts"
- name: "pin entry [EN]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": "1"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"54"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Please enter a PIN to manage your account.\n0. Back"}
- test:
- group: "accounts"
- name: "pin entry [SW]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": "2"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"59"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Tafadhali weka PIN ili kudhibiti akaunti yako.\n0. Nyuma"}
- test:
- group: "accounts"
- name: "pin entry confirmation [EN]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": "1*0000"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"32"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Enter your PIN again\n0. Back"}
- test:
- group: "accounts"
- name: "pin entry confirmation [SW]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": "2*1111"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"31"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka PIN yako tena\n0. Nyuma"}
- test:
- group: "accounts"
- name: "given names entry[EN]"
- url: "/"
- delay: 3 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": "1*0000*0000"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"28"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Enter first name\n0. Back"}
- test:
- group: "accounts"
- name: "given names entry[SW]"
- url: "/"
- delay: 3 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": "2*1111*1111"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"37"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka jina lako la kwanza\n0. Nyuma"}
- test:
- group: "accounts"
- name: "family name entry[EN]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": "1*0000*0000*Kimani"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"27"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Enter last name\n0. Back"}
- test:
- group: "accounts"
- name: "family name entry[SW]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": "2*1111*1111*Chebet"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"37"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka jina lako la mwisho\n0. Nyuma"}
- test:
- group: "accounts"
- name: "gender selection[EN]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": "1*0000*0000*Kimani*Omollo"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"42"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Enter gender\n1. Male\n2. Female\n0. Back"}
- test:
- group: "accounts"
- name: "gender selection[SW]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": "2*1111*1111*Chebet*Musau"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"53"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka jinsia yako\n1. Mwanaume\n2. Mwanamke\n0. Nyuma"}
- test:
- group: "accounts"
- name: "location entry[EN]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": "1*0000*0000*Kimani*Omollo*1"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"26"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Enter location\n0. Back"}
- test:
- group: "accounts"
- name: "location entry[SW]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": "2*1111*1111*Chebet*Musau*2"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"27"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka eneo lako\n0. Nyuma"}
- test:
- group: "accounts"
- name: "product entry[EN]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": "1*0000*0000*Kimani*Omollo*1*Kangemi"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"55"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Please enter a product or service you offer\n0. Back"}
- test:
- group: "accounts"
- name: "product entry[SW]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": "2*1111*1111*Chebet*Musau*2*Chebarbar"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"52"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Tafadhali weka bidhaa ama huduma unauza\n0. Nyuma"}
- test:
- group: "accounts"
- name: "start menu[EN]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek022", "text": "1*0000*0000*Kimani*Omollo*1*Kangemi*Potatoes"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"51"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Balance 50.00 SRF\n1. Send\n2. My Account\n3. Help"}
- test:
- group: "accounts"
- name: "start menu[EN]"
- url: "/"
- delay: 2 # delay
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek023", "text": "2*1111*1111*Chebet*Musau*2*Musau*Mandazi"}'
- headers: {'Content-Type': 'application/json'}
- expected_status: [200]
- validators:
- compare: {"header": "content-type", "comparator": "str_eq", "expected":"text/plain"}
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"56"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Salio 50.00 SRF\n1. Tuma\n2. Akaunti yangu\n3. Usaidizi"}

View File

@@ -0,0 +1,9 @@
#!/bin/bash
if [ -z "$TEST_SERVER_URL" ];
then
echo "The test server url is not set !"
exit 1
fi
pyresttest "$TEST_SERVER_URL" ./test_suite.yml --log debug

View File

@@ -0,0 +1,2 @@
- import: account_tests.yml
- import: transaction_tests.yml

View File

@@ -0,0 +1,285 @@
- config:
- testset: "transaction tests"
- test:
- group: "transactions"
- name: "send tokens[EN]"
- url: "/"
- delay: "3"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek024", "text": ""}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "51" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Balance 50.00 SRF\n1. Send\n2. My Account\n3. Help" }
- test:
- group: "transactions"
- name: "send tokens[SW]"
- url: "/"
- delay: "3"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek025", "text": ""}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"56"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Salio 50.00 SRF\n1. Tuma\n2. Akaunti yangu\n3. Usaidizi"}
- test:
- group: "transactions"
- name: "enter recipients phone number[EN]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek024", "text": "1"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "30" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Enter phone number\n0. Back" }
- test:
- group: "transactions"
- name: "enter recipients phone number[SW]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek025", "text": "1"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"33"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka nambari ya simu\n0. Nyuma"}
- test:
- group: "transactions"
- name: "enter token amount[EN]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek024", "text": "1*0712345679"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "24" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Enter amount\n0. Back" }
- test:
- group: "transactions"
- name: "enter token amount[SW]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek025", "text": "1*0712345678"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"25"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka kiwango\n0. Nyuma"}
- test:
- group: "transactions"
- name: "transaction pin authorization[EN]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek024", "text": "1*0712345679*15"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "129" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Chebet Musau +254712345679 will receive 15.00 SRF from Kimani Omollo +254712345678.\nPlease enter your PIN to confirm.\n0. Back" }
- test:
- group: "transactions"
- name: "transaction pin authorization[SW]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek025", "text": "1*0712345678*18"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"148"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Kimani Omollo +254712345678 atapokea 18.00 SRF kutoka kwa Chebet Musau +254712345679.\nTafadhali weka nambari yako ya siri kudhibitisha.\n0. Nyuma"}
- test:
- group: "transactions"
- name: "transaction pin authorization-invalid-pin[EN]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek024", "text": "1*0712345679*15*6987"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "65" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Please enter your PIN. You have 2 attempts remaining.\n0. Back" }
- test:
- group: "transactions"
- name: "transaction pin authorization-invalid-pin[SW]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek025", "text": "1*0712345678*18*7845"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"62"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka nambari ya siri. Una majaribio 2 yaliyobaki.\n0. Nyuma"}
- test:
- group: "transactions"
- name: "transaction pin authorization-valid-pin[EN]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek024", "text": "1*0712345679*15*6987*0000"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "133" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Your request has been sent. Chebet Musau +254712345679 will receive 15.00 SRF from Kimani Omollo +254712345678.\n00. Back\n99. Exit" }
- test:
- group: "transactions"
- name: "transaction pin authorization-valid-pin[SW]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek025", "text": "1*0712345678*18*7845*1111"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"131"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Ombi lako limetumwa. Kimani Omollo +254712345678 atapokea 18.00 SRF kutoka kwa Chebet Musau +254712345679.\n00. Nyuma\n99. Ondoka"}
- test:
- group: "transactions"
- name: "send tokens-2[EN]"
- url: "/"
- delay: "3"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek026", "text": ""}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "51" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Balance 53.00 SRF\n1. Send\n2. My Account\n3. Help" }
- test:
- group: "transactions"
- name: "send tokens-2[SW]"
- url: "/"
- delay: "3"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek027", "text": ""}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"56"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Salio 47.00 SRF\n1. Tuma\n2. Akaunti yangu\n3. Usaidizi"}
- test:
- group: "transactions"
- name: "enter recipients phone number-2[EN]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek026", "text": "1"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "30" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Enter phone number\n0. Back" }
- test:
- group: "transactions"
- name: "enter recipients phone number-2[SW]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek027", "text": "1"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"33"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka nambari ya simu\n0. Nyuma"}
- test:
- group: "transactions"
- name: "enter token amount-2[EN]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek026", "text": "1*0712345679"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "24" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Enter amount\n0. Back" }
- test:
- group: "transactions"
- name: "enter token amount-2[SW]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek027", "text": "1*0712345678"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"25"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Weka kiwango\n0. Nyuma"}
- test:
- group: "transactions"
- name: "transaction pin authorization-2[EN]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345678", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek026", "text": "1*0712345679*850"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: { "header": "content-length", "comparator": "str_eq", "expected": "156" }
- compare: { "raw_body": "", "comparator": "str_eq", expected: "CON Payment of 850.00 SRF to Chebet Musau +254712345679 has failed due to insufficient balance.\nYour Sarafu-Network balances is: 53.00 SRF\n00. Back\n99. Exit"}
- test:
- group: "transactions"
- name: "transaction pin authorization-2[SW]"
- url: "/"
- delay: "2"
- method: "POST"
- body: '{"serviceCode": "*483*46#", "phoneNumber": "+254712345679", "sessionId": "AT_Idjhfuvelw64ffbweiy73nd5vnek027", "text": "1*0712345678*1800"}'
- headers: { 'Content-Type': 'application/json' }
- expected_status: [ 200 ]
- validators:
- compare: { "header": "content-type", "comparator": "str_eq", "expected": "text/plain" }
- compare: {"header": "content-length", "comparator": "str_eq", "expected":"186"}
- compare: {"raw_body":"", "comparator":"str_eq", expected: "CON Malipo ya 1800.00 SRF kwa Kimani Omollo +254712345678 halijakamilika kwa sababu salio lako haitoshi.\nAkaunti yako ya Sarafu-Network ina salio ifuatayo: 47.00 SRF\n00. Nyuma\n99. Ondoka"}

View File

@@ -2,3 +2,4 @@ cic_base[full_graph]~=0.1.2a68
cic-eth~=0.11.0b3 cic-eth~=0.11.0b3
cic-notify~=0.4.0a4 cic-notify~=0.4.0a4
cic-types~=0.1.0a10 cic-types~=0.1.0a10
pyresttest==1.7.1

View File

@@ -154,8 +154,8 @@ en:
00. Back 00. Back
99. Exit 99. Exit
exit_insufficient_balance: |- exit_insufficient_balance: |-
CON Payment of %{amount} %{token_symbol} to %{recipient_information} has failed due to insufficent balance. CON Payment of %{amount} %{token_symbol} to %{recipient_information} has failed due to insufficient balance.
Your Sarafu-Network balances is: %{token_balance} Your Sarafu-Network balances is: %{token_balance} %{token_symbol}
00. Back 00. Back
99. Exit 99. Exit
help: |- help: |-

View File

@@ -155,7 +155,7 @@ sw:
99. Ondoka 99. Ondoka
exit_insufficient_balance: |- exit_insufficient_balance: |-
CON Malipo ya %{amount} %{token_symbol} kwa %{recipient_information} halijakamilika kwa sababu salio lako haitoshi. CON Malipo ya %{amount} %{token_symbol} kwa %{recipient_information} halijakamilika kwa sababu salio lako haitoshi.
Akaunti yako ya Sarafu-Network ina salio ifuatayo: %{token_balance} Akaunti yako ya Sarafu-Network ina salio ifuatayo: %{token_balance} %{token_symbol}
00. Nyuma 00. Nyuma
99. Ondoka 99. Ondoka
help: |- help: |-

View File

@@ -60,16 +60,19 @@ ARG pip_extra_index_url=https://pip.grassrootseconomics.net:8433
ARG cic_base_version=0.1.2a77 ARG cic_base_version=0.1.2a77
ARG cic_eth_version=0.11.0b6 ARG cic_eth_version=0.11.0b6
ARG sarafu_faucet_version=0.0.2a28 ARG sarafu_faucet_version=0.0.2a28
ARG sarafu_token_version==0.0.1a6
ARG cic_contracts_version=0.0.2a2 ARG cic_contracts_version=0.0.2a2
RUN pip install --user --extra-index-url $pip_extra_index_url cic-base[full_graph]==$cic_base_version \ RUN pip install --user --extra-index-url $pip_extra_index_url cic-base[full_graph]==$cic_base_version \
cic-eth==$cic_eth_version \ cic-eth==$cic_eth_version \
cic-contracts==$cic_contracts_version \ cic-contracts==$cic_contracts_version \
sarafu-faucet==$sarafu_faucet_version sarafu-faucet==$sarafu_faucet_version \
sarafu-token==$sarafu_token_version
FROM python:3.8.6-slim-buster as runtime-image FROM python:3.8.6-slim-buster as runtime-image
RUN apt-get update RUN apt-get update
RUN apt-get install -y --no-install-recommends gnupg libpq-dev RUN apt-get install -y --no-install-recommends gnupg libpq-dev
RUN apt-get install -y --no-install-recommends jq
COPY --from=compile-image /usr/local/bin/ /usr/local/bin/ COPY --from=compile-image /usr/local/bin/ /usr/local/bin/
COPY --from=compile-image /usr/local/etc/cic/ /usr/local/etc/cic/ COPY --from=compile-image /usr/local/etc/cic/ /usr/local/etc/cic/

View File

@@ -2,82 +2,112 @@
set -a set -a
DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER=0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C CIC_CHAIN_SPEC=${CIC_CHAIN_SPEC:-evm:bloxberg:8995}
DEV_TOKEN_TYPE=${DEV_TOKEN_TYPE:-giftable}
DEV_ETH_ACCOUNT_RESERVE_MINTER=${DEV_ETH_ACCOUNT_RESERVE_MINTER:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} DEV_ETH_ACCOUNT_RESERVE_MINTER=${DEV_ETH_ACCOUNT_RESERVE_MINTER:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER}
DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER=${DEV_ETH_ACCOUNT_RESERVE_MINTER:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER=${DEV_ETH_ACCOUNT_RESERVE_MINTER:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER}
DEV_RESERVE_AMOUNT=${DEV_ETH_RESERVE_AMOUNT:-""10000000000000000000000000000000000} DEV_RESERVE_AMOUNT=${DEV_ETH_RESERVE_AMOUNT:-""10000000000000000000000000000000000}
faucet_amount=${DEV_FAUCET_AMOUNT:-0} DEV_FAUCET_AMOUNT=${DEV_FAUCET_AMOUNT:-0}
keystore_file=$(realpath ./keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c) DEV_ETH_KEYSTORE_FILE=${DEV_ETH_KEYSTORE_FILE:-`realpath ./keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c`}
set -e
DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER=`eth-checksum $(cat $DEV_ETH_KEYSTORE_FILE | jq -r .address)`
if [ ! -z $DEV_ETH_GAS_PRICE ]; then
gas_price_arg="--gas-price $DEV_ETH_GAS_PRICE"
>&2 echo using static gas price $DEV_ETH_GAS_PRICE
fi
if [[ $DEV_TOKEN_TYPE != 'giftable' && $DEV_TOKEN_TYPE != 'sarafu' ]]; then
echo $DEV_TOKEN_TYPE
>&2 echo DEV_TOKEN_TYPE must be one of [giftable,sarafu]
exit 1
fi
echo "environment:" echo "environment:"
printenv printenv
echo \n echo \n
echo "using wallet address '$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER' from keystore file $DEV_ETH_KEYSTORE_FILE"
# This is a grassroots team convention for building the Bancor contracts using the bancor protocol repository truffle setup # This is a grassroots team convention for building the Bancor contracts using the bancor protocol repository truffle setup
# Running this in docker-internal dev container (built from Docker folder in this repo) will write a # Running this in docker-internal dev container (built from Docker folder in this repo) will write a
# source-able env file to CIC_DATA_DIR. Services dependent on these contracts can mount this file OR # source-able env file to CIC_DATA_DIR. Services dependent on these contracts can mount this file OR
# define these parameters at runtime # define these parameters at runtime
# pushd /usr/src # pushd /usr/src
if [ -z $CIC_DATA_DIR ]; then
CIC_DATA_DIR=`mktemp -d`
fi
>&2 echo using data dir $CIC_DATA_DIR
init_level_file=${CIC_DATA_DIR}/.init init_level_file=${CIC_DATA_DIR}/.init
if [ ! -f ${CIC_DATA_DIR}/.init ]; then if [ ! -f ${CIC_DATA_DIR}/.init ]; then
echo "Creating .init file..." echo "Creating .init file..."
mkdir -p $CIC_DATA_DIR mkdir -p $CIC_DATA_DIR
touch /tmp/cic/config/.init touch $CIC_DATA_DIR/.init
# touch $init_level_file # touch $init_level_file
fi fi
echo -n 1 > $init_level_file echo -n 1 > $init_level_file
# Abort on any error (including if wait-for-it fails). # Abort on any error (including if wait-for-it fails).
set -e
# Wait for the backend to be up, if we know where it is. # Wait for the backend to be up, if we know where it is.
if [[ -n "${ETH_PROVIDER}" ]]; then if [[ -n "${ETH_PROVIDER}" ]]; then
echo "waiting for ${ETH_PROVIDER}..."
./wait-for-it.sh "${ETH_PROVIDER_HOST}:${ETH_PROVIDER_PORT}"
DEV_RESERVE_ADDRESS=`giftable-token-deploy -p $ETH_PROVIDER -y $keystore_file -i $CIC_CHAIN_SPEC -v -w --name "Sarafu" --symbol "SRF" --decimals 6` if [ ! -z "$DEV_USE_DOCKER_WAIT_SCRIPT" ]; then
giftable-token-gift -p $ETH_PROVIDER -y $keystore_file -i $CIC_CHAIN_SPEC -v -w -a $DEV_RESERVE_ADDRESS $DEV_RESERVE_AMOUNT echo "waiting for ${ETH_PROVIDER}..."
./wait-for-it.sh "${ETH_PROVIDER_HOST}:${ETH_PROVIDER_PORT}"
fi
#BANCOR_REGISTRY_ADDRESS=`cic-bancor-deploy --bancor-dir /usr/local/share/cic/bancor -z $DEV_ETH_RESERVE_ADDRESS -p $ETH_PROVIDER -o $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER` if [ $DEV_TOKEN_TYPE == 'giftable' ]; then
>&2 echo "deploying 'giftable token'"
DEV_RESERVE_ADDRESS=`giftable-token-deploy $gas_price_arg -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -vv -w --name "Giftable Token" --symbol "GFT" --decimals 6 -vv`
else
>&2 echo "deploying 'sarafu' token'"
DEV_RESERVE_ADDRESS=`sarafu-token-deploy $gas_price_arg -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -vv -w --name "Sarafu" --decimals 6 -vv SRF $DEV_SARAFU_DEMURRAGE_LEVEL`
fi
giftable-token-gift $gas_price_arg -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -vv -w -a $DEV_RESERVE_ADDRESS $DEV_RESERVE_AMOUNT
#BANCOR_REGISTRY_ADDRESS=`cic-bancor-deploy $gas_price_arg --bancor-dir /usr/local/share/cic/bancor -z $DEV_ETH_RESERVE_ADDRESS -p $ETH_PROVIDER -o $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER`
>&2 echo "deploy account index contract" >&2 echo "deploy account index contract"
DEV_ACCOUNT_INDEX_ADDRESS=`eth-accounts-index-deploy -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -y $keystore_file -vv -w` DEV_ACCOUNT_INDEX_ADDRESS=`eth-accounts-index-deploy $gas_price_arg -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -vv -w`
>&2 echo "add deployer address as account index writer" >&2 echo "add deployer address as account index writer"
eth-accounts-index-writer -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -a $DEV_ACCOUNT_INDEX_ADDRESS -ww $debug $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER eth-accounts-index-writer $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -a $DEV_ACCOUNT_INDEX_ADDRESS -ww -vv $debug $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER
CIC_REGISTRY_ADDRESS=`eth-contract-registry-deploy -i $CIC_CHAIN_SPEC -y $keystore_file --identifier BancorRegistry --identifier AccountRegistry --identifier TokenRegistry --identifier AddressDeclarator --identifier Faucet --identifier TransferAuthorization -p $ETH_PROVIDER -vv -w` CIC_REGISTRY_ADDRESS=`eth-contract-registry-deploy $gas_price_arg -i $CIC_CHAIN_SPEC -y $DEV_ETH_KEYSTORE_FILE --identifier BancorRegistry --identifier AccountRegistry --identifier TokenRegistry --identifier AddressDeclarator --identifier Faucet --identifier TransferAuthorization -p $ETH_PROVIDER -vv -w`
eth-contract-registry-set -w -y $keystore_file -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv ContractRegistry $CIC_REGISTRY_ADDRESS eth-contract-registry-set $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv ContractRegistry $CIC_REGISTRY_ADDRESS
#cic-registry-set -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -k BancorRegistry -p $ETH_PROVIDER $BANCOR_REGISTRY_ADDRESS -vv eth-contract-registry-set $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv AccountRegistry $DEV_ACCOUNT_INDEX_ADDRESS
eth-contract-registry-set -w -y $keystore_file -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv AccountRegistry $DEV_ACCOUNT_INDEX_ADDRESS
# Deploy address declarator registry # Deploy address declarator registry
>&2 echo "deploy address declarator contract" >&2 echo "deploy address declarator contract"
declarator_description=0x546869732069732074686520434943206e6574776f726b000000000000000000 declarator_description=0x546869732069732074686520434943206e6574776f726b000000000000000000
DEV_DECLARATOR_ADDRESS=`eth-address-declarator-deploy -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -v $declarator_description` DEV_DECLARATOR_ADDRESS=`eth-address-declarator-deploy -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv $declarator_description`
eth-contract-registry-set -w -y $keystore_file -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv AddressDeclarator $DEV_DECLARATOR_ADDRESS eth-contract-registry-set $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv AddressDeclarator $DEV_DECLARATOR_ADDRESS
# Deploy transfer authorization contact # Deploy transfer authorization contact
>&2 echo "deploy address declarator contract" >&2 echo "deploy address declarator contract"
DEV_TRANSFER_AUTHORIZATION_ADDRESS=`erc20-transfer-auth-deploy -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -v` DEV_TRANSFER_AUTHORIZATION_ADDRESS=`erc20-transfer-auth-deploy $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv`
eth-contract-registry-set -w -y $keystore_file -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv TransferAuthorization $DEV_TRANSFER_AUTHORIZATION_ADDRESS eth-contract-registry-set $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv TransferAuthorization $DEV_TRANSFER_AUTHORIZATION_ADDRESS
# Deploy token index contract # Deploy token index contract
>&2 echo "deploy token index contract" >&2 echo "deploy token index contract"
DEV_TOKEN_INDEX_ADDRESS=`eth-token-index-deploy -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -v` DEV_TOKEN_INDEX_ADDRESS=`eth-token-index-deploy $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv`
eth-contract-registry-set -w -y $keystore_file -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv TokenRegistry $DEV_TOKEN_INDEX_ADDRESS eth-contract-registry-set $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv TokenRegistry $DEV_TOKEN_INDEX_ADDRESS
>&2 echo "add reserve token to token index" >&2 echo "add reserve token to token index"
eth-token-index-add -w -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv -a $DEV_TOKEN_INDEX_ADDRESS $DEV_RESERVE_ADDRESS eth-token-index-add $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv -a $DEV_TOKEN_INDEX_ADDRESS $DEV_RESERVE_ADDRESS
# Sarafu faucet contract # Sarafu faucet contract
>&2 echo "deploy token faucet contract" >&2 echo "deploy token faucet contract"
DEV_FAUCET_ADDRESS=`sarafu-faucet-deploy -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -v --account-index-address $DEV_ACCOUNT_INDEX_ADDRESS $DEV_RESERVE_ADDRESS` DEV_FAUCET_ADDRESS=`sarafu-faucet-deploy $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv --account-index-address $DEV_ACCOUNT_INDEX_ADDRESS $DEV_RESERVE_ADDRESS`
eth-contract-registry-set -w -y $keystore_file -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv Faucet $DEV_FAUCET_ADDRESS eth-contract-registry-set $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -r $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv Faucet $DEV_FAUCET_ADDRESS
>&2 echo "set faucet as token minter" >&2 echo "set faucet as token minter"
giftable-token-minter -w -y $keystore_file -a $DEV_RESERVE_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv $DEV_FAUCET_ADDRESS giftable-token-minter $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -a $DEV_RESERVE_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv $DEV_FAUCET_ADDRESS
>&2 echo "set token faucet amount" >&2 echo "set token faucet amount"
sarafu-faucet-set -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -a $DEV_FAUCET_ADDRESS $faucet_amount sarafu-faucet-set $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -a $DEV_FAUCET_ADDRESS -vv $DEV_FAUCET_AMOUNT
else else

View File

@@ -24,7 +24,7 @@ from chainlib.eth.gas import RPCGasOracle
from chainlib.eth.nonce import RPCNonceOracle from chainlib.eth.nonce import RPCNonceOracle
from cic_types.processor import generate_metadata_pointer from cic_types.processor import generate_metadata_pointer
from eth_accounts_index import AccountRegistry from eth_accounts_index import AccountRegistry
from contract_registry import Registry from eth_contract_registry import Registry
from crypto_dev_signer.keystore.dict import DictKeystore from crypto_dev_signer.keystore.dict import DictKeystore
from crypto_dev_signer.eth.signer.defaultsigner import ReferenceSigner as EIP155Signer from crypto_dev_signer.eth.signer.defaultsigner import ReferenceSigner as EIP155Signer
from crypto_dev_signer.keystore.keyfile import to_dict as to_keyfile_dict from crypto_dev_signer.keystore.keyfile import to_dict as to_keyfile_dict

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"dependencies": { "dependencies": {
"cic-client-meta": "^0.0.7-alpha.6", "cic-client-meta": "0.0.7-alpha.6",
"vcard-parser": "^1.0.0" "vcard-parser": "^1.0.0"
} }
} }

View File

@@ -22,7 +22,7 @@ from hexathon import (
strip_0x, strip_0x,
add_0x, add_0x,
) )
from chainsyncer.backend import MemBackend from chainsyncer.backend.memory import MemBackend
from chainsyncer.driver import HeadSyncer from chainsyncer.driver import HeadSyncer
from chainlib.chain import ChainSpec from chainlib.chain import ChainSpec
from chainlib.eth.connection import EthHTTPConnection from chainlib.eth.connection import EthHTTPConnection

View File

@@ -24,7 +24,7 @@ variables:
IMAGE_TAG_BASE: $CI_REGISTRY_IMAGE/$APP_NAME:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA IMAGE_TAG_BASE: $CI_REGISTRY_IMAGE/$APP_NAME:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA
LATEST_TAG: $CI_REGISTRY_IMAGE/$APP_NAME:latest LATEST_TAG: $CI_REGISTRY_IMAGE/$APP_NAME:latest
script: script:
- export IMAGE_TAG="$IMAGE_TAG_BASE-$(date +%F.%H%M%S)" - export IMAGE_TAG="$IMAGE_TAG_BASE-$(date +%s)"
- mkdir -p /kaniko/.docker - mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > "/kaniko/.docker/config.json" - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > "/kaniko/.docker/config.json"
# - /kaniko/executor --context $CONTEXT --dockerfile $DOCKERFILE_PATH $KANIKO_CACHE_ARGS --destination $IMAGE_TAG # - /kaniko/executor --context $CONTEXT --dockerfile $DOCKERFILE_PATH $KANIKO_CACHE_ARGS --destination $IMAGE_TAG

View File

@@ -85,6 +85,7 @@ services:
# ETH_PROVIDER should be broken out into host/port but cic-eth expects this # ETH_PROVIDER should be broken out into host/port but cic-eth expects this
ETH_PROVIDER: http://eth:8545 ETH_PROVIDER: http://eth:8545
# And these two are for wait-for-it (could parse this) # And these two are for wait-for-it (could parse this)
DEV_USE_DOCKER_WAIT_SCRIPT: 1
ETH_PROVIDER_HOST: eth ETH_PROVIDER_HOST: eth
ETH_PROVIDER_PORT: 8545 ETH_PROVIDER_PORT: 8545
CIC_CHAIN_SPEC: ${CIC_CHAIN_SPEC:-evm:bloxberg:8996} CIC_CHAIN_SPEC: ${CIC_CHAIN_SPEC:-evm:bloxberg:8996}
@@ -103,6 +104,9 @@ services:
DEV_PIP_EXTRA_INDEX_URL: ${DEV_PIP_EXTRA_INDEX_URL:-https://pip.grassrootseconomics.net:8433} DEV_PIP_EXTRA_INDEX_URL: ${DEV_PIP_EXTRA_INDEX_URL:-https://pip.grassrootseconomics.net:8433}
RUN_MASK: ${RUN_MASK:-0} # bit flags; 1: contract migrations 2: seed data RUN_MASK: ${RUN_MASK:-0} # bit flags; 1: contract migrations 2: seed data
DEV_FAUCET_AMOUNT: ${DEV_FAUCET_AMOUNT:-0} DEV_FAUCET_AMOUNT: ${DEV_FAUCET_AMOUNT:-0}
DEV_TOKEN_TYPE: ${DEV_TOKEN_TYPE:-giftable}
DEV_SARAFU_DEMURRAGE_LEVEL: ${DEV_SARAFU_DEMURRAGE_LEVEL:-196454828847045000000000000000000}
DEV_ETH_GAS_PRICE: ${DEV_ETH_GAS_PRICE:-1}
command: ["./run_job.sh"] command: ["./run_job.sh"]
#command: ["./reset.sh"] #command: ["./reset.sh"]
depends_on: depends_on: