From dd4ca9432aff209d546d3e21e33ebb5ac6ff667c Mon Sep 17 00:00:00 2001
From: AkiraFukushima
Date: Sat, 14 Sep 2019 22:22:43 +0900
Subject: [PATCH 1/2] refs #1028 Confirm ActivityPub instance to read host-meta
before login
---
src/renderer/store/Login.ts | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/renderer/store/Login.ts b/src/renderer/store/Login.ts
index 6ce8ee0d..75ce668c 100644
--- a/src/renderer/store/Login.ts
+++ b/src/renderer/store/Login.ts
@@ -46,9 +46,17 @@ const actions: ActionTree = {
},
confirmInstance: async ({ commit }, domain: string): Promise => {
commit(MUTATION_TYPES.CHANGE_SEARCHING, true)
- await axios.get(`https://${domain}/api/v1/instance`).finally(() => {
+ // https://gist.github.com/okapies/60d62d0df0163bbfb4ab09c1766558e8
+ // Check /.well-known/host-meta to confirm mastodon instance.
+ const res = await axios.get(`https://${domain}/.well-known/host-meta`).finally(() => {
commit(MUTATION_TYPES.CHANGE_SEARCHING, false)
})
+ const parser = new DOMParser()
+ const dom = parser.parseFromString(res.data, 'text/xml')
+ const link = dom.getElementsByTagName('Link')[0].outerHTML
+ if (!link.includes(`https://${domain}/.well-known/webfinger`)) {
+ throw new Error('domain is not activity pub')
+ }
commit(MUTATION_TYPES.CHANGE_INSTANCE, domain)
return true
}
From 2a8f3ec226723e5b037ab81c780e84f553393aa3 Mon Sep 17 00:00:00 2001
From: AkiraFukushima
Date: Sat, 14 Sep 2019 22:34:45 +0900
Subject: [PATCH 2/2] refs #1028 Fix mocked response for login confirm in tests
---
spec/renderer/integration/store/Login.spec.ts | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/spec/renderer/integration/store/Login.spec.ts b/spec/renderer/integration/store/Login.spec.ts
index e2f13af5..421bdb84 100644
--- a/spec/renderer/integration/store/Login.spec.ts
+++ b/spec/renderer/integration/store/Login.spec.ts
@@ -42,10 +42,9 @@ describe('Login', () => {
ipcMain.once('get-auth-url', event => {
event.sender.send('error-get-auth-url', new Error())
})
- await store.dispatch('Login/fetchLogin', 'pleroma.io')
- .catch((err: Error) => {
- expect(err instanceof Error).toEqual(true)
- })
+ await store.dispatch('Login/fetchLogin', 'pleroma.io').catch((err: Error) => {
+ expect(err instanceof Error).toEqual(true)
+ })
})
})
describe('success', () => {
@@ -72,9 +71,10 @@ describe('Login', () => {
// https://github.com/facebook/jest/issues/6552
// https://github.com/kulshekhar/ts-jest/issues/828
const mockedAxios = axios as any
- const res: Promise