Skip to content

Commit 37433cc

Browse files
committed
wip: adding more tests
1 parent 0e19a2b commit 37433cc

File tree

1 file changed

+76
-9
lines changed

1 file changed

+76
-9
lines changed

components/server/src/auth/auth-provider-service.spec.db.ts

Lines changed: 76 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66

77
import { TypeORM } from "@gitpod/gitpod-db/lib";
8-
import { Organization, User } from "@gitpod/gitpod-protocol";
8+
import { AuthProviderInfo, Organization, User } from "@gitpod/gitpod-protocol";
99
import { Experiments } from "@gitpod/gitpod-protocol/lib/experiments/configcat-server";
1010
import * as chai from "chai";
1111
import { Container } from "inversify";
@@ -25,6 +25,7 @@ const expect = chai.expect;
2525

2626
describe("AuthProviderService", async () => {
2727
let service: AuthProviderService;
28+
let userService: UserService;
2829
let container: Container;
2930
let owner: User;
3031
let org: Organization;
@@ -94,13 +95,24 @@ describe("AuthProviderService", async () => {
9495
oauth: { ...expectedOrgEntry().oauth, clientSecret: "secret-123" },
9596
};
9697

98+
const addBuiltInProvider = (host: string = "github.com") => {
99+
const config = container.get<Config>(Config);
100+
config.builtinAuthProvidersConfigured = true;
101+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
102+
config.authProviderConfigs.push((<Partial<AuthProviderParams>>{
103+
host,
104+
id: "Public-GitHub",
105+
verified: true,
106+
}) as any);
107+
};
108+
97109
beforeEach(async () => {
98110
container = createTestContainer();
99111
Experiments.configureTestingClient({
100112
centralizedPermissions: true,
101113
});
102114
service = container.get(AuthProviderService);
103-
const userService = container.get<UserService>(UserService);
115+
userService = container.get<UserService>(UserService);
104116
owner = await userService.createUser({
105117
identity: {
106118
authId: "gh-user-1",
@@ -130,12 +142,7 @@ describe("AuthProviderService", async () => {
130142
});
131143

132144
it("should fail in case of conflict with built-in provider", async () => {
133-
const config = container.get<Config>(Config);
134-
config.builtinAuthProvidersConfigured = true;
135-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
136-
config.authProviderConfigs.push({
137-
host: "github.com",
138-
} as any);
145+
addBuiltInProvider();
139146

140147
const providersAtStart = await service.getAllAuthProviderParams();
141148
expect(providersAtStart).to.be.empty;
@@ -198,8 +205,68 @@ describe("AuthProviderService", async () => {
198205
const created = await service.createOrgAuthProvider(owner.id, newOrgEntry());
199206

200207
const retrieved = await service.getAuthProvider(owner.id, created.id);
201-
console.log(JSON.stringify(retrieved));
202208
expect(retrieved).to.deep.include(expectedOrgEntry());
203209
});
210+
it("should find user-level provider", async () => {
211+
const providersAtStart = await service.getAllAuthProviderParams();
212+
expect(providersAtStart).to.be.empty;
213+
214+
const created = await service.createAuthProviderOfUser(owner.id, newEntry());
215+
216+
const retrieved = await service.getAuthProvider(owner.id, created.id);
217+
expect(retrieved).to.deep.include(expectedEntry());
218+
});
219+
it("should not find org-level provider for non-members", async () => {
220+
const providersAtStart = await service.getAllAuthProviderParams();
221+
expect(providersAtStart).to.be.empty;
222+
223+
const created = await service.createOrgAuthProvider(owner.id, newOrgEntry());
224+
225+
const nonMember = await userService.createUser({
226+
identity: {
227+
authId: "gh-user-2",
228+
authName: "user2",
229+
authProviderId: "public-github",
230+
},
231+
});
232+
233+
// expecting 404, as Orgs shall not be enumerable to non-members
234+
await expectError(ErrorCodes.NOT_FOUND, service.getAuthProvider(nonMember.id, created.id));
235+
});
236+
});
237+
238+
describe.only("getAuthProviderDescriptionsUnauthenticated", async () => {
239+
it("should find built-in provider", async () => {
240+
addBuiltInProvider();
241+
242+
const providers = await service.getAuthProviderDescriptionsUnauthenticated();
243+
expect(providers).to.has.lengthOf(1);
244+
expect(providers[0].authProviderId).to.be.equal("Public-GitHub");
245+
});
246+
it("should find only built-in providers but no user-level providers", async () => {
247+
addBuiltInProvider("localhost");
248+
249+
const created = await service.createAuthProviderOfUser(owner.id, newEntry());
250+
await service.markAsVerified({ userId: owner.id, id: created.id });
251+
252+
const providers = await service.getAuthProviderDescriptionsUnauthenticated();
253+
expect(providers).to.has.lengthOf(1);
254+
expect(providers[0].host).to.be.equal("localhost");
255+
});
256+
it.only("should find user-level providers if no built-in providers present", async () => {
257+
const created = await service.createAuthProviderOfUser(owner.id, newEntry());
258+
await service.markAsVerified({ userId: owner.id, id: created.id });
259+
260+
const providers = await service.getAuthProviderDescriptionsUnauthenticated();
261+
expect(providers).to.has.lengthOf(1);
262+
expect(providers[0]).to.deep.include(<Partial<AuthProviderInfo>>{
263+
authProviderId: created.id,
264+
authProviderType: created.type,
265+
host: created.host,
266+
});
267+
268+
const oauthProperty: keyof AuthProviderEntry = "oauth";
269+
expect(providers[0]).to.not.haveOwnProperty(oauthProperty);
270+
});
204271
});
205272
});

0 commit comments

Comments
 (0)