Puppetry
3.2.2
Search…
⌃K

Example with Mailinator

Similar to Restmail.net we need user name alias to use with the REST API. so we modify the first steps in the case case as follows:
Assigning TEST_USER_ALIAS and TEST_EMAIL
Following Mailinator API we need to set URL for page.assignVarRemotely:
https://api.mailinator.com/api/inbox?token={{ env( "EID_SECRET" ) }}&to={{ TEST_USER_ALIAS }}
page.assignVarRemotely configuration for Mailinator (part 1)
However Mailinator unlike Restmail.net doesn't allow to receive last message content with a single request. So we need to take advantage of optional request function command parameter:
So we alternate the default fetch logic of page.assignVarRemotely as follows:
async ( url ) => {
const inbox = await ( await fetch( url ) ).json(),
msgHead = inbox.messages
.reverse()
.find( msg => msg.subject.includes( "Account Validation" ) ),
fulMsg = await ( await fetch( `https://api.mailinator.com/api/message?token=YourAPIToken&id=${ msgHead.id }` ) ).json();
return fulMsg.data.parts.map( p => p.body ).join();
}
Thus the command will read the listing and find a message with subject containing "Account Validation" string. Then it retrieves and returns the raw body of the matching mail. So the parse function may look like:
( text ) => {
const re = /(http\:[^\"]+4567\/con[^\"]+)/g,
res = text.match( re );
return res ? res[ 0 ].replace( "=\r\n", "" ) : null;
}
page.assignVarRemotely configuration for Mailinator (part 2)