diff --git a/Library/EnvelopeFactory.ts b/Library/EnvelopeFactory.ts index 224fd6288..3ee5924b3 100644 --- a/Library/EnvelopeFactory.ts +++ b/Library/EnvelopeFactory.ts @@ -115,7 +115,9 @@ class EnvelopeFactory { private static createDependencyData(telemetry: Contracts.DependencyTelemetry & Contracts.Identified): Contracts.Data { var remoteDependency = new Contracts.RemoteDependencyData(); - remoteDependency.name = telemetry.name.length > 1024 ? telemetry.name.slice(0, 1021) + '...' : telemetry.name; + if (typeof telemetry.name === "string") { + remoteDependency.name = telemetry.name.length > 1024 ? telemetry.name.slice(0, 1021) + '...' : telemetry.name; + } remoteDependency.data = telemetry.data; remoteDependency.target = telemetry.target; remoteDependency.duration = Util.msToTimeSpan(telemetry.duration); @@ -223,7 +225,7 @@ class EnvelopeFactory { telemetry: Contracts.AvailabilityTelemetry & Contracts.Identified, ): Contracts.Data { let availabilityData = new Contracts.AvailabilityData(); - + if (telemetry.id) { availabilityData.id = telemetry.id; } else { diff --git a/Tests/Library/EnvelopeFactoryTests.ts b/Tests/Library/EnvelopeFactoryTests.ts index 865323ce8..b31ac5ae1 100644 --- a/Tests/Library/EnvelopeFactoryTests.ts +++ b/Tests/Library/EnvelopeFactoryTests.ts @@ -8,7 +8,7 @@ import Client = require("../../Library/TelemetryClient"); import Util = require("../../Library/Util"); describe("Library/EnvelopeFactory", () => { - + var properties: { [key: string]: string; } = { p1: "p1", p2: "p2", common: "commonArg" }; var mockData = { baseData: { properties: {} }, baseType: "BaseTestData" }; describe("#createEnvelope()", () => { @@ -39,7 +39,7 @@ describe("Library/EnvelopeFactory", () => { }); it("should allow tags to be overwritten", () => { - + var client = new Client("key"); var env = EnvelopeFactory.createEnvelope({name:"name"}, Contracts.TelemetryType.Event, commonproperties, client.context, client.config); assert.deepEqual(env.tags, client.context.tags, "tags are set by default"); @@ -58,6 +58,22 @@ describe("Library/EnvelopeFactory", () => { assert.equal(envelope.name, "Microsoft.ApplicationInsights.key.Event"); }); }); + + describe("#createDependencyData()", () => { + it("should accept a telemetry item without a name", () => { + assert.doesNotThrow(() => { + var envelope = EnvelopeFactory.createEnvelope({ + name: null, + data: "GET https://example.com", + duration: 123, + success: true, + resultCode: 200 + }, Contracts.TelemetryType.Dependency); + assert.equal((envelope.data as Contracts.Data).baseData.name, undefined); + }); + }); + }); + describe("#createExceptionData()", () => { var simpleError: Error; @@ -141,9 +157,9 @@ describe("Library/EnvelopeFactory", () => { it("creates data with given content", () => { var envelope = EnvelopeFactory.createEnvelope(availabilityTelemetry, Contracts.TelemetryType.Availability); var data = >envelope.data; - + assert.deepEqual(data.baseType, "AvailabilityData"); - + assert.deepEqual(data.baseData.id, availabilityTelemetry.id); assert.deepEqual(data.baseData.measurements, availabilityTelemetry.measurements); assert.deepEqual(data.baseData.success, availabilityTelemetry.success);