You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ranger.apache.org by Abhishek Patil <pr...@gmail.com> on 2023/12/21 05:09:26 UTC

Review Request 74800: RANGER-4620: Add python based Public V2 REST API tests to the Apache Ranger repo

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74800/
-----------------------------------------------------------

Review request for ranger, Abhay Kulkarni, Madhan Neethiraj, Mehul Parikh, Pradeep Agrawal, Ramesh Mani, Sailaja Polavarapu, and Velmurugan Periasamy.


Bugs: RANGER-4620
    https://issues.apache.org/jira/browse/RANGER-4620


Repository: ranger


Description
-------

Add python based API tests for all the Public V2 REST APIs listed in https://ranger.apache.org/apidocs/index.html.

The tests are cover almost all the Public V2 APIs available in Apache Ranger.

The tests are categorised into 5 sections :-
1. Tests for ROLE_SYS_ADMIN user
2. Tests for ROLE_ADMIN_AUDITOR user
3. Tests for ROLE_USER user
4. Tests for ROLE_KEY_ADMIN user
5. Negative test scenarios (for e.g fetch the entities using invalid id, make an update request with invalid data etc)

The only input required to run these tests are Ranger Admin Base URL.
There is a common test runner to run these tests, and the test suite is specified in the form of a JSON file.
The test runner reads the JSON file, creates the required data in the data setup phase,
and runs the tests.
The same test runner can be used to run / automate tests for all the other API sections like Asset REST, XUser REST, Plugin REST APIs etc.

Details on how new test suites can be specified / new tests can be added to the existing test suite are specified in the README file.


Diffs
-----

  README-API_TESTS.txt PRE-CREATION 
  security-admin/src/test/python_tests/data/public_v2_rest_apis.json PRE-CREATION 
  security-admin/src/test/python_tests/data/ranger_admin_details.json PRE-CREATION 
  security-admin/src/test/python_tests/test_runner.py PRE-CREATION 
  security-admin/src/test/python_tests/utils.py PRE-CREATION 


Diff: https://reviews.apache.org/r/74800/diff/1/


Testing
-------

Executed the tests against the latest release of Apache Ranger and ensured that all the tests are passing.


Thanks,

Abhishek Patil


Re: Review Request 74800: RANGER-4620: Add python based Public V2 REST API tests to the Apache Ranger repo

Posted by Abhishek Patil <pr...@gmail.com>.

