mojang
Version:
Unofficial Node.js library for Mojang's HTTP APIs
52 lines (40 loc) • 1.42 kB
JavaScript
/* eslint-disable ava/no-ignored-test-files */
const test = require('ava')
const mojang = require('..')
const {USERNAME, PASSWORD, CLIENT_TOKEN} = process.env
const {ANSWER1, ANSWER2, ANSWER3} = process.env
const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
test('security integration', async t => {
const credentials = {
username: USERNAME,
password: PASSWORD,
clientToken: CLIENT_TOKEN
}
// create unprofiled session
const session = await mojang.authenticate(credentials)
t.is(session.clientToken, CLIENT_TOKEN)
// access token is good
await delay(1000)
t.true(await mojang.isValid(session))
// get initial trust for good measure
await delay(1000)
await mojang.isSecure(session)
t.pass('location security fetch worked')
// get questions and compile response
await delay(1000)
const challenges = await mojang.getChallenges(session)
// submit answers
await delay(1000)
await mojang.answerChallenges(session, [
{id: challenges[0].answer.id, answer: ANSWER1},
{id: challenges[1].answer.id, answer: ANSWER2},
{id: challenges[2].answer.id, answer: ANSWER3}
])
// confirm IP is now secure
await delay(1000)
const isNowSecure = await mojang.isSecure(session)
t.true(isNowSecure)
// invalidate all access tokens
await delay(1000)
await mojang.signout(credentials)
})