Skip to content

Commit 036ecfb

Browse files
committed
add access request retrieval
1 parent 2d9b5a3 commit 036ecfb

File tree

4 files changed

+76
-53
lines changed

4 files changed

+76
-53
lines changed

src/batch/data-rules.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const AccessRequest = require("../lists/AccessRequest");
2+
13
const metadata = {
24
Organization: {
35
query: 'allOrganizations',

src/services/keystone/access-request.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
AccessRequest,
55
AccessRequestCreateInput,
66
AccessRequestUpdateInput,
7+
AccessRequestWhereInput,
78
} from './types';
89

910
const assert = require('assert').strict;
@@ -126,12 +127,15 @@ export async function getAccessRequest(context: any, id: string): Promise<Access
126127

127128
export async function getAccessRequestsByNamespace(
128129
context: any,
129-
ns: string
130+
nsList: string[]
130131
): Promise<AccessRequest[]> {
131132
const query = gql`
132-
query GetNamespaceAccessRequests($ns: String!) {
133+
query GetNamespaceAccessRequests($nsList: [String]!) {
133134
allAccessRequests(
134-
where: { productEnvironment: { product: { namespace: $ns } } }
135+
where: { OR: [
136+
{ productEnvironment: { product: { namespace_in: $nsList } } },
137+
{ application: { namespace_in: $nsList } }
138+
] }
135139
) {
136140
id
137141
name
@@ -145,6 +149,7 @@ export async function getAccessRequestsByNamespace(
145149
application {
146150
name
147151
appId
152+
namespace
148153
}
149154
requestor {
150155
username
@@ -154,21 +159,24 @@ export async function getAccessRequestsByNamespace(
154159
appId
155160
flow
156161
product {
162+
namespace
163+
openapiSpecs
157164
name
158165
}
159166
}
160167
serviceAccess {
161168
id
162169
consumer {
163170
username
171+
tags
164172
}
165173
}
166174
createdAt
167175
}
168176
}
169177
`;
170178

171-
const result = await context.executeGraphQL({ query, variables: { ns } });
179+
const result = await context.executeGraphQL({ query, variables: { nsList } });
172180
logger.debug('Query [getAccessRequestsByNamespace] result %j', result);
173181
return result.data.allAccessRequests;
174182
}

src/services/report/data/consumer-requests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export async function getConsumerRequests(
2929
): Promise<ReportOfConsumerRequest[]> {
3030
const dataPromises = namespaces.map(
3131
async (ns): Promise<ReportOfConsumerRequest[]> => {
32-
const requests = await getAccessRequestsByNamespace(ksCtx, ns.name);
32+
const requests = await getAccessRequestsByNamespace(ksCtx, [ ns.name ]);
3333

3434
// services
3535
let data: ReportOfConsumerRequest[] = [];

src/test/integrated/keystonejs/accessRequest.ts

Lines changed: 61 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import {
3636
addAccessRequest,
3737
collectCredentials,
3838
getAccessRequest,
39+
getAccessRequestsByNamespace,
3940
} from '../../../services/keystone/access-request';
4041
import { createApplication } from '../../../services/keystone/application';
4142
import {
@@ -66,54 +67,66 @@ import {
6667
authentication: { item: identity },
6768
});
6869

69-
// o(await getOrganizations(ctx));
70-
const app = await createApplication(ctx, {
71-
name: 'App ' + new Date().toISOString(),
72-
description: 'App Desc',
73-
ownerId: userId,
74-
});
75-
76-
const controls = {
77-
clientName: app.name,
78-
subjectDn: 'CN=my-site',
79-
//defaultClientScopes: [],
80-
optionalClientScopes: ['user/Test1'],
81-
};
82-
83-
const accessRequestData = {
84-
acceptLegal: false,
85-
additionalDetails: 'here is some additional details',
86-
controls: JSON.stringify(controls),
87-
name: 'Sample API FOR Cope, Aidan CITZ:EX',
88-
productEnvironmentId: '13',
89-
requestor: userId,
90-
} as any;
91-
92-
accessRequestData.applicationId = app.id;
93-
94-
const result = await addAccessRequest(ctx, accessRequestData);
95-
o(result);
96-
97-
const creds = await collectCredentials(ctx, result.id);
98-
const credDetails = JSON.parse(creds.credential);
99-
o(credDetails);
100-
101-
const request = await getAccessRequest(ctx, result.id);
102-
o(request);
103-
104-
const labels = [
105-
{ labelGroup: 'sdx-member', values: ['/MIN/CITZ'] },
106-
{ labelGroup: 'sdx-res-locator', values: ['/LAB/MIN/CITZ/MYSVC-API'] },
107-
{ labelGroup: "application", values: [app.name] }
108-
];
109-
110-
await saveConsumerLabels(ctx, ns, request.serviceAccess.consumer.id, labels);
111-
112-
// const revoke = await revokeAllConsumerAccess(ctx, ns, request.serviceAccess.id);
113-
// o(revoke);
114-
115-
// const revoke = await deleteServiceAccess(ctx, request.serviceAccess.id);
116-
// o(revoke);
70+
if (false) {
71+
// o(await getOrganizations(ctx));
72+
const app = await createApplication(ctx, {
73+
name: 'App ' + new Date().toISOString(),
74+
description: 'App Desc',
75+
ownerId: userId,
76+
});
77+
78+
const controls = {
79+
clientName: app.name,
80+
subjectDn: 'CN=my-site',
81+
//defaultClientScopes: [],
82+
optionalClientScopes: ['user/Test1'],
83+
};
84+
85+
const accessRequestData = {
86+
acceptLegal: false,
87+
additionalDetails: 'here is some additional details',
88+
controls: JSON.stringify(controls),
89+
name: 'Sample API FOR Cope, Aidan CITZ:EX',
90+
productEnvironmentId: '13',
91+
requestor: userId,
92+
} as any;
93+
94+
accessRequestData.applicationId = app.id;
95+
96+
const result = await addAccessRequest(ctx, accessRequestData);
97+
o(result);
98+
99+
const creds = await collectCredentials(ctx, result.id);
100+
const credDetails = JSON.parse(creds.credential);
101+
o(credDetails);
102+
103+
const request = await getAccessRequest(ctx, result.id);
104+
o(request);
105+
106+
const labels = [
107+
{ labelGroup: 'sdx-member', values: ['/MIN/CITZ'] },
108+
{ labelGroup: 'sdx-res-locator', values: ['/LAB/MIN/CITZ/MYSVC-API'] },
109+
{ labelGroup: 'application', values: [app.name] },
110+
];
111+
112+
await saveConsumerLabels(
113+
ctx,
114+
ns,
115+
request.serviceAccess.consumer.id,
116+
labels
117+
);
118+
119+
// const revoke = await revokeAllConsumerAccess(ctx, ns, request.serviceAccess.id);
120+
// o(revoke);
121+
122+
// const revoke = await deleteServiceAccess(ctx, request.serviceAccess.id);
123+
// o(revoke);
124+
}
125+
126+
if (true) {
127+
const result = await getAccessRequestsByNamespace(ctx, [ns]);
128+
o(result);
129+
}
117130

118131
// const serviceAccess = await getOpenAccessRequestsByConsumer(
119132
// ctx,

0 commit comments

Comments
 (0)