Ghost/test/regression/api/canary/admin/utils.js
Fabien 'egg' O'Carroll 2a81d0a986
🐛 Fixed saving Members with Complimentary plans (#13008)
* 🐛 Fixed saving Members with Complimentary plans

refs https://github.com/TryGhost/Team/issues/758

Since 4.6 The Admin is using the comped flag again, rather than creating
subscriptions for zero-amount prices directly. With the `comped` flag
removed, the default state was for it to be falsy in the Admin, and when
saved would trigger the legacy comped flow, cancelling the subscription.

This reverts commit 57a176ff3d.
2021-06-03 18:28:14 +01:00

222 lines
4.7 KiB
JavaScript

const url = require('url');
const _ = require('lodash');
const testUtils = require('../../../../utils');
const API_URL = '/ghost/api/canary/admin/';
const expectedProperties = {
posts: ['posts', 'meta'],
tags: ['tags', 'meta'],
users: ['users', 'meta'],
settings: ['settings', 'meta'],
subscribers: ['subscribers', 'meta'],
roles: ['roles'],
pagination: ['page', 'limit', 'pages', 'total', 'next', 'prev'],
slugs: ['slugs'],
slug: ['slug'],
invites: ['invites', 'meta'],
themes: ['themes'],
members: ['members', 'meta'],
site: [
'title',
'description',
'logo',
'icon',
'accent_color',
'url',
'version'
],
post: [
'id',
'uuid',
'title',
'slug',
'mobiledoc',
'comment_id',
'feature_image',
'featured',
'status',
'visibility',
'email_recipient_filter',
'created_at',
'updated_at',
'published_at',
'custom_excerpt',
'codeinjection_head',
'codeinjection_foot',
'custom_template',
'canonical_url',
'url',
'primary_tag',
'primary_author',
'excerpt',
'tags',
'authors',
'email',
'og_image',
'og_title',
'og_description',
'twitter_image',
'twitter_title',
'twitter_description',
'meta_title',
'meta_description',
'email_subject',
'frontmatter'
],
user: [
'id',
'name',
'slug',
'email',
'profile_image',
'cover_image',
'bio',
'website',
'location',
'facebook',
'twitter',
'accessibility',
'status',
'meta_title',
'meta_description',
'tour',
'last_seen',
'created_at',
'updated_at',
'url'
],
tag: [
'id',
'name',
'slug',
'description',
'feature_image',
'visibility',
'og_image',
'og_title',
'og_description',
'twitter_image',
'twitter_title',
'twitter_description',
'meta_title',
'meta_description',
'codeinjection_head',
'codeinjection_foot',
'canonical_url',
'accent_color',
'created_at',
'updated_at'
],
setting: [
'id',
'group',
'key',
'value',
'type',
'flags',
'created_at',
'updated_at'
],
member: [
'id',
'uuid',
'email',
'status',
'name',
'note',
'geolocation',
'subscribed',
'email_count',
'email_opened_count',
'email_open_rate',
'created_at',
'updated_at',
'avatar_image',
'labels',
'comped'
],
member_signin_url: ['member_id', 'url'],
role: ['id', 'name', 'description', 'created_at', 'updated_at'],
permission: [
'id',
'name',
'object_type',
'action_type',
'object_id',
'created_at',
'updated_at'
],
notification: [
'type',
'message',
'status',
'id',
'dismissible',
'location',
'custom'
],
theme: ['name', 'package', 'active'],
invite: [
'id',
'role_id',
'status',
'email',
'expires',
'created_at',
'updated_at'
],
webhook: [
'id',
'event',
'target_url',
'name',
'secret',
'api_version',
'integration_id',
'status',
'last_triggered_at',
'last_triggered_status',
'last_triggered_error',
'created_at',
'updated_at'
],
email_preview: ['html', 'subject', 'plaintext']
};
module.exports = {
API: {
getApiQuery(route) {
return url.resolve(API_URL, route);
},
checkResponse(...args) {
this.expectedProperties = expectedProperties;
return testUtils.API.checkResponse.call(this, ...args);
}
},
doAuth(...args) {
return testUtils.API.doAuth(`${API_URL}session/`, ...args);
},
getValidAdminToken(endpoint, key) {
const jwt = require('jsonwebtoken');
key = key || testUtils.DataGenerator.Content.api_keys[0];
const JWT_OPTIONS = {
keyid: key.id,
algorithm: 'HS256',
expiresIn: '5m',
audience: endpoint
};
return jwt.sign(
{},
Buffer.from(key.secret, 'hex'),
JWT_OPTIONS
);
}
};