> On Aug. 17, 2024, 5:09 a.m., Madhan Neethiraj wrote:
> > Abhishek - thank you for adding tests to cover Ranger REST APIs. Please review following suggestions:
> > 
> > 1. I suggest updating docker setup in dev-support/ranger-docker to make it easier to run the tests, probably in a new container named like ranger-tests. This can be integrated in CI to automatically run tests after a build.
> > 2. Adding/reviewing test payload in embedded json is cumbersome, given all quotes need to be escaped. Instead, consider having the payload in separate json files, replace the embedded json text with file names and update the test driver to read test payload from the given file.
> > 3. Having test results in a file could be helpful in troubleshooting failures.
> > 4. Have you considered using Ranger Python APIs (https://pypi.org/project/apache-ranger/) to call REST APIs, instead of raw requests package? This will help validate the Python APIs as well.
> > 5. I ran the tests per instructions in README-API_TESTS.txt, it looks like all tests failed!
> > ```
> > ============================= test session starts ==============================
> > platform darwin -- Python 3.9.6, pytest-8.3.2, pluggy-1.5.0
> > rootdir: /Users/mneethiraj/Apache/git/ranger/security-admin/src/test/python_tests
> > collected 244 items
> > 
> > test_runner.py F......F..FFFFFFFF.FFFFFF....FFFFFFFFFFF..FFFFF.FFFFFFFFF [ 23%]
> > FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF......F..FFFFFFFF.FFFFFF.F [ 52%]
> > ..FFFFFFFFFFF..FFFFF.FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 82%]
> > FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF                              [100%]
> > ```
> > 
> > ```
> > utils.py:313: AssertionError
> > ----------------------------- Captured stdout call -----------------------------
> > The request data is :- None
> > The request url is :- http://localhost:6080/service/public/v2/api/zones/name/lvyygmb
> > The response is :- <Response [401]>
> > The resp content is :- b'{"statusCode":401,"msgDesc":"Authentication Failed"}'
> > ```
> > 
> > I confirmed that username and password in data/ranger_admin_details.json are correct:
> > 
> > ```
> > {
> >   "base_url": "http://localhost:6080",
> >   "admin_user": "admin",
> >   "key_admin_user": "keyadmin",
> >   "admin_user_password": "rangerR0cks!"
> > }
> > ```

Thanks for the review Madhan. Will look into these points


- Abhishek


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74800/#review226863
-----------------------------------------------------------


On Dec. 21, 2023, 5:09 a.m., Abhishek Patil wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/74800/
> -----------------------------------------------------------
> 
> (Updated Dec. 21, 2023, 5:09 a.m.)
> 
> 
> Review request for ranger, Abhay Kulkarni, Madhan Neethiraj, Mehul Parikh, Pradeep Agrawal, Ramesh Mani, Sailaja Polavarapu, and Velmurugan Periasamy.
> 
> 
> Bugs: RANGER-4620
>     https://issues.apache.org/jira/browse/RANGER-4620
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> Add python based API tests for all the Public V2 REST APIs listed in https://ranger.apache.org/apidocs/index.html.
> 
> The tests are cover almost all the Public V2 APIs available in Apache Ranger.
> 
> The tests are categorised into 5 sections :-
> 1. Tests for ROLE_SYS_ADMIN user
> 2. Tests for ROLE_ADMIN_AUDITOR user
> 3. Tests for ROLE_USER user
> 4. Tests for ROLE_KEY_ADMIN user
> 5. Negative test scenarios (for e.g fetch the entities using invalid id, make an update request with invalid data etc)
> 
> The only input required to run these tests are Ranger Admin Base URL.
> There is a common test runner to run these tests, and the test suite is specified in the form of a JSON file.
> The test runner reads the JSON file, creates the required data in the data setup phase,
> and runs the tests.
> The same test runner can be used to run / automate tests for all the other API sections like Asset REST, XUser REST, Plugin REST APIs etc.
> 
> Details on how new test suites can be specified / new tests can be added to the existing test suite are specified in the README file.
> 
> 
> Diffs
> -----
> 
>   README-API_TESTS.txt PRE-CREATION 
>   security-admin/src/test/python_tests/data/public_v2_rest_apis.json PRE-CREATION 
>   security-admin/src/test/python_tests/data/ranger_admin_details.json PRE-CREATION 
>   security-admin/src/test/python_tests/test_runner.py PRE-CREATION 
>   security-admin/src/test/python_tests/utils.py PRE-CREATION 
> 
> 
> Diff: https://reviews.apache.org/r/74800/diff/1/
> 
> 
> Testing
> -------
> 
> Executed the tests against the latest release of Apache Ranger and ensured that all the tests are passing.
> 
> 
> Thanks,
> 
> Abhishek Patil
> 
>


Re: Review Request 74800: RANGER-4620: Add python based Public V2 REST API tests to the Apache Ranger repo

Posted by Madhan Neethiraj <ma...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74800/#review226863
-----------------------------------------------------------



Abhishek - thank you for adding tests to cover Ranger REST APIs. Please review following suggestions:

1. I suggest updating docker setup in dev-support/ranger-docker to make it easier to run the tests, probably in a new container named like ranger-tests. This can be integrated in CI to automatically run tests after a build.
2. Adding/reviewing test payload in embedded json is cumbersome, given all quotes need to be escaped. Instead, consider having the payload in separate json files, replace the embedded json text with file names and update the test driver to read test payload from the given file.
3. Having test results in a file could be helpful in troubleshooting failures.
4. Have you considered using Ranger Python APIs (https://pypi.org/project/apache-ranger/) to call REST APIs, instead of raw requests package? This will help validate the Python APIs as well.
5. I ran the tests per instructions in README-API_TESTS.txt, it looks like all tests failed!
```
============================= test session starts ==============================
platform darwin -- Python 3.9.6, pytest-8.3.2, pluggy-1.5.0
rootdir: /Users/mneethiraj/Apache/git/ranger/security-admin/src/test/python_tests
collected 244 items

test_runner.py F......F..FFFFFFFF.FFFFFF....FFFFFFFFFFF..FFFFF.FFFFFFFFF [ 23%]
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF......F..FFFFFFFF.FFFFFF.F [ 52%]
..FFFFFFFFFFF..FFFFF.FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 82%]
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF                              [100%]
```

```
utils.py:313: AssertionError
----------------------------- Captured stdout call -----------------------------
The request data is :- None
The request url is :- http://localhost:6080/service/public/v2/api/zones/name/lvyygmb
The response is :- <Response [401]>
The resp content is :- b'{"statusCode":401,"msgDesc":"Authentication Failed"}'
```

I confirmed that username and password in data/ranger_admin_details.json are correct:

```
{
  "base_url": "http://localhost:6080",
  "admin_user": "admin",
  "key_admin_user": "keyadmin",
  "admin_user_password": "rangerR0cks!"
}
```

- Madhan Neethiraj


On Dec. 21, 2023, 5:09 a.m., Abhishek Patil wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/74800/
> -----------------------------------------------------------
> 
> (Updated Dec. 21, 2023, 5:09 a.m.)
> 
> 
> Review request for ranger, Abhay Kulkarni, Madhan Neethiraj, Mehul Parikh, Pradeep Agrawal, Ramesh Mani, Sailaja Polavarapu, and Velmurugan Periasamy.
> 
> 
> Bugs: RANGER-4620
>     https://issues.apache.org/jira/browse/RANGER-4620
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> Add python based API tests for all the Public V2 REST APIs listed in https://ranger.apache.org/apidocs/index.html.
> 
> The tests are cover almost all the Public V2 APIs available in Apache Ranger.
> 
> The tests are categorised into 5 sections :-
> 1. Tests for ROLE_SYS_ADMIN user
> 2. Tests for ROLE_ADMIN_AUDITOR user
> 3. Tests for ROLE_USER user
> 4. Tests for ROLE_KEY_ADMIN user
> 5. Negative test scenarios (for e.g fetch the entities using invalid id, make an update request with invalid data etc)
> 
> The only input required to run these tests are Ranger Admin Base URL.
> There is a common test runner to run these tests, and the test suite is specified in the form of a JSON file.
> The test runner reads the JSON file, creates the required data in the data setup phase,
> and runs the tests.
> The same test runner can be used to run / automate tests for all the other API sections like Asset REST, XUser REST, Plugin REST APIs etc.
> 
> Details on how new test suites can be specified / new tests can be added to the existing test suite are specified in the README file.
> 
> 
> Diffs
> -----
> 
>   README-API_TESTS.txt PRE-CREATION 
>   security-admin/src/test/python_tests/data/public_v2_rest_apis.json PRE-CREATION 
>   security-admin/src/test/python_tests/data/ranger_admin_details.json PRE-CREATION 
>   security-admin/src/test/python_tests/test_runner.py PRE-CREATION 
>   security-admin/src/test/python_tests/utils.py PRE-CREATION 
> 
> 
> Diff: https://reviews.apache.org/r/74800/diff/1/
> 
> 
> Testing
> -------
> 
> Executed the tests against the latest release of Apache Ranger and ensured that all the tests are passing.
> 
> 
> Thanks,
> 
> Abhishek Patil
> 
>