Compare commits

..

2 Commits

Author SHA1 Message Date
4bdc79b110 Bump cic-ussd version. 2021-04-19 11:31:14 +03:00
06fd0f5513 Renames user table and model. 2021-04-19 11:29:13 +03:00
22 changed files with 2217 additions and 764 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,7 +67,6 @@ 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')
syncer_backends.append(SQLBackend.initial(chain_spec, block_offset)) syncers.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('session_data').get('transaction_amount') user_input = ussd_session.get('user_input').split('*')[-1]
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,11 +401,7 @@ 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,15 +45,7 @@ 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
pin_validity = user.verify_password(password=user_input) return 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 python-pycurl libcurl4-openssl-dev libssl-dev apt install -y gcc gnupg libpq-dev wget make g++ gnupg bash procps git
# create secrets directory # create secrets directory
RUN mkdir -vp pgp/keys RUN mkdir -vp pgp/keys

View File

@@ -1,281 +0,0 @@
- 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

@@ -1,9 +0,0 @@
#!/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

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

View File

@@ -1,285 +0,0 @@
- 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,4 +2,3 @@ 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 insufficient balance. CON Payment of %{amount} %{token_symbol} to %{recipient_information} has failed due to insufficent balance.
Your Sarafu-Network balances is: %{token_balance} %{token_symbol} Your Sarafu-Network balances is: %{token_balance}
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} %{token_symbol} Akaunti yako ya Sarafu-Network ina salio ifuatayo: %{token_balance}
00. Nyuma 00. Nyuma
99. Ondoka 99. Ondoka
help: |- help: |-

View File

@@ -60,19 +60,16 @@ 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,112 +2,82 @@
set -a set -a
CIC_CHAIN_SPEC=${CIC_CHAIN_SPEC:-evm:bloxberg:8995} DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER=0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C
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}
DEV_FAUCET_AMOUNT=${DEV_FAUCET_AMOUNT:-0} faucet_amount=${DEV_FAUCET_AMOUNT:-0}
DEV_ETH_KEYSTORE_FILE=${DEV_ETH_KEYSTORE_FILE:-`realpath ./keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c`} 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 $CIC_DATA_DIR/.init touch /tmp/cic/config/.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}"
if [ ! -z "$DEV_USE_DOCKER_WAIT_SCRIPT" ]; then DEV_RESERVE_ADDRESS=`giftable-token-deploy -p $ETH_PROVIDER -y $keystore_file -i $CIC_CHAIN_SPEC -v -w --name "Sarafu" --symbol "SRF" --decimals 6`
echo "waiting for ${ETH_PROVIDER}..." giftable-token-gift -p $ETH_PROVIDER -y $keystore_file -i $CIC_CHAIN_SPEC -v -w -a $DEV_RESERVE_ADDRESS $DEV_RESERVE_AMOUNT
./wait-for-it.sh "${ETH_PROVIDER_HOST}:${ETH_PROVIDER_PORT}"
fi
if [ $DEV_TOKEN_TYPE == 'giftable' ]; then #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`
>&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 $gas_price_arg -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -vv -w` DEV_ACCOUNT_INDEX_ADDRESS=`eth-accounts-index-deploy -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -y $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 $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 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
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` 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`
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 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 AccountRegistry $DEV_ACCOUNT_INDEX_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 -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 $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv $declarator_description` DEV_DECLARATOR_ADDRESS=`eth-address-declarator-deploy -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -v $declarator_description`
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 eth-contract-registry-set -w -y $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 $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv` DEV_TRANSFER_AUTHORIZATION_ADDRESS=`erc20-transfer-auth-deploy -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -v`
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 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
# 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 $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv` DEV_TOKEN_INDEX_ADDRESS=`eth-token-index-deploy -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -v`
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 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
>&2 echo "add reserve token to token index" >&2 echo "add reserve token to token index"
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 eth-token-index-add -w -y $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 $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` 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`
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 eth-contract-registry-set -w -y $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 $gas_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -a $DEV_RESERVE_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv $DEV_FAUCET_ADDRESS giftable-token-minter -w -y $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 $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -a $DEV_FAUCET_ADDRESS -vv $DEV_FAUCET_AMOUNT sarafu-faucet-set -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -a $DEV_FAUCET_ADDRESS $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 eth_contract_registry import Registry from 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.memory import MemBackend from chainsyncer.backend 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 +%s)" - export IMAGE_TAG="$IMAGE_TAG_BASE-$(date +%F.%H%M%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,7 +85,6 @@ 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}
@@ -104,9 +103,6 @@ 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: