Skip to content

Commit d366dbc

Browse files
Mssqlserver
1 parent 080bf94 commit d366dbc

File tree

2 files changed

+33
-31
lines changed

2 files changed

+33
-31
lines changed

docs/modules/mssqlserver.md

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
# MS SQL Server Module
2-
3-
[Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server) is a relational database management system developed by Microsoft. It provides a platform for efficiently storing, managing, and retrieving structured data. MSSQL offers features for data storage, retrieval, manipulation, and analysis, making it a key component in various applications ranging from small-scale projects to enterprise-level systems.
1+
# MSSQL Server
42

53
## Install
64

@@ -10,27 +8,40 @@ npm install @testcontainers/mssqlserver --save-dev
108

119
## Examples
1210

11+
These examples use the following libraries:
12+
13+
- [mssql](https://www.npmjs.com/package/mssql)
14+
15+
npm install mssql
16+
npm install @types/mssql
17+
18+
Choose an image from the [container registry](https://mcr.microsoft.com/en-us/artifact/mar/mssql/server) and substitute `IMAGE`.
19+
1320
!!! warning "EULA Acceptance"
14-
Due to licencing restrictions you are required to accept an EULA for this container image. To indicate that you accept the MS SQL Server image EULA, call the `acceptLicense()` method.
21+
Due to licencing restrictions you are required to accept an EULA for this container image. To indicate that you accept the MS SQL Server image EULA, call the `acceptLicense()` method.
1522

1623
Please see the [`microsoft-mssql-server` image documentation](https://hub.docker.com/_/microsoft-mssql-server#environment-variables) for a link to the EULA document.
1724

18-
<!--codeinclude-->
19-
[Connect and execute query:](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:connect
20-
<!--/codeinclude-->
25+
### Execute a query
2126

2227
<!--codeinclude-->
23-
[Connect and execute query using URI:](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:uriConnect
28+
[](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:mssqlConnect
2429
<!--/codeinclude-->
2530

31+
### Connect via URI
32+
2633
<!--codeinclude-->
27-
[Connect and execute query using a valid custom password:](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:validPassword
34+
[](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:mssqlUriConnect
2835
<!--/codeinclude-->
2936

37+
### With password
38+
3039
<!--codeinclude-->
31-
[Throw error with an invalid password:](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:invalidPassword
40+
[](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:mssqlValidPassword
3241
<!--/codeinclude-->
3342

43+
### With different edition
44+
3445
<!--codeinclude-->
35-
[Use a different edition:](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:expressEdition
46+
[](../../packages/modules/mssqlserver/src/mssqlserver-container.test.ts) inside_block:mssqlExpressEdition
3647
<!--/codeinclude-->

packages/modules/mssqlserver/src/mssqlserver-container.test.ts

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { MSSQLServerContainer } from "./mssqlserver-container";
55
const IMAGE = getImage(__dirname);
66

77
describe("MSSqlServerContainer", { timeout: 180_000 }, () => {
8-
// connect {
98
it("should connect and return a query result", async () => {
9+
// mssqlConnect {
1010
await using container = await new MSSQLServerContainer(IMAGE).acceptLicense().start();
1111

1212
const sqlConfig: config = {
@@ -15,27 +15,20 @@ describe("MSSqlServerContainer", { timeout: 180_000 }, () => {
1515
database: container.getDatabase(),
1616
server: container.getHost(),
1717
port: container.getPort(),
18-
pool: {
19-
max: 1,
20-
min: 0,
21-
idleTimeoutMillis: 30000,
22-
},
23-
options: {
24-
trustServerCertificate: true,
25-
},
18+
pool: { max: 1, min: 0, idleTimeoutMillis: 30000 },
19+
options: { trustServerCertificate: true },
2620
};
27-
2821
const connection = await sql.connect(sqlConfig);
2922

3023
const { recordset } = await connection.query`SELECT 1;`;
3124
expect(recordset).toStrictEqual([{ "": 1 }]);
3225

3326
await connection.close();
27+
// }
3428
});
35-
// }
3629

37-
// uriConnect {
3830
it("should connect and return a query result with database URI", async () => {
31+
// mssqlUriConnect {
3932
await using container = await new MSSQLServerContainer(IMAGE).acceptLicense().start();
4033

4134
const connectionString = container.getConnectionUri();
@@ -45,12 +38,13 @@ describe("MSSqlServerContainer", { timeout: 180_000 }, () => {
4538
expect(recordset).toStrictEqual([{ "": 1 }]);
4639

4740
await connection.close();
41+
// }
4842
});
49-
// }
5043

51-
// validPassword {
5244
it("should connect and return a query result with valid custom password", async () => {
45+
// mssqlValidPassword {
5346
await using container = await new MSSQLServerContainer(IMAGE).acceptLicense().withPassword("I!@M#$eCur3").start();
47+
// }
5448

5549
const connectionString = container.getConnectionUri();
5650
const connection = await sql.connect(connectionString);
@@ -60,24 +54,22 @@ describe("MSSqlServerContainer", { timeout: 180_000 }, () => {
6054

6155
await connection.close();
6256
});
63-
// }
6457

65-
// invalidPassword {
6658
it("should throw error with invalid password", async () => {
6759
const container = new MSSQLServerContainer(IMAGE).acceptLicense().withPassword("password");
6860
await expect(container.start()).rejects.toThrow(
6961
Error('Log stream ended and message "/.*Recovery is complete.*/" was not received')
7062
);
7163
});
72-
// }
7364

74-
// expressEdition {
7565
it("should start db with express edition", async () => {
66+
// mssqlExpressEdition {
7667
await using container = await new MSSQLServerContainer(IMAGE)
77-
.withWaitForMessage(/.*Attribute synchronization manager initialized*/)
7868
.acceptLicense()
7969
.withEnvironment({ MSSQL_PID: "Express" })
70+
.withWaitForMessage(/.*Attribute synchronization manager initialized*/)
8071
.start();
72+
// }
8173

8274
const { output, exitCode } = await container.exec([
8375
"/opt/mssql-tools/bin/sqlcmd",
@@ -94,5 +86,4 @@ describe("MSSqlServerContainer", { timeout: 180_000 }, () => {
9486
expect(exitCode).toBe(0);
9587
expect(output).toContain("Express Edition");
9688
});
97-
// }
9889
});

0 commit comments

Comments
 (0)