1.0.2 • Published 1 month ago

profiled-mock-api v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
1 month ago

Profiled Mock API

This is a server built on top of express which serves JSON and XML files based on file/folder configuration. The root directory of the response files can be separated by "profiles."

Getting Started

Step 1: Create mock server

One can create a new index.ts file and fill it with contents:

import { MockApiServer, GlobalLogger, LogLevel } from 'profiled-mock-api'

GlobalLogger.getInstance().logLevel = LogLevel.ALL

const mockServer: MockApiServer = new MockApiServer({
    initialActiveProfile: "default", // default: 'default'
    port: 3000, // default 3000
    profileDirectory: "responses"
})


mockServer.start()

Step 2: Create response files

With file structure:

node_modules
responses
    default
        ping.json
index.ts
package.json

we can create ping.json:

{
    "message": "pong"
}

responses is where the profile directories will be stored. responses/default is the root directory where responses of the "default" profile will be served from.

Step 3: Run the server:

ts-node index.ts

Step 4: Call the endpoint:

GET http://localhost:3000/ping

Specify method and response

Option 1: Simple files:

Directory Structure:

resources
    default
        ping.json
        some
            deep
                path
                    status.json

Calls:

Option 2: Complex Files with HTTP Method:

Directory Structure:

resources
    default
        ping.GET.json
        ping.POST.json
        some
            deep
                path
                    status.GET.json
                    status.PUT.json

Calls:

Option 3: Complex Files with HTTP Method and response status:

Directory Structure:

resources
    default
        ping.GET.200.json
        ping.POST.500.json
        some
            deep
                path
                    status.GET.200.json
                    status.PUT.201.json
        health
            check.500.json

Calls:

Option 4: Directories:

Directory Structure:

resources
    default
        ping
            GET.json
            POST.json
        health
            check
                GET.json
                POST.201.json
                PUT.500.json

Calls:

Profiles

Suppose we have a directory structure as follows:

resources
    test_case_happy_path
        ping
            GET.200.json
        health
            check
                GET.200.json
    test_case_evtang_broken
        ping
            GET.500.json
        health
            check
                GET.500.json

All Profiles:

Profiles can be seen at GET http://localhost:3000/profiles:

{
    "test_case_happy_path": {
        "responseFileBasePath": "responses\\test_case_happy_path"
    },
    "test_case_evtang_broken": {
        "responseFileBasePath": "responses\\test_case_evtang_broken"
    }
}

Active Profiles:

The active profile can be seen at GET http://localhost:3000/activeProfile:

{
    "activeProfile": "test_case_happy_path"
}

Changing Active Profile:

The active profile can be seen at POST http://localhost:3000/activeProfile: with body

{
    "newlyActiveProfile": "test_case_happy_path"
}

Response 200: {

}

1.0.2

1 month ago

1.0.1

1 month ago

1.0.0

1 month ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago