How to use api method in mountebank

Best JavaScript code snippet using mountebank

services.js

Source:services.js Github

copy

Full Screen

1/* @flow */2import { GET, PUT, POST, DELETE } from "metabase/lib/api";3import { IS_EMBED_PREVIEW } from "metabase/lib/embed";4// use different endpoints for embed previews5const embedBase = IS_EMBED_PREVIEW ? "/api/preview_embed" : "/api/embed";6// $FlowFixMe: Flow doesn't understand webpack loader syntax7import getGAMetadata from "promise-loader?global!metabase/lib/ga-metadata"; // eslint-disable-line import/default8import type { Data, Options } from "metabase/lib/api";9import type { DatabaseId } from "metabase-types/types/Database";10import type { DatabaseCandidates } from "metabase-types/types/Auto";11import type { DashboardWithCards } from "metabase-types/types/Dashboard";12export const ActivityApi = {13 list: GET("/api/activity"),14 recent_views: GET("/api/activity/recent_views"),15};16export const CardApi = {17 list: GET("/api/card", (cards, { data }) =>18 // HACK: support for the "q" query param until backend implements it19 cards.filter(20 card =>21 !data.q || card.name.toLowerCase().indexOf(data.q.toLowerCase()) >= 0,22 ),23 ),24 create: POST("/api/card"),25 get: GET("/api/card/:cardId"),26 update: PUT("/api/card/:id"),27 delete: DELETE("/api/card/:cardId"),28 query: POST("/api/card/:cardId/query"),29 // isfavorite: GET("/api/card/:cardId/favorite"),30 favorite: POST("/api/card/:cardId/favorite"),31 unfavorite: DELETE("/api/card/:cardId/favorite"),32 listPublic: GET("/api/card/public"),33 listEmbeddable: GET("/api/card/embeddable"),34 createPublicLink: POST("/api/card/:id/public_link"),35 deletePublicLink: DELETE("/api/card/:id/public_link"),36 // related37 related: GET("/api/card/:cardId/related"),38 adHocRelated: POST("/api/card/related"),39};40export const DashboardApi = {41 list: GET("/api/dashboard"),42 // creates a new empty dashboard43 create: POST("/api/dashboard"),44 // saves a complete transient dashboard45 save: POST("/api/dashboard/save"),46 get: GET("/api/dashboard/:dashId"),47 update: PUT("/api/dashboard/:id"),48 delete: DELETE("/api/dashboard/:dashId"),49 addcard: POST("/api/dashboard/:dashId/cards"),50 removecard: DELETE("/api/dashboard/:dashId/cards"),51 reposition_cards: PUT("/api/dashboard/:dashId/cards"),52 favorite: POST("/api/dashboard/:dashId/favorite"),53 unfavorite: DELETE("/api/dashboard/:dashId/favorite"),54 listPublic: GET("/api/dashboard/public"),55 listEmbeddable: GET("/api/dashboard/embeddable"),56 createPublicLink: POST("/api/dashboard/:id/public_link"),57 deletePublicLink: DELETE("/api/dashboard/:id/public_link"),58};59export const CollectionsApi = {60 list: GET("/api/collection"),61 create: POST("/api/collection"),62 get: GET("/api/collection/:id"),63 // Temporary route for getting things not in a collection64 getRoot: GET("/api/collection/root"),65 update: PUT("/api/collection/:id"),66 graph: GET("/api/collection/graph"),67 updateGraph: PUT("/api/collection/graph"),68};69export const PublicApi = {70 card: GET("/api/public/card/:uuid"),71 cardQuery: GET("/api/public/card/:uuid/query"),72 dashboard: GET("/api/public/dashboard/:uuid"),73 dashboardCardQuery: GET("/api/public/dashboard/:uuid/card/:cardId"),74};75export const EmbedApi = {76 card: GET(embedBase + "/card/:token"),77 cardQuery: GET(embedBase + "/card/:token/query"),78 dashboard: GET(embedBase + "/dashboard/:token"),79 dashboardCardQuery: GET(80 embedBase + "/dashboard/:token/dashcard/:dashcardId/card/:cardId",81 ),82};83type $AutoApi = {84 dashboard: ({ subPath: string }) => DashboardWithCards,85 db_candidates: ({ id: DatabaseId }) => DatabaseCandidates,86};87export const AutoApi: $AutoApi = {88 dashboard: GET("/api/automagic-dashboards/:subPath", {89 // this prevents the `subPath` parameter from being URL encoded90 raw: { subPath: true },91 }),92 db_candidates: GET("/api/automagic-dashboards/database/:id/candidates"),93};94export const EmailApi = {95 updateSettings: PUT("/api/email"),96 sendTest: POST("/api/email/test"),97 clear: DELETE("/api/email"),98};99export const SlackApi = {100 updateSettings: PUT("/api/slack/settings"),101};102export const LdapApi = {103 updateSettings: PUT("/api/ldap/settings"),104};105export const MetabaseApi = {106 db_list: GET("/api/database"),107 db_create: POST("/api/database"),108 db_validate: POST("/api/database/validate"),109 db_add_sample_dataset: POST("/api/database/sample_dataset"),110 db_get: GET("/api/database/:dbId"),111 db_update: PUT("/api/database/:id"),112 db_delete: DELETE("/api/database/:dbId"),113 db_metadata: GET("/api/database/:dbId/metadata"),114 db_schemas: GET("/api/database/:dbId/schemas"),115 db_schema_tables: GET("/api/database/:dbId/schema/:schemaName"),116 //db_tables: GET("/api/database/:dbId/tables"),117 db_fields: GET("/api/database/:dbId/fields"),118 db_idfields: GET("/api/database/:dbId/idfields"),119 db_autocomplete_suggestions: GET(120 "/api/database/:dbId/autocomplete_suggestions?prefix=:prefix",121 ),122 db_sync_schema: POST("/api/database/:dbId/sync_schema"),123 db_rescan_values: POST("/api/database/:dbId/rescan_values"),124 db_discard_values: POST("/api/database/:dbId/discard_values"),125 table_list: GET("/api/table"),126 // table_get: GET("/api/table/:tableId"),127 table_update: PUT("/api/table/:id"),128 // table_fields: GET("/api/table/:tableId/fields"),129 table_fks: GET("/api/table/:tableId/fks"),130 // table_reorder_fields: POST("/api/table/:tableId/reorder"),131 table_query_metadata: GET(132 "/api/table/:tableId/query_metadata",133 async table => {134 // HACK: inject GA metadata that we don't have intergrated on the backend yet135 if (table && table.db && table.db.engine === "googleanalytics") {136 const GA = await getGAMetadata();137 table.fields = table.fields.map(field => ({138 ...field,139 ...GA.fields[field.name],140 }));141 table.metrics.push(142 ...GA.metrics.map(metric => ({143 ...metric,144 table_id: table.id,145 googleAnalyics: true,146 })),147 );148 table.segments.push(149 ...GA.segments.map(segment => ({150 ...segment,151 table_id: table.id,152 googleAnalyics: true,153 })),154 );155 }156 if (table && table.fields) {157 // replace dimension_options IDs with objects158 for (const field of table.fields) {159 if (field.dimension_options) {160 field.dimension_options = field.dimension_options.map(161 id => table.dimension_options[id],162 );163 }164 if (field.default_dimension_option) {165 field.default_dimension_option =166 table.dimension_options[field.default_dimension_option];167 }168 }169 }170 return table;171 },172 ),173 // table_sync_metadata: POST("/api/table/:tableId/sync"),174 table_rescan_values: POST("/api/table/:tableId/rescan_values"),175 table_discard_values: POST("/api/table/:tableId/discard_values"),176 field_get: GET("/api/field/:fieldId"),177 // field_summary: GET("/api/field/:fieldId/summary"),178 field_values: GET("/api/field/:fieldId/values"),179 field_values_update: POST("/api/field/:fieldId/values"),180 field_update: PUT("/api/field/:id"),181 field_dimension_update: POST("/api/field/:fieldId/dimension"),182 field_dimension_delete: DELETE("/api/field/:fieldId/dimension"),183 field_rescan_values: POST("/api/field/:fieldId/rescan_values"),184 field_discard_values: POST("/api/field/:fieldId/discard_values"),185 field_search: GET("/api/field/:fieldId/search/:searchFieldId"),186 field_remapping: GET("/api/field/:fieldId/remapping/:remappedFieldId"),187 dataset: POST("/api/dataset"),188 dataset_duration: POST("/api/dataset/duration"),189 native: POST("/api/dataset/native"),190 // to support audit app allow the endpoint to be provided in the query191 datasetEndpoint: POST("/api/:endpoint", {192 // this prevents the `endpoint` parameter from being URL encoded193 raw: { endpoint: true },194 }),195};196export const PulseApi = {197 list: GET("/api/pulse"),198 create: POST("/api/pulse"),199 get: GET("/api/pulse/:pulseId"),200 update: PUT("/api/pulse/:id"),201 delete: DELETE("/api/pulse/:pulseId"),202 test: POST("/api/pulse/test"),203 form_input: GET("/api/pulse/form_input"),204 preview_card: GET("/api/pulse/preview_card_info/:id"),205};206export const AlertApi = {207 list: GET("/api/alert"),208 list_for_question: GET("/api/alert/question/:questionId"),209 create: POST("/api/alert"),210 update: PUT("/api/alert/:id"),211 delete: DELETE("/api/alert/:id"),212 unsubscribe: PUT("/api/alert/:id/unsubscribe"),213};214export const SegmentApi = {215 list: GET("/api/segment"),216 create: POST("/api/segment"),217 get: GET("/api/segment/:segmentId"),218 update: PUT("/api/segment/:id"),219 delete: DELETE("/api/segment/:segmentId"),220};221export const MetricApi = {222 list: GET("/api/metric"),223 create: POST("/api/metric"),224 get: GET("/api/metric/:metricId"),225 update: PUT("/api/metric/:id"),226 update_important_fields: PUT("/api/metric/:metricId/important_fields"),227 delete: DELETE("/api/metric/:metricId"),228};229export const RevisionApi = {230 list: GET("/api/revision"),231 revert: POST("/api/revision/revert"),232};233export const RevisionsApi = {234 get: GET("/api/:entity/:id/revisions"),235};236export const SessionApi = {237 create: POST("/api/session"),238 createWithGoogleAuth: POST("/api/session/google_auth"),239 delete: DELETE("/api/session"),240 properties: GET("/api/session/properties"),241 forgot_password: POST("/api/session/forgot_password"),242 reset_password: POST("/api/session/reset_password"),243 password_reset_token_valid: GET("/api/session/password_reset_token_valid"),244};245export const SettingsApi = {246 list: GET("/api/setting"),247 put: PUT("/api/setting/:key"),248 putAll: PUT("/api/setting"),249 // setAll: PUT("/api/setting"),250 // delete: DELETE("/api/setting/:key"),251};252export const PermissionsApi = {253 groups: GET("/api/permissions/group"),254 groupDetails: GET("/api/permissions/group/:id"),255 graph: GET("/api/permissions/graph"),256 updateGraph: PUT("/api/permissions/graph"),257 createGroup: POST("/api/permissions/group"),258 memberships: GET("/api/permissions/membership"),259 createMembership: POST("/api/permissions/membership"),260 deleteMembership: DELETE("/api/permissions/membership/:id"),261 updateGroup: PUT("/api/permissions/group/:id"),262 deleteGroup: DELETE("/api/permissions/group/:id"),263};264export const GettingStartedApi = {265 get: GET("/api/getting_started"),266};267export const SetupApi = {268 create: POST("/api/setup"),269 validate_db: POST("/api/setup/validate"),270 admin_checklist: GET("/api/setup/admin_checklist"),271};272export const UserApi = {273 create: POST("/api/user"),274 list: GET("/api/user"),275 current: GET("/api/user/current"),276 // get: GET("/api/user/:userId"),277 update: PUT("/api/user/:id"),278 update_password: PUT("/api/user/:id/password"),279 update_qbnewb: PUT("/api/user/:id/qbnewb"),280 delete: DELETE("/api/user/:userId"),281 reactivate: PUT("/api/user/:userId/reactivate"),282 send_invite: POST("/api/user/:id/send_invite"),283};284export const UtilApi = {285 password_check: POST("/api/util/password_check"),286 random_token: GET("/api/util/random_token"),287 logs: GET("/api/util/logs"),288 bug_report_details: GET("/api/util/bug_report_details"),289};290export const GeoJSONApi = {291 get: GET("/api/geojson/:id"),292};293export const I18NApi = {294 locale: GET("/app/locales/:locale.json"),295};296export const TaskApi = {297 get: GET("/api/task"),298 getJobsInfo: GET("/api/task/info"),299};300export function setPublicQuestionEndpoints(uuid: string) {301 setFieldEndpoints("/api/public/card/:uuid", { uuid });302}303export function setPublicDashboardEndpoints(uuid: string) {304 setFieldEndpoints("/api/public/dashboard/:uuid", { uuid });305}306export function setEmbedQuestionEndpoints(token: string) {307 if (!IS_EMBED_PREVIEW) {308 setFieldEndpoints("/api/embed/card/:token", { token });309 }310}311export function setEmbedDashboardEndpoints(token: string) {312 if (!IS_EMBED_PREVIEW) {313 setFieldEndpoints("/api/embed/dashboard/:token", { token });314 }315}316function GET_with(url: string, params: Data) {317 return (data: Data, options?: Options) =>318 GET(url)({ ...params, ...data }, options);319}320export function setFieldEndpoints(prefix: string, params: Data) {321 MetabaseApi.field_values = GET_with(322 prefix + "/field/:fieldId/values",323 params,324 );325 MetabaseApi.field_search = GET_with(326 prefix + "/field/:fieldId/search/:searchFieldId",327 params,328 );329 MetabaseApi.field_remapping = GET_with(330 prefix + "/field/:fieldId/remapping/:remappedFieldId",331 params,332 );333}...

Full Screen

Full Screen

characters.js

Source:characters.js Github

copy

Full Screen

1const characters = {2 "results": [3 {4 "id": 1,5 "name": "Rick Sanchez",6 "status": "Alive",7 "species": "Human",8 "type": "",9 "gender": "Male",10 "origin": {11 "name": "Earth (C-137)",12 "url": "https://rickandmortyapi.com/api/location/1"13 },14 "location": {15 "name": "Citadel of Ricks",16 "url": "https://rickandmortyapi.com/api/location/3"17 },18 "image": "https://rickandmortyapi.com/api/character/avatar/1.jpeg",19 "episode": [20 "https://rickandmortyapi.com/api/episode/1",21 "https://rickandmortyapi.com/api/episode/2",22 "https://rickandmortyapi.com/api/episode/3",23 "https://rickandmortyapi.com/api/episode/4",24 "https://rickandmortyapi.com/api/episode/5",25 "https://rickandmortyapi.com/api/episode/6",26 "https://rickandmortyapi.com/api/episode/7",27 "https://rickandmortyapi.com/api/episode/8",28 "https://rickandmortyapi.com/api/episode/9",29 "https://rickandmortyapi.com/api/episode/10",30 "https://rickandmortyapi.com/api/episode/11",31 "https://rickandmortyapi.com/api/episode/12",32 "https://rickandmortyapi.com/api/episode/13",33 "https://rickandmortyapi.com/api/episode/14",34 "https://rickandmortyapi.com/api/episode/15",35 "https://rickandmortyapi.com/api/episode/16",36 "https://rickandmortyapi.com/api/episode/17",37 "https://rickandmortyapi.com/api/episode/18",38 "https://rickandmortyapi.com/api/episode/19",39 "https://rickandmortyapi.com/api/episode/20",40 "https://rickandmortyapi.com/api/episode/21",41 "https://rickandmortyapi.com/api/episode/22",42 "https://rickandmortyapi.com/api/episode/23",43 "https://rickandmortyapi.com/api/episode/24",44 "https://rickandmortyapi.com/api/episode/25",45 "https://rickandmortyapi.com/api/episode/26",46 "https://rickandmortyapi.com/api/episode/27",47 "https://rickandmortyapi.com/api/episode/28",48 "https://rickandmortyapi.com/api/episode/29",49 "https://rickandmortyapi.com/api/episode/30",50 "https://rickandmortyapi.com/api/episode/31",51 "https://rickandmortyapi.com/api/episode/32",52 "https://rickandmortyapi.com/api/episode/33",53 "https://rickandmortyapi.com/api/episode/34",54 "https://rickandmortyapi.com/api/episode/35",55 "https://rickandmortyapi.com/api/episode/36",56 "https://rickandmortyapi.com/api/episode/37",57 "https://rickandmortyapi.com/api/episode/38",58 "https://rickandmortyapi.com/api/episode/39",59 "https://rickandmortyapi.com/api/episode/40",60 "https://rickandmortyapi.com/api/episode/41",61 "https://rickandmortyapi.com/api/episode/42",62 "https://rickandmortyapi.com/api/episode/43",63 "https://rickandmortyapi.com/api/episode/44",64 "https://rickandmortyapi.com/api/episode/45",65 "https://rickandmortyapi.com/api/episode/46",66 "https://rickandmortyapi.com/api/episode/47",67 "https://rickandmortyapi.com/api/episode/48",68 "https://rickandmortyapi.com/api/episode/49",69 "https://rickandmortyapi.com/api/episode/50",70 "https://rickandmortyapi.com/api/episode/51"71 ],72 "url": "https://rickandmortyapi.com/api/character/1",73 "created": "2017-11-04T18:48:46.250Z"74 },75 {76 "id": 2,77 "name": "Morty Smith",78 "status": "Alive",79 "species": "Human",80 "type": "",81 "gender": "Male",82 "origin": {83 "name": "unknown",84 "url": ""85 },86 "location": {87 "name": "Citadel of Ricks",88 "url": "https://rickandmortyapi.com/api/location/3"89 },90 "image": "https://rickandmortyapi.com/api/character/avatar/2.jpeg",91 "episode": [92 "https://rickandmortyapi.com/api/episode/1",93 "https://rickandmortyapi.com/api/episode/2",94 "https://rickandmortyapi.com/api/episode/3",95 "https://rickandmortyapi.com/api/episode/4",96 "https://rickandmortyapi.com/api/episode/5",97 "https://rickandmortyapi.com/api/episode/6",98 "https://rickandmortyapi.com/api/episode/7",99 "https://rickandmortyapi.com/api/episode/8",100 "https://rickandmortyapi.com/api/episode/9",101 "https://rickandmortyapi.com/api/episode/10",102 "https://rickandmortyapi.com/api/episode/11",103 "https://rickandmortyapi.com/api/episode/12",104 "https://rickandmortyapi.com/api/episode/13",105 "https://rickandmortyapi.com/api/episode/14",106 "https://rickandmortyapi.com/api/episode/15",107 "https://rickandmortyapi.com/api/episode/16",108 "https://rickandmortyapi.com/api/episode/17",109 "https://rickandmortyapi.com/api/episode/18",110 "https://rickandmortyapi.com/api/episode/19",111 "https://rickandmortyapi.com/api/episode/20",112 "https://rickandmortyapi.com/api/episode/21",113 "https://rickandmortyapi.com/api/episode/22",114 "https://rickandmortyapi.com/api/episode/23",115 "https://rickandmortyapi.com/api/episode/24",116 "https://rickandmortyapi.com/api/episode/25",117 "https://rickandmortyapi.com/api/episode/26",118 "https://rickandmortyapi.com/api/episode/27",119 "https://rickandmortyapi.com/api/episode/28",120 "https://rickandmortyapi.com/api/episode/29",121 "https://rickandmortyapi.com/api/episode/30",122 "https://rickandmortyapi.com/api/episode/31",123 "https://rickandmortyapi.com/api/episode/32",124 "https://rickandmortyapi.com/api/episode/33",125 "https://rickandmortyapi.com/api/episode/34",126 "https://rickandmortyapi.com/api/episode/35",127 "https://rickandmortyapi.com/api/episode/36",128 "https://rickandmortyapi.com/api/episode/37",129 "https://rickandmortyapi.com/api/episode/38",130 "https://rickandmortyapi.com/api/episode/39",131 "https://rickandmortyapi.com/api/episode/40",132 "https://rickandmortyapi.com/api/episode/41",133 "https://rickandmortyapi.com/api/episode/42",134 "https://rickandmortyapi.com/api/episode/43",135 "https://rickandmortyapi.com/api/episode/44",136 "https://rickandmortyapi.com/api/episode/45",137 "https://rickandmortyapi.com/api/episode/46",138 "https://rickandmortyapi.com/api/episode/47",139 "https://rickandmortyapi.com/api/episode/48",140 "https://rickandmortyapi.com/api/episode/49",141 "https://rickandmortyapi.com/api/episode/50",142 "https://rickandmortyapi.com/api/episode/51"143 ],144 "url": "https://rickandmortyapi.com/api/character/2",145 "created": "2017-11-04T18:50:21.651Z"146 },147 {148 "id": 3,149 "name": "Summer Smith",150 "status": "Alive",151 "species": "Human",152 "type": "",153 "gender": "Female",154 "origin": {155 "name": "Earth (Replacement Dimension)",156 "url": "https://rickandmortyapi.com/api/location/20"157 },158 "location": {159 "name": "Earth (Replacement Dimension)",160 "url": "https://rickandmortyapi.com/api/location/20"161 },162 "image": "https://rickandmortyapi.com/api/character/avatar/3.jpeg",163 "episode": [164 "https://rickandmortyapi.com/api/episode/6",165 "https://rickandmortyapi.com/api/episode/7",166 "https://rickandmortyapi.com/api/episode/8",167 "https://rickandmortyapi.com/api/episode/9",168 "https://rickandmortyapi.com/api/episode/10",169 "https://rickandmortyapi.com/api/episode/11",170 "https://rickandmortyapi.com/api/episode/12",171 "https://rickandmortyapi.com/api/episode/14",172 "https://rickandmortyapi.com/api/episode/15",173 "https://rickandmortyapi.com/api/episode/16",174 "https://rickandmortyapi.com/api/episode/17",175 "https://rickandmortyapi.com/api/episode/18",176 "https://rickandmortyapi.com/api/episode/19",177 "https://rickandmortyapi.com/api/episode/20",178 "https://rickandmortyapi.com/api/episode/21",179 "https://rickandmortyapi.com/api/episode/22",180 "https://rickandmortyapi.com/api/episode/23",181 "https://rickandmortyapi.com/api/episode/24",182 "https://rickandmortyapi.com/api/episode/25",183 "https://rickandmortyapi.com/api/episode/26",184 "https://rickandmortyapi.com/api/episode/27",185 "https://rickandmortyapi.com/api/episode/29",186 "https://rickandmortyapi.com/api/episode/30",187 "https://rickandmortyapi.com/api/episode/31",188 "https://rickandmortyapi.com/api/episode/32",189 "https://rickandmortyapi.com/api/episode/33",190 "https://rickandmortyapi.com/api/episode/34",191 "https://rickandmortyapi.com/api/episode/35",192 "https://rickandmortyapi.com/api/episode/36",193 "https://rickandmortyapi.com/api/episode/38",194 "https://rickandmortyapi.com/api/episode/39",195 "https://rickandmortyapi.com/api/episode/40",196 "https://rickandmortyapi.com/api/episode/41",197 "https://rickandmortyapi.com/api/episode/42",198 "https://rickandmortyapi.com/api/episode/43",199 "https://rickandmortyapi.com/api/episode/44",200 "https://rickandmortyapi.com/api/episode/45",201 "https://rickandmortyapi.com/api/episode/46",202 "https://rickandmortyapi.com/api/episode/47",203 "https://rickandmortyapi.com/api/episode/48",204 "https://rickandmortyapi.com/api/episode/49",205 "https://rickandmortyapi.com/api/episode/51"206 ],207 "url": "https://rickandmortyapi.com/api/character/3",208 "created": "2017-11-04T19:09:56.428Z"209 },210 {211 "id": 4,212 "name": "Beth Smith",213 "status": "Alive",214 "species": "Human",215 "type": "",216 "gender": "Female",217 "origin": {218 "name": "Earth (Replacement Dimension)",219 "url": "https://rickandmortyapi.com/api/location/20"220 },221 "location": {222 "name": "Earth (Replacement Dimension)",223 "url": "https://rickandmortyapi.com/api/location/20"224 },225 "image": "https://rickandmortyapi.com/api/character/avatar/4.jpeg",226 "episode": [227 "https://rickandmortyapi.com/api/episode/6",228 "https://rickandmortyapi.com/api/episode/7",229 "https://rickandmortyapi.com/api/episode/8",230 "https://rickandmortyapi.com/api/episode/9",231 "https://rickandmortyapi.com/api/episode/10",232 "https://rickandmortyapi.com/api/episode/11",233 "https://rickandmortyapi.com/api/episode/12",234 "https://rickandmortyapi.com/api/episode/14",235 "https://rickandmortyapi.com/api/episode/15",236 "https://rickandmortyapi.com/api/episode/16",237 "https://rickandmortyapi.com/api/episode/18",238 "https://rickandmortyapi.com/api/episode/19",239 "https://rickandmortyapi.com/api/episode/20",240 "https://rickandmortyapi.com/api/episode/21",241 "https://rickandmortyapi.com/api/episode/22",242 "https://rickandmortyapi.com/api/episode/23",243 "https://rickandmortyapi.com/api/episode/24",244 "https://rickandmortyapi.com/api/episode/25",245 "https://rickandmortyapi.com/api/episode/26",246 "https://rickandmortyapi.com/api/episode/27",247 "https://rickandmortyapi.com/api/episode/28",248 "https://rickandmortyapi.com/api/episode/29",249 "https://rickandmortyapi.com/api/episode/30",250 "https://rickandmortyapi.com/api/episode/31",251 "https://rickandmortyapi.com/api/episode/32",252 "https://rickandmortyapi.com/api/episode/33",253 "https://rickandmortyapi.com/api/episode/34",254 "https://rickandmortyapi.com/api/episode/35",255 "https://rickandmortyapi.com/api/episode/36",256 "https://rickandmortyapi.com/api/episode/38",257 "https://rickandmortyapi.com/api/episode/39",258 "https://rickandmortyapi.com/api/episode/40",259 "https://rickandmortyapi.com/api/episode/41",260 "https://rickandmortyapi.com/api/episode/42",261 "https://rickandmortyapi.com/api/episode/43",262 "https://rickandmortyapi.com/api/episode/44",263 "https://rickandmortyapi.com/api/episode/45",264 "https://rickandmortyapi.com/api/episode/46",265 "https://rickandmortyapi.com/api/episode/47",266 "https://rickandmortyapi.com/api/episode/48",267 "https://rickandmortyapi.com/api/episode/49",268 "https://rickandmortyapi.com/api/episode/51"269 ],270 "url": "https://rickandmortyapi.com/api/character/4",271 "created": "2017-11-04T19:22:43.665Z"272 },273 ],274}...

Full Screen

Full Screen

3project.js

Source:3project.js Github

copy

Full Screen

1/**2 * @apiDefine 3project 3.0 项目模块3 */4/**5 *6 *7 * @api {post} /project/create.htm 3.01 创建项目8 *9 * @apiVersion 0.0.110 *11 * @apiName create12 *13 * @apiGroup 3project14 *15 * @apiParam {String} userToken 用户令牌16 *17 * @apiParam {String} name 项目名称18 *19 * @apiParam {Long} charger 项目负责人20 *21 * @apiParam {Long} beginDate 项目开始时间22 *23 * @apiParam {Long} deadline 项目结束时间24 *25 * @apiPermission none26 *27 * @apiDescription 创建项目28 *29 * @apiSuccess {Int} code 状态码(默认为0)30 *31 * @apiSuccess {String} msg 状态消息32 *33 */34/**35 * @api {post} /project/my.htm 3.02 和我相关的项目36 *37 * @apiVersion 0.0.138 *39 * @apiName my40 *41 * @apiGroup 3project42 *43 * @apiParam {String} userToken 用户令牌44 *45 * @apiParam {int} no 页码46 *47 * @apiParam {int} size 分页大小48 *49 *50 * @apiPermission none51 *52 * @apiDescription 和我相关的项目53 *54 * @apiSuccess {Int} code 状态码(默认为0)55 *56 * @apiSuccess {String} msg 状态消息57 *58 * @apiSuccess {array} list 项目集合59 *60 * @apiSuccess {long} list.id 项目id61 *62 * @apiSuccess {long} list.name 项目名称63 *64 * @apiSuccess {object} list.creater 创建人信息65 *66 * @apiSuccess {object} list.creater.name 创建人姓名67 *68 * @apiSuccess {object} list.creater.avatar 创建人姓名69 */70/**71 * @api {post} /project/delete.htm 3.03 删除某个项目72 *73 * @apiVersion 0.0.174 *75 * @apiName delete76 *77 * @apiGroup 3project78 *79 * @apiParam {String} userToken 用户令牌80 *81 * @apiParam {long} id 项目id82 *83 *84 * @apiPermission none85 *86 * @apiDescription 删除某个项目87 *88 * @apiSuccess {Int} code 状态码(默认为0)89 *90 * @apiSuccess {String} msg 状态消息91 *92 */93/**94 * @api {post} /project/findbyid.htm 3.04 项目详情95 *96 * @apiVersion 0.0.197 *98 * @apiName findbyid99 *100 * @apiGroup 3project101 *102 * @apiParam {String} userToken 用户令牌103 *104 * @apiParam {long} id 项目id105 *106 *107 * @apiPermission none108 *109 * @apiDescription 项目详情110 *111 * @apiSuccess {Int} code 状态码(默认为0)112 *113 * @apiSuccess {String} msg 状态消息114 *115 * @apiSuccess {long} id 项目id116 *117 * @apiSuccess {String} name 项目名称118 *119 * @apiSuccess {String} note 项目内容120 *121 * @apiSuccess {int} total 项目任务总个数122 *123 *@apiSuccess {int} finish 项目完成任务数124 *125 *@apiSuccess {object} charger 项目负责人126 *127 * @apiSuccess {object} charger.id 项目负责人id128 *129 * @apiSuccess {object} charger.name 项目负责人姓名130 *131 * @apiSuccess {object} charger.avatar 项目负责人头像132 *133 * @apiSuccess {array} tasks 项目里面的任务134 *135 * @apiSuccess {long} tasks.id 项目里面的任务id136 *137 * @apiSuccess {String} tasks.note 任务内容138 *139 * @apiSuccess {object} tasks.executor 任务执行者140 *141 * @apiSuccess {long} tasks.executor.id 任务执行者id142 *143 * @apiSuccess {String} tasks.executor.name 任务执行者姓名144 *145 * @apiSuccess {String} tasks.executor.avatar 任务执行者头像146 *147 */148/**149 * @api {post} /project/update.htm 3.05 更新某个项目150 *151 * @apiVersion 0.0.1152 *153 * @apiName update154 *155 * @apiGroup 3project156 *157 * @apiParam {String} userToken 用户令牌158 *159 * @apiParam {long} id 项目id160 *161 * @apiParam {long} charger 项目负责人id162 *163 * @apiParam {long} deadline 项目结束时间164 *165 * @apiParam {long} beginDate 项目开始时间166 *167 * @apiParam {long} name 项目名称168 *169 * @apiPermission none170 *171 * @apiDescription 更新某个项目172 *173 * @apiSuccess {Int} code 状态码(默认为0)174 *175 * @apiSuccess {String} msg 状态消息176 *177 */178/**179 * @api {post} /project/members.htm 3.06 获取项目成员180 *181 * @apiVersion 0.0.1182 *183 * @apiName members184 *185 * @apiGroup 3project186 *187 * @apiParam {String} userToken 用户令牌188 *189 * @apiParam {long} id 项目id190 *191 *192 * @apiPermission none193 *194 * @apiDescription 获取项目成员195 *196 * @apiSuccess {Int} code 状态码(默认为0)197 *198 * @apiSuccess {String} msg 状态消息199 *200 * @apiSuccess {array} list 项目成员集合201 *202 * @apiSuccess {long} list.id 成员id203 *204 * @apiSuccess {object} list.name 创建人姓名205 *206 * @apiSuccess {object} list.avatar 创建人姓名207 *208 */209/**210 * @api {post} /project/join.htm 3.07 自己加入某个项目211 *212 * @apiVersion 0.0.1213 *214 * @apiName join215 *216 * @apiGroup 3project217 *218 * @apiParam {String} userToken 用户令牌219 *220 * @apiParam {long} id 项目id221 *222 * @apiPermission none223 *224 * @apiDescription 自己加入某个项目225 *226 * @apiSuccess {Int} code 状态码(默认为0)227 *228 * @apiSuccess {String} msg 状态消息229 *230 */231/**232 * @api {post} /project/exit.htm 3.08 退出某个项目233 *234 * @apiVersion 0.0.1235 *236 * @apiName exit237 *238 * @apiGroup 3project239 *240 * @apiParam {String} userToken 用户令牌241 *242 * @apiParam {long} id 项目id243 *244 * @apiPermission none245 *246 * @apiDescription 退出某个项目247 *248 * @apiSuccess {Int} code 状态码(默认为0)249 *250 * @apiSuccess {String} msg 状态消息251 *...

Full Screen

Full Screen

4task.js

Source:4task.js Github

copy

Full Screen

1/**2 * @apiDefine 4task 4.0 任务模块3 */4/**5 * 6 *7 * @api {post} /task/create.htm 4.01 创建任务8 *9 * @apiVersion 0.0.110 *11 * @apiName create12 *13 * @apiGroup 4task14 *15 * @apiParam {String} userToken 用户令牌16 *17 * @apiParam {String} name 任务名称18 *19 * @apiParam {String} note 任务详细内容20 *21 * @apiParam {Long} project 项目id22 *23 * @apiParam {Long} beginDate 任务开始时间24 *25 * @apiParam {Long} deadline 任务截至日期26 *27 *28 * @apiParam {Long} executor 执行人id29 *30 * @apiPermission none31 *32 * @apiDescription 创建任务33 *34 * @apiSuccess {Int} code 状态码(默认为0)35 *36 * @apiSuccess {String} msg 状态消息37 *38 */39/**40 * @api {post} /task/delete.htm 4.02 删除某个任务41 *42 * @apiVersion 0.0.143 *44 * @apiName delete45 *46 * @apiGroup 4task47 *48 * @apiParam {String} userToken 用户令牌49 *50 * @apiParam {long} id 任务id51 *52 *53 * @apiPermission none54 *55 * @apiDescription 删除某个任务56 *57 * @apiSuccess {Int} code 状态码(默认为0)58 *59 * @apiSuccess {String} msg 状态消息60 *61 */62/**63 * @api {post} /task/findbyid.htm 4.03 任务详情64 *65 * @apiVersion 0.0.166 *67 * @apiName findbyid68 *69 * @apiGroup 4task70 *71 * @apiParam {String} userToken 用户令牌72 *73 * @apiParam {long} id 任务id74 *75 *76 * @apiPermission none77 *78 * @apiDescription 任务详情79 *80 * @apiSuccess {Int} code 状态码(默认为0)81 *82 * @apiSuccess {String} msg 状态消息83 *84 * @apiSuccess {long} id 任务id85 *86 * @apiSuccess {int} state 任务状态 0为未完成 1为完成87 *88 * @apiSuccess {String} note 任务内容89 *90 * @apiSuccess {object} executor 任务执行者91 *92 * @apiSuccess {long} executor.id 任务执行者id93 *94 * @apiSuccess {String} executor.name 任务执行者姓名95 *96 * @apiSuccess {String} executor.avatar 任务执行者头像97 *98 * @apiSuccess {object} project 项目信息99 *100 * @apiSuccess {long} project.id 项目id101 *102 * @apiSuccess {String} project.name 项目名称103 *104 */105/**106 * @api {post} /task/update.htm 4.04 更新任务107 *108 * @apiVersion 0.0.1109 *110 * @apiName update111 *112 * @apiGroup 4task113 *114 * @apiParam {String} userToken 用户令牌115 *116 * @apiParam {long} id 任务id117 *118 * @apiParam {Long} executor 执行人id119 *120 * @apiSuccess {String} note 任务内容121 *122 * @apiParam {Long} deadline 任务截至日期123 *124 * @apiPermission none125 *126 * @apiDescription 更新任务127 *128 * @apiSuccess {Int} code 状态码(默认为0)129 *130 * @apiSuccess {String} msg 状态消息131 *132 */133/**134 * @api {post} /task/comment.htm 4.05 评论任务135 *136 * @apiVersion 0.0.1137 *138 * @apiName comment139 *140 * @apiGroup 4task141 *142 * @apiParam {String} userToken 用户令牌143 *144 * @apiParam {long} id 任务id145 *146 * @apiParam {String} note 任务内容147 *148 * @apiPermission none149 *150 * @apiDescription 评论任务151 *152 * @apiSuccess {Int} code 状态码(默认为0)153 *154 * @apiSuccess {String} msg 状态消息155 *156 */157/**158 * @api {post} /task/page.htm 4.06 评论分页159 *160 * @apiVersion 0.0.1161 *162 * @apiName page163 *164 * @apiGroup 4task165 *166 * @apiParam {String} userToken 用户令牌167 *168 * @apiParam {long} id 任务id169 *170 * @apiParam {int} no 页码171 *172 * @apiParam {int} size 分页大小173 *174 * @apiPermission none175 *176 * @apiDescription 评论任务177 *178 * @apiSuccess {Int} code 状态码(默认为0)179 *180 * @apiSuccess {String} msg 状态消息181 *182 *183 * @apiSuccess {array} list 数据集合184 *185 * @apiSuccess {long} list.id 评论id186 *187 * @apiSuccess {String} list.note 评论内容188 *189 * @apiSuccess {object} list.member 评论人190 *191 * @apiSuccess {long} list.member.id 评论人id192 *193 * @apiSuccess {String} list.member.name 评论人姓名194 *195 * @apiSuccess {String} list.member.avatar 评论人头像196 *197 */198/**199 * @api {post} /task/toggle.htm 4.07 任务状态切换200 *201 * @apiVersion 0.0.1202 *203 * @apiName toggle204 *205 * @apiGroup 4task206 *207 * @apiParam {String} userToken 用户令牌208 *209 * @apiParam {long} id 任务id210 *211 *212 * @apiPermission none213 *214 * @apiDescription 任务状态切换215 *216 * @apiSuccess {Int} code 状态码(默认为0) 0未完成 1完成217 *218 * @apiSuccess {String} msg 状态消息219 *...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var mb = require('mountebank');2var imposter = {3 {4 {5 is: {6 headers: {7 },8 body: JSON.stringify({ status: 'ok' })9 }10 }11 }12};13mb.create(imposter).then(function () {14 console.log('Imposter created');15}).catch(function (error) {16 console.error('Error creating imposter: ', error);17});18var mb = require('mountebank');19var imposter = {20 {21 {22 is: {23 headers: {24 },25 body: JSON.stringify({ status: 'ok' })26 }27 }28 }29};30mb.create(imposter).then(function () {31 console.log('Imposter created');32}).catch(function (error) {33 console.error('Error creating imposter: ', error);34});35var mb = require('mountebank');36var imposter = {37 {38 {39 is: {40 headers: {41 },42 body: JSON.stringify({ status: 'ok' })43 }44 }45 }46};47mb.create(imposter).then(function () {48 console.log('Imposter created');49}).catch(function (error) {50 console.error('Error creating imposter: ', error);51});52var mb = require('mountebank');53var imposter = {54 {55 {56 is: {57 headers: {58 },59 body: JSON.stringify({ status: 'ok' })60 }61 }62 }63};

Full Screen

Using AI Code Generation

copy

Full Screen

1var mb = require('mountebank');2var imposter = {3 stubs: [{responses: [{is: {body: 'Hello World!'}}]}]4};5mb.create(imposter).then(function (response) {6 console.log('Imposter created');7});8var mb = require('mountebank');9var imposter = {10 stubs: [{responses: [{is: {body: 'Hello World!'}}]}]11};12mb.create(imposter).then(function (response) {13 console.log('Imposter created');14});15var mb = require('mountebank');16var imposter = {17 stubs: [{responses: [{is: {body: 'Hello World!'}}]}]18};19mb.create(imposter).then(function (response) {20 console.log('Imposter created');21});22var mb = require('mountebank');23var imposter = {24 stubs: [{responses: [{is: {body: 'Hello World!'}}]}]25};26mb.create(imposter).then(function (response) {27 console.log('Imposter created');28});29var mb = require('mountebank');30var imposter = {31 stubs: [{responses: [{is: {body: 'Hello World!'}}]}]32};33mb.create(imposter).then(function (response) {34 console.log('Imposter created');35});36var mb = require('mountebank');37var imposter = {38 stubs: [{responses: [{is: {body: 'Hello World!'}}]}]39};40mb.create(imposter).then(function (response) {41 console.log('Imposter created');42});

Full Screen

Using AI Code Generation

copy

Full Screen

1const mb = require('mountebank');2const imposter = {3 {4 {5 equals: {6 }7 }8 {9 is: {10 headers: {11 },12 }13 }14 }15};16mb.create(imposter)17 .then(() => console.log('Imposter created'))18 .catch(error => console.error(`Error creating imposter: ${error}`));19mb.delete(3000)20 .then(() => console.log('Imposter deleted'))21 .catch(error => console.error(`Error deleting imposter: ${error}`));22mb.get(3000)23 .then(imposter => console.log(`Imposter: ${JSON.stringify(imposter)}`))24 .catch(error => console.error(`Error getting imposter: ${error}`));25mb.get()26 .then(imposters => console.log(`Imposters: ${JSON.stringify(imposters)}`))27 .catch(error => console.error(`Error getting imposters: ${error}`));28mb.reset()29 .then(() => console.log('Imposters reset'))30 .catch(error => console.error(`Error resetting imposters: ${error}`));31mb.verify({32 {33 {34 equals: {35 }36 }37 {38 is: {39 headers: {40 },41 }42 }43 }44})45 .then(() => console.log('Request verified'))46 .catch(error => console.error(`Error verifying request: ${error}`));

Full Screen

Using AI Code Generation

copy

Full Screen

1const mb = require('mountebank');2const port = 2525;3mb.create(port).then(function (imposter) {4 imposter.addStub({5 {6 is: {7 headers: {8 },9 }10 }11 });12 imposter.addStub({13 {14 is: {15 headers: {16 },17 }18 }19 });20 imposter.addStub({21 {22 is: {23 headers: {24 },25 }26 }27 });28 imposter.addStub({29 {30 is: {31 headers: {32 },33 }34 }35 });36 imposter.addStub({37 {38 is: {39 headers: {40 },41 }42 }43 });44 imposter.addStub({45 {46 is: {47 headers: {48 },49 }50 }51 });52 imposter.addStub({53 {54 is: {55 headers: {56 },57 }58 }59 });60 imposter.addStub({61 {62 is: {63 headers: {64 },65 }66 }67 });68 imposter.addStub({69 {70 is: {71 headers: {72 },

Full Screen

Using AI Code Generation

copy

Full Screen

1var mb = require('mountebank');2var api = mb.create({port:2525, pidfile:'mb.pid', logfile:'mb.log', protofile:'mbproto.txt'});3api.createImposter({port:2525, protocol:'http', stubs:[{responses:[{is:{body:'Hello World'}}]}]});4api.get('/imposters', function (error, response) {5 console.log(response.body);6});7api.get('/imposters/2525', function (error, response) {8 console.log(response.body);9});10api.del('/imposters/2525', function (error, response) {11 console.log(response.body);12});13api.del('/imposters', function (error, response) {14 console.log(response.body);15});16api.del('/imposters/2525/stubs', function (error, response) {17 console.log(response.body);18});19api.get('/imposters/2525/stubs', function (error, response) {20 console.log(response.body);21});22api.post('/imposters/2525/stubs', {responses:[{is:{body:'Hello World'}}]}, function (error, response) {23 console.log(response.body);24});25api.put('/imposters/2525/stubs/0', {responses:[{is:{body:'Hello World'}}]}, function (error, response) {26 console.log(response.body);27});28api.del('/imposters/2525/stubs/0', function (error, response) {29 console.log(response.body);30});31api.get('/imposters/2525/requests', function (error, response) {32 console.log(response.body);33});34api.del('/imposters/2525/requests', function (error, response) {35 console.log(response.body);36});37api.del('/imposters/2525/requests/0', function (error, response) {38 console.log(response.body);39});40api.get('/imposters/2525/requests/0', function (error, response) {41 console.log(response.body);42});43api.get('/imposters/2525/requests/0/response', function (error, response) {44 console.log(response.body);45});46api.put('/imposters/2525/requests/0/response', {is:{body:'Hello World'}}, function (error, response) {47 console.log(response.body);48});49api.del('/imposters/

Full Screen

Using AI Code Generation

copy

Full Screen

1var mb = require('mountebank');2var mbHelper = require('mountebank-helper');3var mbPort = 2525;4var mbHost = 'localhost';5 {6 {7 {8 is: {9 }10 }11 }12 }13];14mb.create({port: mbPort, pidfile: 'mb.pid', logfile: 'mb.log', ipWhitelist: '*'})15 .then(function () {16 return mbHelper.postImposters(imposters, mbHost, mbPort);17 })18 .then(function (response) {19 console.log('Imposter created successfully', response.body);20 })21 .then(function () {22 return mbHelper.get('/hello', mbHost, 8080);23 })24 .then(function (response) {25 console.log('GET /hello response', response.body);26 })27 .then(function () {28 return mbHelper.deleteAllImposters(mbHost, mbPort);29 })30 .then(function () {31 return mbHelper.delete(mbHost, mbPort);32 })33 .catch(function (error) {34 console.error(error);35 });36{37 "dependencies": {38 }39}

Full Screen

Using AI Code Generation

copy

Full Screen

1const mb = require('mountebank');2const fs = require('fs');3const path = require('path');4const chai = require('chai');5const chaiHttp = require('chai-http');6const should = chai.should();7chai.use(chaiHttp);8const jsonPath = path.join(__dirname, 'test.json');9const impostersPath = path.join(__dirname, 'imposters');10const testPath = path.join(__dirname, 'test.js');11const packagePath = path.join(__dirname, 'package.json');12const packageLockPath = path.join(__dirname, 'package-lock.json');13const nodeModulesPath = path.join(__dirname, 'node_modules');14const readmePath = path.join(__dirname, 'README.md');15const gitignorePath = path.join(__dirname, '.gitignore');16const gitPath = path.join(__dirname, '.git');17const gitignorePath = path.join(__dirname, '.gitignore');18const gitPath = path.join(__dirname, '.git');19const gitignorePath = path.join(__dirname, '.gitignore');20const gitPath = path.join(__dirname, '.git');21const gitignorePath = path.join(__dirname, '.gitignore');

Full Screen

Using AI Code Generation

copy

Full Screen

1var mb = require('mountebank');2var mbHelper = require('mountebank-helper');3var assert = require('assert');4describe('mountebank', function() {5 this.timeout(5000);6 var server;7 before(function(done) {8 server = mb.create({9 });10 server.once('start', function() {11 done();12 });13 });14 after(function(done) {15 server.once('stop', function() {16 done();17 });18 server.stop();19 });20 it('should return 200 for a simple GET', function(done) {21 var stub = {22 predicates: [{ equals: { method: 'GET', path: '/test' } }],23 responses: [{ is: { statusCode: 200 } }]24 };25 mbHelper.post('/imposters', server.port, stub)26 .then(function(response) {27 return mbHelper.get('/test', server.port);28 })29 .then(function(response) {30 assert.strictEqual(response.statusCode, 200);31 done();32 })33 .catch(done);34 });35});36{37 "scripts": {38 },39 "dependencies": {40 }41}

Full Screen

Using AI Code Generation

copy

Full Screen

1var mb = require('mountebank');2var port = 2525;3var server = mb.create({4});5server.then(function (server) {6 server.close();7});8server.then(function (server) {9 server.close();10});

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run mountebank automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful