public void ConstructRequestHeaders_WithInvalidRequest_ShouldThrowArgumentNullException()
        {
            // Setup
            PlexBasicRequestHeaders request = null;
            IHeaderConstructor <PlexBasicRequestHeaders> instance = new PlexBasicHeaderConstructorService();

            // Perform
            var exception = Assert.Throws <ArgumentNullException>(() => instance.ConstructRequestHeaders(request));

            // Assert
            Assert.Equal("data", exception.ParamName);
        }
        public void ConstructRequestHeaders_WithValidRequest_ShouldReturnValidHeaders()
        {
            // Setup
            var request = new PlexBasicRequestHeaders();
            IHeaderConstructor <PlexBasicRequestHeaders> instance = new PlexBasicHeaderConstructorService();

            // Perform
            IDictionary <string, string> actual = instance.ConstructRequestHeaders(request);

            // Assert
            Assert.True(actual.ContainsKey("X-Plex-Platform"));
            Assert.True(actual.ContainsKey("X-Plex-Platform-Version"));
            Assert.True(actual.ContainsKey("X-Plex-Provides"));
            Assert.True(actual.ContainsKey("X-Plex-Client-Identifier"));
            Assert.True(actual.ContainsKey("X-Plex-Product"));
            Assert.True(actual.ContainsKey("X-Plex-Version"));

            Assert.Equal(request.Platform, actual["X-Plex-Platform"]);
            Assert.Equal(request.PlatformVersion, actual["X-Plex-Platform-Version"]);
            Assert.Equal(request.Provides, actual["X-Plex-Provides"]);
            Assert.Equal(request.ClientIdentifier, actual["X-Plex-Client-Identifier"]);
            Assert.Equal(request.Product, actual["X-Plex-Product"]);
            Assert.Equal(request.Version, actual["X-Plex-Version"]);
        }