This commit is contained in:
Mark Xiong 2024-08-12 22:09:21 -05:00 коммит произвёл GitHub
Родитель 59a78a87bd
Коммит 70b3eba8c5
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
14 изменённых файлов: 756 добавлений и 31 удалений

Просмотреть файл

@ -13,6 +13,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from chromestatus_openapi.models import (PermissionsResponse, UserPermissions)
import logging
from framework import basehandlers
@ -38,9 +40,9 @@ class PermissionsAPI(basehandlers.APIHandler):
else:
paired_user = self.find_paired_user(user)
if paired_user:
user_data = self.get_all_perms(paired_user)
user_data =self.get_all_perms(paired_user)
return {'user': user_data}
return PermissionsResponse(user=user_data).to_dict()
def get_all_perms(self, user):
"""Return a dict of permissions for the given user."""
@ -54,15 +56,16 @@ class PermissionsAPI(basehandlers.APIHandler):
editable_features = permissions.feature_edit_list(user)
logging.info('got editable_features')
return {
'can_create_feature': can_create_feature,
'approvable_gate_types': approvable_gate_types,
'can_comment': can_comment,
'can_edit_all': can_edit_all,
'is_admin': is_admin,
'email': user.email(),
'editable_features': editable_features,
}
response = UserPermissions(
can_create_feature=can_create_feature,
approvable_gate_types=approvable_gate_types,
can_comment=can_comment,
can_edit_all=can_edit_all,
is_admin=is_admin,
email=user.email(),
editable_features=editable_features)
return response.to_dict()
def find_paired_user(self, user):
"""If @google.com or @chromium.org, return the other one."""

Просмотреть файл

@ -37,10 +37,12 @@ src/models/LinkPreviewWebkitBug.ts
src/models/MessageResponse.ts
src/models/OutstandingReview.ts
src/models/OwnersAndSubscribersOfComponent.ts
src/models/PermissionsResponse.ts
src/models/PostIntentRequest.ts
src/models/ReviewLatency.ts
src/models/SpecMentor.ts
src/models/SuccessMessage.ts
src/models/UserPermissions.ts
src/models/index.ts
src/runtime.ts
tsconfig.esm.json

Просмотреть файл

@ -26,6 +26,7 @@ import type {
GetDismissedCues400Response,
GetIntentResponse,
MessageResponse,
PermissionsResponse,
PostIntentRequest,
ReviewLatency,
SpecMentor,
@ -54,6 +55,8 @@ import {
GetIntentResponseToJSON,
MessageResponseFromJSON,
MessageResponseToJSON,
PermissionsResponseFromJSON,
PermissionsResponseToJSON,
PostIntentRequestFromJSON,
PostIntentRequestToJSON,
ReviewLatencyFromJSON,
@ -88,6 +91,10 @@ export interface GetIntentBodyRequest {
gateId: number;
}
export interface GetUserPermissionsRequest {
returnPairedUser?: boolean;
}
export interface ListExternalReviewsRequest {
reviewGroup: ListExternalReviewsReviewGroupEnum;
}
@ -214,6 +221,21 @@ export interface DefaultApiInterface {
*/
getIntentBody(requestParameters: GetIntentBodyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetIntentResponse>;
/**
*
* @summary Get the permissions and email of the user
* @param {boolean} [returnPairedUser] If true, return the permissions of the paired user.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof DefaultApiInterface
*/
getUserPermissionsRaw(requestParameters: GetUserPermissionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PermissionsResponse>>;
/**
* Get the permissions and email of the user
*/
getUserPermissions(requestParameters: GetUserPermissionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PermissionsResponse>;
/**
*
* @summary List all components and possible users
@ -547,6 +569,36 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
return await response.value();
}
/**
* Get the permissions and email of the user
*/
async getUserPermissionsRaw(requestParameters: GetUserPermissionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PermissionsResponse>> {
const queryParameters: any = {};
if (requestParameters['returnPairedUser'] != null) {
queryParameters['returnPairedUser'] = requestParameters['returnPairedUser'];
}
const headerParameters: runtime.HTTPHeaders = {};
const response = await this.request({
path: `/currentuser/permissions`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
}, initOverrides);
return new runtime.JSONApiResponse(response, (jsonValue) => PermissionsResponseFromJSON(jsonValue));
}
/**
* Get the permissions and email of the user
*/
async getUserPermissions(requestParameters: GetUserPermissionsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PermissionsResponse> {
const response = await this.getUserPermissionsRaw(requestParameters, initOverrides);
return await response.value();
}
/**
* List all components and possible users
*/

Просмотреть файл

@ -0,0 +1,68 @@
/* tslint:disable */
/* eslint-disable */
/**
* chomestatus API
* The API for chromestatus.com. chromestatus.com is the official tool used for tracking feature launches in Blink (the browser engine that powers Chrome and many other web browsers). This tool guides feature owners through our launch process and serves as a primary source for developer information that then ripples throughout the web developer ecosystem. More details at: https://github.com/GoogleChrome/chromium-dashboard
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { mapValues } from '../runtime';
import type { UserPermissions } from './UserPermissions';
import {
UserPermissionsFromJSON,
UserPermissionsFromJSONTyped,
UserPermissionsToJSON,
} from './UserPermissions';
/**
*
* @export
* @interface PermissionsResponse
*/
export interface PermissionsResponse {
/**
*
* @type {UserPermissions}
* @memberof PermissionsResponse
*/
user: UserPermissions;
}
/**
* Check if a given object implements the PermissionsResponse interface.
*/
export function instanceOfPermissionsResponse(value: object): value is PermissionsResponse {
if (!('user' in value) || value['user'] === undefined) return false;
return true;
}
export function PermissionsResponseFromJSON(json: any): PermissionsResponse {
return PermissionsResponseFromJSONTyped(json, false);
}
export function PermissionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PermissionsResponse {
if (json == null) {
return json;
}
return {
'user': UserPermissionsFromJSON(json['user']),
};
}
export function PermissionsResponseToJSON(value?: PermissionsResponse | null): any {
if (value == null) {
return value;
}
return {
'user': UserPermissionsToJSON(value['user']),
};
}

Просмотреть файл

@ -0,0 +1,115 @@
/* tslint:disable */
/* eslint-disable */
/**
* chomestatus API
* The API for chromestatus.com. chromestatus.com is the official tool used for tracking feature launches in Blink (the browser engine that powers Chrome and many other web browsers). This tool guides feature owners through our launch process and serves as a primary source for developer information that then ripples throughout the web developer ecosystem. More details at: https://github.com/GoogleChrome/chromium-dashboard
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { mapValues } from '../runtime';
/**
*
* @export
* @interface UserPermissions
*/
export interface UserPermissions {
/**
*
* @type {boolean}
* @memberof UserPermissions
*/
can_create_feature: boolean;
/**
* each element should be unique as OAS does not support set
* @type {Array<number>}
* @memberof UserPermissions
*/
approvable_gate_types: Array<number>;
/**
*
* @type {boolean}
* @memberof UserPermissions
*/
can_comment: boolean;
/**
*
* @type {boolean}
* @memberof UserPermissions
*/
can_edit_all: boolean;
/**
*
* @type {boolean}
* @memberof UserPermissions
*/
is_admin: boolean;
/**
*
* @type {string}
* @memberof UserPermissions
*/
email: string;
/**
*
* @type {Array<number>}
* @memberof UserPermissions
*/
editable_features: Array<number>;
}
/**
* Check if a given object implements the UserPermissions interface.
*/
export function instanceOfUserPermissions(value: object): value is UserPermissions {
if (!('can_create_feature' in value) || value['can_create_feature'] === undefined) return false;
if (!('approvable_gate_types' in value) || value['approvable_gate_types'] === undefined) return false;
if (!('can_comment' in value) || value['can_comment'] === undefined) return false;
if (!('can_edit_all' in value) || value['can_edit_all'] === undefined) return false;
if (!('is_admin' in value) || value['is_admin'] === undefined) return false;
if (!('email' in value) || value['email'] === undefined) return false;
if (!('editable_features' in value) || value['editable_features'] === undefined) return false;
return true;
}
export function UserPermissionsFromJSON(json: any): UserPermissions {
return UserPermissionsFromJSONTyped(json, false);
}
export function UserPermissionsFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserPermissions {
if (json == null) {
return json;
}
return {
'can_create_feature': json['can_create_feature'],
'approvable_gate_types': json['approvable_gate_types'],
'can_comment': json['can_comment'],
'can_edit_all': json['can_edit_all'],
'is_admin': json['is_admin'],
'email': json['email'],
'editable_features': json['editable_features'],
};
}
export function UserPermissionsToJSON(value?: UserPermissions | null): any {
if (value == null) {
return value;
}
return {
'can_create_feature': value['can_create_feature'],
'approvable_gate_types': value['approvable_gate_types'],
'can_comment': value['can_comment'],
'can_edit_all': value['can_edit_all'],
'is_admin': value['is_admin'],
'email': value['email'],
'editable_features': value['editable_features'],
};
}

Просмотреть файл

@ -31,7 +31,9 @@ export * from './LinkPreviewWebkitBug';
export * from './MessageResponse';
export * from './OutstandingReview';
export * from './OwnersAndSubscribersOfComponent';
export * from './PermissionsResponse';
export * from './PostIntentRequest';
export * from './ReviewLatency';
export * from './SpecMentor';
export * from './SuccessMessage';
export * from './UserPermissions';

Просмотреть файл

@ -43,10 +43,12 @@ chromestatus_openapi/models/link_preview_webkit_bug.py
chromestatus_openapi/models/message_response.py
chromestatus_openapi/models/outstanding_review.py
chromestatus_openapi/models/owners_and_subscribers_of_component.py
chromestatus_openapi/models/permissions_response.py
chromestatus_openapi/models/post_intent_request.py
chromestatus_openapi/models/review_latency.py
chromestatus_openapi/models/spec_mentor.py
chromestatus_openapi/models/success_message.py
chromestatus_openapi/models/user_permissions.py
chromestatus_openapi/openapi/openapi.yaml
chromestatus_openapi/test/__init__.py
chromestatus_openapi/test/test_default_controller.py

Просмотреть файл

@ -14,6 +14,7 @@ from chromestatus_openapi.models.feature_latency import FeatureLatency # noqa:
from chromestatus_openapi.models.get_dismissed_cues400_response import GetDismissedCues400Response # noqa: E501
from chromestatus_openapi.models.get_intent_response import GetIntentResponse # noqa: E501
from chromestatus_openapi.models.message_response import MessageResponse # noqa: E501
from chromestatus_openapi.models.permissions_response import PermissionsResponse # noqa: E501
from chromestatus_openapi.models.post_intent_request import PostIntentRequest # noqa: E501
from chromestatus_openapi.models.review_latency import ReviewLatency # noqa: E501
from chromestatus_openapi.models.spec_mentor import SpecMentor # noqa: E501
@ -111,6 +112,19 @@ def get_intent_body(feature_id, stage_id, gate_id): # noqa: E501
return 'do some magic!'
def get_user_permissions(return_paired_user=None): # noqa: E501
"""Get the permissions and email of the user
# noqa: E501
:param return_paired_user: If true, return the permissions of the paired user.
:type return_paired_user: bool
:rtype: Union[PermissionsResponse, Tuple[PermissionsResponse, int], Tuple[PermissionsResponse, int, Dict[str, str]]
"""
return 'do some magic!'
def list_component_users(): # noqa: E501
"""List all components and possible users

Просмотреть файл

@ -31,7 +31,9 @@ from chromestatus_openapi.models.link_preview_webkit_bug import LinkPreviewWebki
from chromestatus_openapi.models.message_response import MessageResponse
from chromestatus_openapi.models.outstanding_review import OutstandingReview
from chromestatus_openapi.models.owners_and_subscribers_of_component import OwnersAndSubscribersOfComponent
from chromestatus_openapi.models.permissions_response import PermissionsResponse
from chromestatus_openapi.models.post_intent_request import PostIntentRequest
from chromestatus_openapi.models.review_latency import ReviewLatency
from chromestatus_openapi.models.spec_mentor import SpecMentor
from chromestatus_openapi.models.success_message import SuccessMessage
from chromestatus_openapi.models.user_permissions import UserPermissions

Просмотреть файл

@ -0,0 +1,65 @@
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from chromestatus_openapi.models.base_model import Model
from chromestatus_openapi.models.user_permissions import UserPermissions
from chromestatus_openapi import util
from chromestatus_openapi.models.user_permissions import UserPermissions # noqa: E501
class PermissionsResponse(Model):
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
Do not edit the class manually.
"""
def __init__(self, user=None): # noqa: E501
"""PermissionsResponse - a model defined in OpenAPI
:param user: The user of this PermissionsResponse. # noqa: E501
:type user: UserPermissions
"""
self.openapi_types = {
'user': UserPermissions
}
self.attribute_map = {
'user': 'user'
}
self._user = user
@classmethod
def from_dict(cls, dikt) -> 'PermissionsResponse':
"""Returns the dict as a model
:param dikt: A dict.
:type: dict
:return: The PermissionsResponse of this PermissionsResponse. # noqa: E501
:rtype: PermissionsResponse
"""
return util.deserialize_model(dikt, cls)
@property
def user(self) -> UserPermissions:
"""Gets the user of this PermissionsResponse.
:return: The user of this PermissionsResponse.
:rtype: UserPermissions
"""
return self._user
@user.setter
def user(self, user: UserPermissions):
"""Sets the user of this PermissionsResponse.
:param user: The user of this PermissionsResponse.
:type user: UserPermissions
"""
if user is None:
raise ValueError("Invalid value for `user`, must not be `None`") # noqa: E501
self._user = user

Просмотреть файл

@ -0,0 +1,233 @@
from datetime import date, datetime # noqa: F401
from typing import List, Dict # noqa: F401
from chromestatus_openapi.models.base_model import Model
from chromestatus_openapi import util
class UserPermissions(Model):
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
Do not edit the class manually.
"""
def __init__(self, can_create_feature=None, approvable_gate_types=None, can_comment=None, can_edit_all=None, is_admin=None, email=None, editable_features=None): # noqa: E501
"""UserPermissions - a model defined in OpenAPI
:param can_create_feature: The can_create_feature of this UserPermissions. # noqa: E501
:type can_create_feature: bool
:param approvable_gate_types: The approvable_gate_types of this UserPermissions. # noqa: E501
:type approvable_gate_types: List[int]
:param can_comment: The can_comment of this UserPermissions. # noqa: E501
:type can_comment: bool
:param can_edit_all: The can_edit_all of this UserPermissions. # noqa: E501
:type can_edit_all: bool
:param is_admin: The is_admin of this UserPermissions. # noqa: E501
:type is_admin: bool
:param email: The email of this UserPermissions. # noqa: E501
:type email: str
:param editable_features: The editable_features of this UserPermissions. # noqa: E501
:type editable_features: List[int]
"""
self.openapi_types = {
'can_create_feature': bool,
'approvable_gate_types': List[int],
'can_comment': bool,
'can_edit_all': bool,
'is_admin': bool,
'email': str,
'editable_features': List[int]
}
self.attribute_map = {
'can_create_feature': 'can_create_feature',
'approvable_gate_types': 'approvable_gate_types',
'can_comment': 'can_comment',
'can_edit_all': 'can_edit_all',
'is_admin': 'is_admin',
'email': 'email',
'editable_features': 'editable_features'
}
self._can_create_feature = can_create_feature
self._approvable_gate_types = approvable_gate_types
self._can_comment = can_comment
self._can_edit_all = can_edit_all
self._is_admin = is_admin
self._email = email
self._editable_features = editable_features
@classmethod
def from_dict(cls, dikt) -> 'UserPermissions':
"""Returns the dict as a model
:param dikt: A dict.
:type: dict
:return: The UserPermissions of this UserPermissions. # noqa: E501
:rtype: UserPermissions
"""
return util.deserialize_model(dikt, cls)
@property
def can_create_feature(self) -> bool:
"""Gets the can_create_feature of this UserPermissions.
:return: The can_create_feature of this UserPermissions.
:rtype: bool
"""
return self._can_create_feature
@can_create_feature.setter
def can_create_feature(self, can_create_feature: bool):
"""Sets the can_create_feature of this UserPermissions.
:param can_create_feature: The can_create_feature of this UserPermissions.
:type can_create_feature: bool
"""
if can_create_feature is None:
raise ValueError("Invalid value for `can_create_feature`, must not be `None`") # noqa: E501
self._can_create_feature = can_create_feature
@property
def approvable_gate_types(self) -> List[int]:
"""Gets the approvable_gate_types of this UserPermissions.
each element should be unique as OAS does not support set # noqa: E501
:return: The approvable_gate_types of this UserPermissions.
:rtype: List[int]
"""
return self._approvable_gate_types
@approvable_gate_types.setter
def approvable_gate_types(self, approvable_gate_types: List[int]):
"""Sets the approvable_gate_types of this UserPermissions.
each element should be unique as OAS does not support set # noqa: E501
:param approvable_gate_types: The approvable_gate_types of this UserPermissions.
:type approvable_gate_types: List[int]
"""
if approvable_gate_types is None:
raise ValueError("Invalid value for `approvable_gate_types`, must not be `None`") # noqa: E501
self._approvable_gate_types = approvable_gate_types
@property
def can_comment(self) -> bool:
"""Gets the can_comment of this UserPermissions.
:return: The can_comment of this UserPermissions.
:rtype: bool
"""
return self._can_comment
@can_comment.setter
def can_comment(self, can_comment: bool):
"""Sets the can_comment of this UserPermissions.
:param can_comment: The can_comment of this UserPermissions.
:type can_comment: bool
"""
if can_comment is None:
raise ValueError("Invalid value for `can_comment`, must not be `None`") # noqa: E501
self._can_comment = can_comment
@property
def can_edit_all(self) -> bool:
"""Gets the can_edit_all of this UserPermissions.
:return: The can_edit_all of this UserPermissions.
:rtype: bool
"""
return self._can_edit_all
@can_edit_all.setter
def can_edit_all(self, can_edit_all: bool):
"""Sets the can_edit_all of this UserPermissions.
:param can_edit_all: The can_edit_all of this UserPermissions.
:type can_edit_all: bool
"""
if can_edit_all is None:
raise ValueError("Invalid value for `can_edit_all`, must not be `None`") # noqa: E501
self._can_edit_all = can_edit_all
@property
def is_admin(self) -> bool:
"""Gets the is_admin of this UserPermissions.
:return: The is_admin of this UserPermissions.
:rtype: bool
"""
return self._is_admin
@is_admin.setter
def is_admin(self, is_admin: bool):
"""Sets the is_admin of this UserPermissions.
:param is_admin: The is_admin of this UserPermissions.
:type is_admin: bool
"""
if is_admin is None:
raise ValueError("Invalid value for `is_admin`, must not be `None`") # noqa: E501
self._is_admin = is_admin
@property
def email(self) -> str:
"""Gets the email of this UserPermissions.
:return: The email of this UserPermissions.
:rtype: str
"""
return self._email
@email.setter
def email(self, email: str):
"""Sets the email of this UserPermissions.
:param email: The email of this UserPermissions.
:type email: str
"""
if email is None:
raise ValueError("Invalid value for `email`, must not be `None`") # noqa: E501
self._email = email
@property
def editable_features(self) -> List[int]:
"""Gets the editable_features of this UserPermissions.
:return: The editable_features of this UserPermissions.
:rtype: List[int]
"""
return self._editable_features
@editable_features.setter
def editable_features(self, editable_features: List[int]):
"""Sets the editable_features of this UserPermissions.
:param editable_features: The editable_features of this UserPermissions.
:type editable_features: List[int]
"""
if editable_features is None:
raise ValueError("Invalid value for `editable_features`, must not be `None`") # noqa: E501
self._editable_features = editable_features

Просмотреть файл

@ -172,6 +172,27 @@ paths:
description: Cue dismissed successfully
summary: Dismiss a cue card for the signed-in user
x-openapi-router-controller: chromestatus_openapi.controllers.default_controller
/currentuser/permissions:
get:
operationId: get_user_permissions
parameters:
- description: "If true, return the permissions of the paired user."
explode: true
in: query
name: returnPairedUser
required: false
schema:
type: boolean
style: form
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PermissionsResponse'
description: The permissions and email of the user.
summary: Get the permissions and email of the user
x-openapi-router-controller: chromestatus_openapi.controllers.default_controller
/external_reviews/{review_group}:
get:
operationId: list_external_reviews
@ -877,15 +898,77 @@ components:
LinkPreviewSpecs:
allOf:
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
deleteAccount_200_response:
PermissionsResponse:
example:
message: Done
user:
is_admin: true
can_comment: true
editable_features:
- 6
- 6
can_create_feature: true
can_edit_all: true
email: email
approvable_gate_types:
- 0
- 0
properties:
message:
example: Done
title: message
user:
$ref: '#/components/schemas/UserPermissions'
required:
- user
title: PermissionsResponse
type: object
UserPermissions:
example:
is_admin: true
can_comment: true
editable_features:
- 6
- 6
can_create_feature: true
can_edit_all: true
email: email
approvable_gate_types:
- 0
- 0
properties:
can_create_feature:
title: can_create_feature
type: boolean
approvable_gate_types:
description: each element should be unique as OAS does not support set
items:
type: integer
title: approvable_gate_types
type: array
can_comment:
title: can_comment
type: boolean
can_edit_all:
title: can_edit_all
type: boolean
is_admin:
title: is_admin
type: boolean
email:
format: email
title: email
type: string
title: deleteAccount_200_response
editable_features:
items:
type: integer
title: editable_features
type: array
required:
- approvable_gate_types
- can_comment
- can_create_feature
- can_edit_all
- editable_features
- email
- is_admin
title: UserPermissions
type: object
DismissCueRequest:
example:
@ -916,6 +999,16 @@ components:
example: Error
type: string
type: object
deleteAccount_200_response:
example:
message: Done
properties:
message:
example: Done
title: message
type: string
title: deleteAccount_200_response
type: object
getDismissedCues_400_response:
example:
error: error

Просмотреть файл

@ -13,6 +13,7 @@ from chromestatus_openapi.models.feature_latency import FeatureLatency # noqa:
from chromestatus_openapi.models.get_dismissed_cues400_response import GetDismissedCues400Response # noqa: E501
from chromestatus_openapi.models.get_intent_response import GetIntentResponse # noqa: E501
from chromestatus_openapi.models.message_response import MessageResponse # noqa: E501
from chromestatus_openapi.models.permissions_response import PermissionsResponse # noqa: E501
from chromestatus_openapi.models.post_intent_request import PostIntentRequest # noqa: E501
from chromestatus_openapi.models.review_latency import ReviewLatency # noqa: E501
from chromestatus_openapi.models.spec_mentor import SpecMentor # noqa: E501
@ -125,6 +126,23 @@ class TestDefaultController(BaseTestCase):
self.assert200(response,
'Response body is : ' + response.data.decode('utf-8'))
def test_get_user_permissions(self):
"""Test case for get_user_permissions
Get the permissions and email of the user
"""
query_string = [('returnPairedUser', True)]
headers = {
'Accept': 'application/json',
}
response = self.client.open(
'/api/v0/currentuser/permissions',
method='GET',
headers=headers,
query_string=query_string)
self.assert200(response,
'Response body is : ' + response.data.decode('utf-8'))
def test_list_component_users(self):
"""Test case for list_component_users

Просмотреть файл

@ -125,6 +125,38 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/ComponentUsersRequest'
/review-latency:
get:
summary: List recently reviewed features and their review latency
operationId: listReviewsWithLatency
responses:
'200':
description: >-
List of recent reviews and their latency.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ReviewLatency'
/currentuser/permissions:
get:
summary: Get the permissions and email of the user
operationId: getUserPermissions
parameters:
- in: query
name: returnPairedUser
schema:
type: boolean
required: false
description: If true, return the permissions of the paired user.
responses:
'200':
description: The permissions and email of the user.
content:
application/json:
schema:
$ref: '#/components/schemas/PermissionsResponse'
/currentuser/cues:
get:
summary: Get dismissed cues for the current user
@ -163,20 +195,6 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
/review-latency:
get:
summary: List recently reviewed features and their review latency
operationId: listReviewsWithLatency
responses:
'200':
description: >-
List of recent reviews and their latency.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ReviewLatency'
/external_reviews/{review_group}:
get:
summary: List features whose external reviews are incomplete
@ -659,6 +677,44 @@ components:
LinkPreviewSpecs:
allOf:
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
PermissionsResponse:
type: object
properties:
user:
$ref: '#/components/schemas/UserPermissions'
required:
- user
UserPermissions:
type: object
properties:
can_create_feature:
type: boolean
approvable_gate_types:
type: array
items:
type: integer
description: each element should be unique as OAS does not support set
can_comment:
type: boolean
can_edit_all:
type: boolean
is_admin:
type: boolean
email:
type: string
format: email
editable_features:
type: array
items:
type: integer
required:
- can_create_feature
- approvable_gate_types
- can_comment
- can_edit_all
- is_admin
- email
- editable_features
DismissCueRequest:
type: object
properties: