GSOC 2019: Location Based Access Control Phase 2

cc: @dkayiwa

I have started a new RA steps followed in detail https://pastebin.com/163z0qC4. and in the final step saving app configuration website shows as successfully saved but getting the following error in the terminal log:

3. Configure Patient Registration App with Location Fragment

got this error: https://pastebin.com/eQaLuDdd

Have you stopped the registrationapp.registerPatient, and start the referenceapplication.registrationapp.myRegWithLoc in the App definition page?

yes disabled it by clicking the sqaure box

I can go to Register patient page without configuring patient Registration. when configuring the patient registration and going to link ‘http://localhost:8080/openmrs/registrationapp/registerPatient.page?appId=referenceapplication.registrationapp.myRegWithLoc

getting this error https://pastebin.com/JP1jEUvR

Did you check that, your LBAC module is started and running?

@suthagar23

I have made changes in the required module part of Deployment page of LBAC.

can you review it once?

Thanks @vankineenitawrun for the update

@suthagar23 can you tell me how LBAC Test files are tested ?

Unless the LBAC is installed how can we verify this Module?

Did you read how can we run the unit test cases in a maven project? Read more about it, and try to run the test cases through the IDE or Command interface whichever you want.

I don’t mean about the command to run.

I just want to know to how are this features verified unless the module is installed with reference application?.

Without installing the module, do you have any idea to test it :smile:? I don’t think so

Or you may need to add more test cases for each scenarios

Suggest If I am wrong

Procedure For running Test’s

  • Install Reference Application and run server
  • go to manage module in http://localhost:8080/openmrs
  • Install the LBAC module
  • Run the mvn test command.

Nope,

Unit tests are used to verify and test your codes before making it as a deployable bundle - Unit tests are used to reduce the workload of a developer to test the existing use cases when he makes any changes on the existing code bases. So when you are working on the code base, you need to run the mvn test to run the unit test cases !!

When you deploy it to OpenMRS Server and run the module, there you are manually testing the use cases for your changes and checking the UI changes also.

Resources : https://wiki.openmrs.org/display/docs/Module+Unit+Testing

Added Unit Tests to LocationUtils of LBAC Module for below Issue.

My First PR for GSoc 19 Project.

Just added comments

@suthagar23

In the code do we actually need the Global property, since we are just using to store the Uuid of PersonAttributeType. we are using this value to get the PersonAttributeType.

As we know the personAttributeType name we can get it through getPersonAttributeTypeByName method of PersonService. so we don’t need the Uuid actually.

Why do you prefer to go for GetByName rather than GetByUUid?

so that we don’t need to store the Global property.

If its an issue with performance I am fine with getByUUid and storing the GlobalProperty.

If it needed for some other implementations also, they can fetch it from GP. If we fixed it, then we only can make changes. So better to keep it

If someone wants to implement isn’t it the same they have to know the name of GLOBAL PROPERTY instead of PersonAttributeType name if I am correct?