Merge remote-tracking branch 'origin/master' into lash/move-to-chainlib-eth
This commit is contained in:
commit
e91d0a9f14
@ -294,6 +294,7 @@ def process_display_user_metadata(user: Account, display_key: str):
|
|||||||
preferred_language=user.preferred_language,
|
preferred_language=user.preferred_language,
|
||||||
full_name=absent,
|
full_name=absent,
|
||||||
gender=absent,
|
gender=absent,
|
||||||
|
age=absent,
|
||||||
location=absent,
|
location=absent,
|
||||||
products=absent
|
products=absent
|
||||||
)
|
)
|
||||||
|
40
apps/cic-ussd/tests/fixtures/integration.py
vendored
40
apps/cic-ussd/tests/fixtures/integration.py
vendored
@ -124,46 +124,6 @@ def second_profile_management_session_id() -> str:
|
|||||||
return session_id()
|
return session_id()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def first_account_change_given_name() -> str:
|
|
||||||
return fake.first_name()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def second_account_change_given_name() -> str:
|
|
||||||
return fake.first_name()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def first_account_change_family_name() -> str:
|
|
||||||
return fake.last_name()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def second_account_change_family_name() -> str:
|
|
||||||
return fake.last_name()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def first_account_change_location() -> str:
|
|
||||||
return fake.city()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def second_account_change_location() -> str:
|
|
||||||
return fake.city()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def first_account_change_product() -> str:
|
|
||||||
return fake.color_name()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
|
||||||
def second_account_change_product() -> str:
|
|
||||||
return fake.color_name()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
@pytest.fixture(scope='session')
|
||||||
def first_profile_management_session_id_1() -> str:
|
def first_profile_management_session_id_1() -> str:
|
||||||
return session_id()
|
return session_id()
|
||||||
|
25
apps/cic-ussd/tests/integration/README.md
Normal file
25
apps/cic-ussd/tests/integration/README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# INTEGRATION TESTING
|
||||||
|
|
||||||
|
This folder contains integration tests.
|
||||||
|
|
||||||
|
## OVERVIEW
|
||||||
|
|
||||||
|
There are four files defining the integration tests.
|
||||||
|
|
||||||
|
* **test_account_creation**: Tests account sign up process.
|
||||||
|
* **test_transactions**: Tests transactions between two accounts.
|
||||||
|
* **test_profile_management**: Tests that account metadata can be edited.
|
||||||
|
* **test_account_management**: Tests that account management functionalities are intact.
|
||||||
|
|
||||||
|
## REQUIREMENTS
|
||||||
|
|
||||||
|
In order to run the transaction tests, please ensure that the faucet amount is set to a non-zero value, ideally `50000000`
|
||||||
|
which is the value set in the config file `.config/test/integration.ini`.
|
||||||
|
|
||||||
|
This implies setting the `DEV_FAUCET_AMOUNT` to a non-zero value before bringing up the contract-migration image:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
export DEV_FAUCET_AMOUNT=50000000
|
||||||
|
RUN_MASK=1 docker-compose up contract-migration
|
||||||
|
RUN_MASK=2 docker-compose up contract-migration
|
||||||
|
```
|
@ -214,12 +214,13 @@ stages:
|
|||||||
status_code:
|
status_code:
|
||||||
- 200
|
- 200
|
||||||
headers:
|
headers:
|
||||||
Content-Length: '28'
|
Content-Length: '51'
|
||||||
Content-Type: "text/plain"
|
Content-Type: "text/plain"
|
||||||
verify_response_with:
|
verify_response_with:
|
||||||
function: ext.validator:validate_response
|
function: ext.validator:validate_response
|
||||||
extra_kwargs:
|
extra_kwargs:
|
||||||
expected_response: "CON Enter first name\n0. Back"
|
expected_response: "CON Balance {gift_value} {token_symbol}\n1. Send\n2. My Account\n3. Help"
|
||||||
|
delay_before: 10
|
||||||
|
|
||||||
- name: Pin number confirmation [{second_account_pin_number} - second account]
|
- name: Pin number confirmation [{second_account_pin_number} - second account]
|
||||||
request:
|
request:
|
||||||
@ -232,227 +233,6 @@ stages:
|
|||||||
headers:
|
headers:
|
||||||
content-type: "application/x-www-form-urlencoded"
|
content-type: "application/x-www-form-urlencoded"
|
||||||
method: POST
|
method: POST
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '37'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Weka jina lako la kwanza\n0. Nyuma"
|
|
||||||
|
|
||||||
- name: Enter first name [first_account_given_name - first account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{first_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{first_account_phone_number}"
|
|
||||||
text: "1*{first_account_pin_number}*{first_account_pin_number}*{first_account_given_name}"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '29'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Enter family name\n0. Back"
|
|
||||||
|
|
||||||
- name: Enter first name [second_account_given_name - second account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{second_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{second_account_phone_number}"
|
|
||||||
text: "2*{second_account_pin_number}*{second_account_pin_number}*{second_account_given_name}"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '37'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Weka jina lako la mwisho\n0. Nyuma"
|
|
||||||
|
|
||||||
- name: Enter last name [first_account_family_name - first account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{first_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{first_account_phone_number}"
|
|
||||||
text: "1*{first_account_pin_number}*{first_account_pin_number}*{first_account_given_name}*{first_account_family_name}"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '51'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Enter gender\n1. Male\n2. Female\n3. Other\n0. Back"
|
|
||||||
|
|
||||||
- name: Enter last name [second_account_family_name - second account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{second_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{second_account_phone_number}"
|
|
||||||
text: "2*{second_account_pin_number}*{second_account_pin_number}*{second_account_given_name}*{second_account_family_name}"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '64'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Weka jinsia yako\n1. Mwanaume\n2. Mwanamke\n3. Nyngine\n0. Nyuma"
|
|
||||||
|
|
||||||
- name: Select gender [Male - first account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{first_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{first_account_phone_number}"
|
|
||||||
text: "1*{first_account_pin_number}*{first_account_pin_number}*{first_account_given_name}*{first_account_family_name}*1"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '31'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Enter your location\n0. Back"
|
|
||||||
|
|
||||||
- name: Select gender [Female - second account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{second_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{second_account_phone_number}"
|
|
||||||
text: "2*{second_account_pin_number}*{second_account_pin_number}*{second_account_given_name}*{second_account_family_name}*2"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '27'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Weka eneo lako\n0. Nyuma"
|
|
||||||
|
|
||||||
- name: Enter location [first_account_location - first account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{first_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{first_account_phone_number}"
|
|
||||||
text: "1*{first_account_pin_number}*{first_account_pin_number}*{first_account_given_name}*{first_account_family_name}*1*{first_account_location}"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '55'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Please enter a product or service you offer\n0. Back"
|
|
||||||
|
|
||||||
- name: Enter location [second_account_location - second account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{second_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{second_account_phone_number}"
|
|
||||||
text: "2*{second_account_pin_number}*{second_account_pin_number}*{second_account_given_name}*{second_account_family_name}*2*{second_account_location}"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '42'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Weka bidhaa ama huduma unauza\n0. Nyuma"
|
|
||||||
|
|
||||||
- name: Enter product [first_account_product - first account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{first_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{first_account_phone_number}"
|
|
||||||
text: "1*{first_account_pin_number}*{first_account_pin_number}*{first_account_given_name}*{first_account_family_name}*1*{first_account_location}*{first_account_product}"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
|
||||||
status_code:
|
|
||||||
- 200
|
|
||||||
headers:
|
|
||||||
Content-Length: '51'
|
|
||||||
Content-Type: "text/plain"
|
|
||||||
verify_response_with:
|
|
||||||
function: ext.validator:validate_response
|
|
||||||
extra_kwargs:
|
|
||||||
expected_response: "CON Balance {gift_value} {token_symbol}\n1. Send\n2. My Account\n3. Help"
|
|
||||||
delay_before: 10
|
|
||||||
|
|
||||||
- name: Enter product [second_account_product - second account]
|
|
||||||
request:
|
|
||||||
url: "{server_url}"
|
|
||||||
data:
|
|
||||||
serviceCode: "*483*46#"
|
|
||||||
sessionId: "{second_metadata_entry_session_id}"
|
|
||||||
phoneNumber: "{second_account_phone_number}"
|
|
||||||
text: "2*{second_account_pin_number}*{second_account_pin_number}*{second_account_given_name}*{second_account_family_name}*2*{second_account_location}*{second_account_product}"
|
|
||||||
headers:
|
|
||||||
content-type: "application/x-www-form-urlencoded"
|
|
||||||
method: POST
|
|
||||||
response:
|
response:
|
||||||
status_code:
|
status_code:
|
||||||
- 200
|
- 200
|
||||||
|
@ -31,7 +31,6 @@ stages:
|
|||||||
status_code:
|
status_code:
|
||||||
- 200
|
- 200
|
||||||
headers:
|
headers:
|
||||||
Content-Length: '51'
|
|
||||||
Content-Type: "text/plain"
|
Content-Type: "text/plain"
|
||||||
verify_response_with:
|
verify_response_with:
|
||||||
function: ext.validator:validate_response
|
function: ext.validator:validate_response
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -170,7 +170,7 @@ stages:
|
|||||||
verify_response_with:
|
verify_response_with:
|
||||||
function: ext.validator:validate_response
|
function: ext.validator:validate_response
|
||||||
extra_kwargs:
|
extra_kwargs:
|
||||||
expected_response: "CON {second_account_given_name} {second_account_family_name} {second_account_phone_number} will receive 17.00 {token_symbol} from {first_account_given_name} {first_account_family_name} {first_account_phone_number}.\nPlease enter your PIN to confirm.\n0. Back"
|
expected_response: "CON {second_account_phone_number} will receive 17.00 {token_symbol} from {first_account_phone_number}.\nPlease enter your PIN to confirm.\n0. Back"
|
||||||
|
|
||||||
- name: Enter transcation amount [second account]
|
- name: Enter transcation amount [second account]
|
||||||
request:
|
request:
|
||||||
@ -191,7 +191,7 @@ stages:
|
|||||||
verify_response_with:
|
verify_response_with:
|
||||||
function: ext.validator:validate_response
|
function: ext.validator:validate_response
|
||||||
extra_kwargs:
|
extra_kwargs:
|
||||||
expected_response: "CON {first_account_given_name} {first_account_family_name} {first_account_phone_number} atapokea 25.00 {token_symbol} kutoka kwa {second_account_given_name} {second_account_family_name} {second_account_phone_number}.\nTafadhali weka nambari yako ya siri kudhibitisha.\n0. Nyuma"
|
expected_response: "CON {first_account_phone_number} atapokea 25.00 {token_symbol} kutoka kwa {second_account_phone_number}.\nTafadhali weka nambari yako ya siri kudhibitisha.\n0. Nyuma"
|
||||||
|
|
||||||
- name: Pin to authorize transaction [first account]
|
- name: Pin to authorize transaction [first account]
|
||||||
request:
|
request:
|
||||||
@ -212,7 +212,7 @@ stages:
|
|||||||
verify_response_with:
|
verify_response_with:
|
||||||
function: ext.validator:validate_response
|
function: ext.validator:validate_response
|
||||||
extra_kwargs:
|
extra_kwargs:
|
||||||
expected_response: "CON Your request has been sent. {second_account_given_name} {second_account_family_name} {second_account_phone_number} will receive 17.00 {token_symbol} from {first_account_given_name} {first_account_family_name} {first_account_phone_number}.\n00. Back\n99. Exit"
|
expected_response: "CON Your request has been sent. {second_account_phone_number} will receive 17.00 {token_symbol} from {first_account_phone_number}.\n00. Back\n99. Exit"
|
||||||
|
|
||||||
- name: Pin to authorize transaction [second account]
|
- name: Pin to authorize transaction [second account]
|
||||||
request:
|
request:
|
||||||
@ -233,7 +233,7 @@ stages:
|
|||||||
verify_response_with:
|
verify_response_with:
|
||||||
function: ext.validator:validate_response
|
function: ext.validator:validate_response
|
||||||
extra_kwargs:
|
extra_kwargs:
|
||||||
expected_response: "CON Ombi lako limetumwa. {first_account_given_name} {first_account_family_name} {first_account_phone_number} atapokea 25.00 {token_symbol} kutoka kwa {second_account_given_name} {second_account_family_name} {second_account_phone_number}.\n00. Nyuma\n99. Ondoka"
|
expected_response: "CON Ombi lako limetumwa. {first_account_phone_number} atapokea 25.00 {token_symbol} kutoka kwa {second_account_phone_number}.\n00. Nyuma\n99. Ondoka"
|
||||||
|
|
||||||
- name: Verify balance changes [first account]
|
- name: Verify balance changes [first account]
|
||||||
delay_before: 10
|
delay_before: 10
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
{
|
{
|
||||||
"trigger": "scan_data",
|
"trigger": "scan_data",
|
||||||
"source": "enter_date_of_birth",
|
"source": "enter_date_of_birth",
|
||||||
"dest": "enter_gender",
|
"dest": "enter_location",
|
||||||
"conditions": "cic_ussd.state_machine.logic.validator.is_valid_date",
|
"conditions": "cic_ussd.state_machine.logic.validator.is_valid_date",
|
||||||
"after": "cic_ussd.state_machine.logic.user.save_metadata_attribute_to_session_data",
|
"after": "cic_ussd.state_machine.logic.user.save_metadata_attribute_to_session_data",
|
||||||
"unless": "cic_ussd.state_machine.logic.validator.has_cached_user_metadata"
|
"unless": "cic_ussd.state_machine.logic.validator.has_cached_user_metadata"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"trigger": "scan_data",
|
"trigger": "scan_data",
|
||||||
"source": "enter_gender",
|
"source": "enter_gender",
|
||||||
"dest": "enter_location",
|
"dest": "enter_date_of_birth",
|
||||||
"after": "cic_ussd.state_machine.logic.user.save_metadata_attribute_to_session_data",
|
"after": "cic_ussd.state_machine.logic.user.save_metadata_attribute_to_session_data",
|
||||||
"conditions": "cic_ussd.state_machine.logic.validator.is_valid_gender_selection",
|
"conditions": "cic_ussd.state_machine.logic.validator.is_valid_gender_selection",
|
||||||
"unless": "cic_ussd.state_machine.logic.validator.has_cached_user_metadata"
|
"unless": "cic_ussd.state_machine.logic.validator.has_cached_user_metadata"
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
{
|
{
|
||||||
"trigger": "scan_data",
|
"trigger": "scan_data",
|
||||||
"source": "enter_family_name",
|
"source": "enter_family_name",
|
||||||
"dest": "enter_date_of_birth",
|
"dest": "enter_gender",
|
||||||
"after": "cic_ussd.state_machine.logic.user.save_metadata_attribute_to_session_data",
|
"after": "cic_ussd.state_machine.logic.user.save_metadata_attribute_to_session_data",
|
||||||
"unless": "cic_ussd.state_machine.logic.validator.has_cached_user_metadata"
|
"unless": "cic_ussd.state_machine.logic.validator.has_cached_user_metadata"
|
||||||
},
|
},
|
||||||
|
@ -55,7 +55,7 @@ en:
|
|||||||
CON My profile
|
CON My profile
|
||||||
1. Edit name
|
1. Edit name
|
||||||
2. Edit gender
|
2. Edit gender
|
||||||
3. Edit Age
|
3. Edit age
|
||||||
4. Edit location
|
4. Edit location
|
||||||
5. Edit products
|
5. Edit products
|
||||||
6. View my profile
|
6. View my profile
|
||||||
|
@ -55,7 +55,7 @@ sw:
|
|||||||
CON Wasifu wangu
|
CON Wasifu wangu
|
||||||
1. Weka jina
|
1. Weka jina
|
||||||
2. Weka jinsia
|
2. Weka jinsia
|
||||||
3 Weka umri
|
3. Weka umri
|
||||||
4. Weka eneo
|
4. Weka eneo
|
||||||
5. Weka bidhaa
|
5. Weka bidhaa
|
||||||
6. Angalia wasifu wako
|
6. Angalia wasifu wako
|
||||||
|
Loading…
Reference in New Issue
Block a user