Skip to content

elvisoliveira/literate-train

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Literate Train

The name for this project was automatically generated by Github. Follow me: @elvisoliveira

How to execute?

mvn spring-boot:run

How to test the code?

mvn test

How to test the app?

newman run ./postman_collection.json --environment ./postman_environment.json --iteration-data ./postman_data.json

Example

Screenshot

How to run the UI?

There is a simple UI running on the root (/) controller. Since the default port is 1337, if you are running the app locally you can have access to it on http://127.0.0.1:1337/

When the app starts a keypair is generated and delivered the file postman_data.json, you may use the info on it.

The Challange: Single Digit

A single digit is defined following this rules: Given an integer, we need to find the single digit of it.

  • If x has only one digit, then its single digit is x.
  • Otherwise, the single digit of x equals the single digit of the sum of the digits of x.

For instance, the single digit of 9875 will be calculated as:

Parameter Calc Return
9875 9 + 8 + 7 + 5 29
29 2 + 9 11
11 1 + 1 2
2 2 2
2 2 2

Given two numbers n and k, P must be defined as an string concatenation of n * k.

Example:

  • n = 9875
  • k = 4
  • p = 9875 9875 9875 9875
singleDigit = singleDigit(9875987598759875)
// 5 + 7 + 8 + 9 + 5 + 7 + 8 + 9 + 5 + 7 + 8 + 9 + 5 + 7 + 8 + 9 = 116
singleDigit = singleDigit(116)
// 1 + 1 + 6 = 8
singleDigit = singleDigit(8)

The singleDigit function must have the following parameters:

  1. n: A string representing an integer 1 <= n <= 10ˆ10000002
  2. k: An integer representing the number of concatenation times 1 <= k <= 10ˆ53
  3. The single digit function shall return an integer

User CRUD

  • A CRUD must be created for users
  • A user has a name, email, address and a list of single digit results already calculated
  • Each result list object must contain which parameters were inputted and the result of it

CACHE

  • A memory cache must be created to store the last 10 calculations performed by the single digit function, this cache is user independent, that is, if a calculation has already been performed and it is on the cache, it must not be performed again. Using caching frameworks is not allowed

Encryption

  • User name and email information must be encrypted with an asymmetric key RSA of size 2048. Each user may have a separated encryption key. The information will be encrypted with the public key and the client will decrypt using their private key

API'S

  • Endpoints must be made available for the users CRUD
  • An endpoint must be available for single digit calculation, this can be optionally associated with a user
  • An endpoint that retrieves all calculations for a given user must be created
  • An endpoint to send the user public key that will be used for encryption must be created. This API should receive as string that will contain the key

Building the app

  • The application must contain an in-memory database
  • Maven should be used to build, run tests and start the application
  • Unit tests must be created
  • Postman integrated tests must be created and it's collection must be at the root of the repository
  • This collection should be called "postman_collection.json"
  • An Open API Swagger file should be created with API specification

About

A programming challange in Java SpringBoot. Restful service that implements a cache based user manager.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published