-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into 11--tk-018-create-rest-endpoint-to-receive-o…
…tp-at-obs
- Loading branch information
Showing
12 changed files
with
286 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,99 @@ | ||
# webank-OnlineBanking | ||
# Webank Online Banking System | ||
### An Online banking system middleware service | ||
## Table of Contents | ||
- [Project Overview](#project-overview) | ||
- [Features](#features) | ||
- [Technologies Used](#technologies-used) | ||
- [Prerequisites](#prerequisites) | ||
- [Installation Instructions](#installation-instructions) | ||
- [Usage](#usage) | ||
- [Project Documentation](#project-documentation) | ||
- [Development and Contribution](#development-and-contribution) | ||
- [License](#license) | ||
- [Contact Information](#contact-information) | ||
- [Acknowledgements](#acknowledgements) | ||
|
||
--- | ||
|
||
## Project Overview | ||
|
||
The **Webank Online Banking System** is a middleware service designed to connect the frontend applications with a core banking system, providing a seamless online banking experience for users. The system consists of various modules to manage key functionalities such as user registration, account management, OTP verification, and access control. | ||
|
||
### Key Modules | ||
- **OBS (Online Banking Service)**: Orchestrates requests for registration and OTP verification, forwarding them to the appropriate backend modules. | ||
- **PRS (Personal Registration Service)**: Manages user registration and OTP verification. | ||
- **DAS (Deposit Account Service)**: Handles account creation and balance management. | ||
- **AAS (Account Access Service)**: Manages account access and authorization. | ||
- **SMS Gateway**: Sends OTPs to users for verification purposes. | ||
|
||
## Features | ||
- **User Registration**: Users can register by providing their phone numbers and public keys. | ||
- **OTP Verification**: Secure one-time passwords are sent to users’ phones to verify identity. | ||
- **Account Management**: Once registration is complete, users can create bank accounts, check balances, and view transaction histories. | ||
- **Scalable Microservices Architecture**: Each service is designed as an independent microservice, allowing for modularity and scalability. | ||
|
||
## Technologies Used | ||
- **Backend**: Spring Boot for the OBS, PRS, DAS, and AAS modules. | ||
- **Database**: PostgreSQL (or any preferred database system) for secure data storage. | ||
- **API Documentation**: OpenAPI for standardized API documentation. | ||
- **Messaging and SMS**: Integrated SMS gateway for OTPs. | ||
|
||
## Prerequisites | ||
- **Java 11+**: Required to run the Spring Boot applications. | ||
- **Maven**: Used for project dependency management. | ||
- **Docker** (optional): For containerization and easier deployment. | ||
- **PostgreSQL**: As the primary database for storing user and account data. | ||
|
||
## Installation Instructions | ||
1. **Clone the Repository**: | ||
```bash | ||
git clone https://github.com/yourusername/webank-online-banking-system.git | ||
cd webank-online-banking-system | ||
``` | ||
2. **Run Database Migration**: | ||
- Ensure PostgreSQL is running and create necessary databases and tables (migration scripts are included in the `db/migrations` folder). | ||
|
||
3. **Build and Run Services**: | ||
```bash | ||
mvn clean install | ||
mvn spring-boot:run | ||
``` | ||
|
||
5. **Access API Documentation**: | ||
- The OpenAPI documentation will be available at `http://localhost:8080/swagger-ui.html` (or the port specified for each module). | ||
|
||
## Usage | ||
- **User Registration**: | ||
- Make a `POST` request to `/register` with `phoneNumber` and `publicKey`. | ||
- Receive an OTP on the provided phone number. | ||
- **OTP Verification**: | ||
- Verify OTP by making a `POST` request to `/verify-otp` with the OTP and public key. | ||
- **Account Management**: | ||
- Access endpoints for balance inquiries, transfers, and account details. | ||
|
||
For a detailed guide on using each endpoint, refer to the [API Documentation](#project-documentation) section. | ||
|
||
## Project Documentation | ||
The architecture documentation and API specifications are available in the `docs` folder. The documentation includes: | ||
- **Architecture Overview**: Detailed information on how OBS interacts with PRS, DAS, and AAS. | ||
- **API Reference**: List of available endpoints, request payloads, and response formats. | ||
- **Security Considerations**: Overview of authentication and data encryption practices. | ||
|
||
## Development and Contribution | ||
We welcome contributions! Please follow these steps: | ||
1. Fork the repository and create a new branch for your feature or bug fix. | ||
2. Follow our [contribution guidelines](CONTRIBUTING.md) for best practices. | ||
3. Submit a pull request detailing your changes. | ||
|
||
## License | ||
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. | ||
|
||
## Contact Information | ||
For questions or support, please reach out to: | ||
- **Email**: [Adorsys]([email protected]) | ||
- **GitHub Issues**: [Submit an issue](https://github.com/ADORSYS-GIS/webank/issues) | ||
|
||
## Acknowledgements | ||
- Thanks to the adorsys development team for their contributions. | ||
- Special thanks to the contributors and libraries that supported this project. | ||
- Special thanks to the development team and contributors for their support and dedication in building this project. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
obs/obs-rest-api/src/main/java/com/adorsys/webank/obs/resource/RegistrationResourceApi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
/* | ||
* Copyright (c) 2018-2024 adorsys GmbH and Co. KG | ||
* All rights are reserved. | ||
*/ | ||
|
||
package com.adorsys.webank.obs.resource; | ||
|
||
import com.adorsys.webank.obs.dto.RegistrationRequest; | ||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponse; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponses; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
|
||
|
||
@RestController | ||
@RequestMapping("/api/registration") | ||
public interface RegistrationResourceApi { | ||
|
||
@Operation(summary = "Register a new bank account", description = "Accepts a phone number and public key for registration") | ||
@ApiResponses(value = { | ||
@ApiResponse(responseCode = "200", description = "Registration successful"), | ||
@ApiResponse(responseCode = "400", description = "Invalid input") | ||
}) | ||
@PostMapping | ||
ResponseEntity<String> registerAccount( | ||
@RequestBody RegistrationRequest registrationRequest | ||
); | ||
} |
22 changes: 22 additions & 0 deletions
22
obs/obs-rest-server/src/main/java/com/adorsys/webank/obs/resource/RegistrationResource.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.adorsys.webank.obs.resource; | ||
|
||
import com.adorsys.webank.obs.dto.RegistrationRequest; | ||
import com.adorsys.webank.obs.service.RegistrationServiceApi; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
@RestController | ||
@RequestMapping("/api/registration") | ||
public class RegistrationResource implements RegistrationResourceApi { | ||
|
||
@Autowired | ||
private RegistrationServiceApi registrationService; | ||
|
||
@Override | ||
@PostMapping | ||
public ResponseEntity<String> registerAccount(@RequestBody RegistrationRequest registrationRequest) { | ||
String result = registrationService.registerAccount(registrationRequest); | ||
return ResponseEntity.ok(result); | ||
} | ||
} |
46 changes: 46 additions & 0 deletions
46
...s-rest-server/src/test/java/com/adorsys/webank/obs/resource/RegistrationResourceTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package com.adorsys.webank.obs.resource; | ||
|
||
import com.adorsys.webank.obs.dto.RegistrationRequest; | ||
import com.adorsys.webank.obs.service.RegistrationServiceApi; | ||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.Test; | ||
import org.mockito.InjectMocks; | ||
import org.mockito.Mock; | ||
import org.mockito.MockitoAnnotations; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
import static org.mockito.Mockito.when; | ||
|
||
public class RegistrationResourceTest { | ||
|
||
@InjectMocks | ||
private RegistrationResource registrationResource; // Class under test | ||
|
||
@Mock | ||
private RegistrationServiceApi registrationService; // Mocked dependency | ||
|
||
@BeforeEach | ||
void setUp() { | ||
MockitoAnnotations.openMocks(this); | ||
} | ||
|
||
@Test | ||
void registerAccount_ShouldReturnSuccessfulResponse() { | ||
// Arrange | ||
RegistrationRequest registrationRequest = new RegistrationRequest(); | ||
registrationRequest.setPhoneNumber(1234567890); | ||
registrationRequest.setPublicKey("testPublicKey"); | ||
|
||
String expectedResponse = "Registration successful"; | ||
when(registrationService.registerAccount(registrationRequest)).thenReturn(expectedResponse); | ||
|
||
// Act | ||
ResponseEntity<String> responseEntity = registrationResource.registerAccount(registrationRequest); | ||
|
||
// Assert | ||
assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); | ||
assertEquals(expectedResponse, responseEntity.getBody()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
25 changes: 25 additions & 0 deletions
25
obs/obs-service-api/src/main/java/com/adorsys/webank/obs/dto/RegistrationRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package com.adorsys.webank.obs.dto; | ||
|
||
public class RegistrationRequest { | ||
|
||
private int phoneNumber; | ||
private String publicKey; | ||
|
||
// Getters and Setters | ||
|
||
public int getPhoneNumber() { | ||
return phoneNumber; | ||
} | ||
|
||
public void setPhoneNumber(int phoneNumber) { | ||
this.phoneNumber = phoneNumber; | ||
} | ||
|
||
public String getPublicKey() { | ||
return publicKey; | ||
} | ||
|
||
public void setPublicKey(String publicKey) { | ||
this.publicKey = publicKey; | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
obs/obs-service-api/src/main/java/com/adorsys/webank/obs/service/RegistrationServiceApi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.adorsys.webank.obs.service; | ||
|
||
import com.adorsys.webank.obs.dto.RegistrationRequest; | ||
|
||
public interface RegistrationServiceApi { | ||
String registerAccount(RegistrationRequest registrationRequest); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -51,6 +51,7 @@ | |
</exclusions> | ||
<scope>test</scope> | ||
</dependency> | ||
|
||
</dependencies> | ||
|
||
</project> |
19 changes: 19 additions & 0 deletions
19
...ervice-impl/src/main/java/com/adorsys/webank/obs/serviceimpl/RegistrationServiceImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.adorsys.webank.obs.serviceimpl; | ||
|
||
import com.adorsys.webank.obs.dto.RegistrationRequest; | ||
import com.adorsys.webank.obs.service.RegistrationServiceApi; | ||
import org.springframework.stereotype.Service; | ||
|
||
@Service | ||
public class RegistrationServiceImpl implements RegistrationServiceApi { | ||
|
||
@Override | ||
public String registerAccount(RegistrationRequest registrationRequest) { | ||
int phoneNumber = registrationRequest.getPhoneNumber(); | ||
String publicKey = registrationRequest.getPublicKey(); | ||
|
||
// Add logic for registering the account with phoneNumber and publicKey | ||
|
||
return "Registration successful for phone number: " + phoneNumber; // Return message including the phone number | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
...ce-impl/src/test/java/com/adorsys/webank/obs/serviceimpl/RegistrationServiceImplTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.adorsys.webank.obs.serviceimpl; | ||
|
||
import com.adorsys.webank.obs.dto.RegistrationRequest; | ||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.Test; | ||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
|
||
class RegistrationServiceImplTest { | ||
|
||
private RegistrationServiceImpl registrationService; | ||
|
||
@BeforeEach | ||
void setUp() { | ||
registrationService = new RegistrationServiceImpl(); | ||
} | ||
|
||
@Test | ||
void registerAccount_ShouldReturnSuccessMessageWithPhoneNumber_WhenGivenValidInput() { | ||
// Arrange | ||
RegistrationRequest request = new RegistrationRequest(); | ||
int testPhoneNumber = 123456789; // Set a valid phone number | ||
request.setPhoneNumber(testPhoneNumber); | ||
request.setPublicKey("validPublicKey"); // Set a valid public key | ||
|
||
// Act | ||
String result = registrationService.registerAccount(request); | ||
|
||
// Assert | ||
assertEquals("Registration successful for phone number: " + testPhoneNumber, result); | ||
} | ||
|
||
// You can add more tests here for edge cases, invalid input, etc. | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters