コード例 #1
0
        public static void Validate(this GetWarzoneServiceRecord getWarzoneServiceRecord)
        {
            var validationResult = new ValidationResult();

            if (getWarzoneServiceRecord.Parameters.ContainsKey("players"))
            {
                var players = getWarzoneServiceRecord.Parameters["players"].Split(',');

                foreach (var player in players)
                {
                    if (!player.IsValidGamertag())
                    {
                        validationResult.Messages.Add("GetWarzoneServiceRecord query requires valid Gamertags (Players) to be set.");
                    }
                }
            }
            else
            {
                validationResult.Messages.Add("GetWarzoneServiceRecord query requires a Player to be set.");
            }

            if (!validationResult.Success)
            {
                throw new ValidationException(validationResult.Messages);
            }
        }
コード例 #2
0
        public async Task <WarzoneServiceRecord> GetWarzoneServiceRecord(string gamertag)
        {
            var query  = new GetWarzoneServiceRecord().ForPlayer(gamertag);
            var record = await _session.Query(query);

            return(record);
        }
コード例 #3
0
        public async Task GetWarzoneServiceRecord_InvalidGamertag(string gamertag)
        {
            var query = new GetWarzoneServiceRecord(gamertag);

            await Global.Session.Query(query);

            Assert.Fail("An exception should have been thrown");
        }
コード例 #4
0
        public void GetConstructedUri_NoParamaters_MatchesExpected()
        {
            var query = new GetWarzoneServiceRecord();

            var uri = query.GetConstructedUri();

            Assert.AreEqual("stats/h5/servicerecords/warzone", uri);
        }
コード例 #5
0
        public void GetConstructedUri_NoParamaters_MatchesExpected()
        {
            var query = new GetWarzoneServiceRecord();

            var uri = query.GetConstructedUri();

            Assert.AreEqual("stats/h5/servicerecords/warzone", uri);
        }
コード例 #6
0
        public async Task GetWarzoneServiceRecord_MissingPlayer()
        {
            var query = new GetWarzoneServiceRecord();

            await Global.Session.Query(query);

            Assert.Fail("An exception should have been thrown");
        }
コード例 #7
0
        public async Task GetWarzoneServiceRecord(string gamertag)
        {
            var query = new GetWarzoneServiceRecord()
                        .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            Assert.IsInstanceOf(typeof(WarzoneServiceRecord), result);
        }
コード例 #8
0
        public void GetConstructedUri_ForPlayer_MatchesExpected(string gamertag)
        {
            var query = new GetWarzoneServiceRecord()
                        .ForPlayer(gamertag);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/servicerecords/warzone?players={gamertag}", uri);
        }
コード例 #9
0
        public async Task GetWarzoneServiceRecord_IsSerializable(string gamertag)
        {
            var query = new GetWarzoneServiceRecord(gamertag)
                        .SkipCache();

            var result = await Global.Session.Query(query);

            SerializationUtility <WarzoneServiceRecord> .AssertRoundTripSerializationIsPossible(result);
        }
コード例 #10
0
        public async Task GetWarzoneServiceRecord(string gamertag)
        {
            var query = new GetWarzoneServiceRecord()
                .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            Assert.IsInstanceOf(typeof(WarzoneServiceRecord), result);
        }
コード例 #11
0
        public async Task GetWarzoneServiceRecord_DoesNotThrow(string gamertag)
        {
            var query = new GetWarzoneServiceRecord(gamertag)
                        .SkipCache();

            var result = await Global.Session.Query(query);

            Assert.IsInstanceOf(typeof(WarzoneServiceRecord), result);
        }
コード例 #12
0
        public void GetConstructedUri_ForPlayers_MatchesExpected(string gamertag, string gamertag2)
        {
            var query = new GetWarzoneServiceRecord()
                .ForPlayers(new List<string> { gamertag, gamertag2 });

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/servicerecords/warzone?players={gamertag},{gamertag2}", uri);
        }
コード例 #13
0
        public async Task GetWarzoneServiceRecord_IsSerializable(string gamertag)
        {
            var query = new GetWarzoneServiceRecord()
                .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            var serializationUtility = new SerializationUtility<WarzoneServiceRecord>();
            serializationUtility.AssertRoundTripSerializationIsPossible(result);
        }
コード例 #14
0
        public async Task Query_DoesNotThrow()
        {
            var query = new GetWarzoneServiceRecord("Player")
                        .SkipCache();

            var result = await _mockSession.Query(query);

            Assert.IsInstanceOf(typeof(WarzoneServiceRecord), result);
            Assert.AreEqual(_warzoneServiceRecord, result);
        }
コード例 #15
0
        public async Task GetWarzoneServiceRecord_SchemaIsValid(string gamertag)
        {
            var weaponsSchema = JSchema.Parse(File.ReadAllText(Halo5Config.WarzoneServiceRecordJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri  = new Uri(Path.GetFullPath(Halo5Config.WarzoneServiceRecordJsonSchemaPath))
            });

            var query = new GetWarzoneServiceRecord(gamertag)
                        .SkipCache();

            var jArray = await Global.Session.Get <JObject>(query.Uri);

            SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray);
        }
コード例 #16
0
        public async Task GetWarzoneServiceRecord_ForPlayers()
        {
            var gamertags = new List<string>
            {
                "Greenskull",
                "Furiousn00b"
            };

            var query = new GetWarzoneServiceRecord()
                .ForPlayers(gamertags);

            var result = await Global.Session.Query(query);

            Assert.IsInstanceOf(typeof(WarzoneServiceRecord), result);
            Assert.AreEqual(2, result.Results.Count);
        }
コード例 #17
0
        public async Task GetWarzoneServiceRecord_MissingPlayer()
        {
            var query = new GetWarzoneServiceRecord();

            try
            {
                await Global.Session.Query(query);
                Assert.Fail("An exception should have been thrown");
            }
            catch (HaloApiException e)
            {
                Assert.AreEqual((int)Enumeration.StatusCode.NotFound, e.HaloApiError.StatusCode);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception of type {0} caught: {1}", e.GetType(), e.Message);
            }
        }
コード例 #18
0
        public async Task GetWarzoneServiceRecord_ModelMatchesSchema(string gamertag)
        {
            var schema = JSchema.Parse(File.ReadAllText(Halo5Config.WarzoneServiceRecordJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri  = new Uri(Path.GetFullPath(Halo5Config.WarzoneServiceRecordJsonSchemaPath))
            });

            var query = new GetWarzoneServiceRecord(gamertag)
                        .SkipCache();

            var result = await Global.Session.Query(query);

            var json       = JsonConvert.SerializeObject(result);
            var jContainer = JsonConvert.DeserializeObject <JObject>(json);

            SchemaUtility.AssertSchemaIsValid(schema, jContainer);
        }
コード例 #19
0
        public async Task GetWarzoneServiceRecord_InvalidGamertag(string gamertag)
        {
            var query = new GetWarzoneServiceRecord()
                .ForPlayer(gamertag);

            try
            {
                await Session.Query(query);
                Assert.Fail("An exception should have been thrown");
            }
            catch (HaloApiException e)
            {
                Assert.AreEqual((int)Enumeration.StatusCode.BadRequest, e.HaloApiError.StatusCode);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception of type {0} caught: {1}", e.GetType(), e.Message);
            }
        }
コード例 #20
0
        public async Task GetWarzoneServiceRecord_SchemaIsValid(string gamertag)
        {
            var weaponsSchema = JSchema.Parse(File.ReadAllText(Config.WarzoneServiceRecordJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri = new Uri(Path.GetFullPath(Config.WarzoneServiceRecordJsonSchemaPath))
            });

            var query = new GetWarzoneServiceRecord()
                .ForPlayer(gamertag);

            var jArray = await Global.Session.Get<JObject>(query.GetConstructedUri());

            SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray);
        }
コード例 #21
0
        public async Task GetWarzoneServiceRecord_MissingPlayer()
        {
            var query = new GetWarzoneServiceRecord();

            await Global.Session.Query(query);
            Assert.Fail("An exception should have been thrown");
        }
コード例 #22
0
        public async Task GetWarzoneServiceRecord_InvalidGamertag(string gamertag)
        {
            var query = new GetWarzoneServiceRecord()
                .ForPlayer(gamertag);

            await Global.Session.Query(query);
            Assert.Fail("An exception should have been thrown");
        }
コード例 #23
0
        public void Uri_MatchesExpected(string gamertag)
        {
            var query = new GetWarzoneServiceRecord(gamertag);

            Assert.AreEqual($"https://www.haloapi.com/stats/h5/servicerecords/warzone?players={gamertag}", query.Uri);
        }
コード例 #24
0
        public async Task GetWarzoneServiceRecord_ModelMatchesSchema(string gamertag)
        {
            var schema = JSchema.Parse(File.ReadAllText(Config.WarzoneServiceRecordJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri = new Uri(Path.GetFullPath(Config.WarzoneServiceRecordJsonSchemaPath))
            });

            var query = new GetWarzoneServiceRecord()
                .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            var json = JsonConvert.SerializeObject(result);
            var jContainer = JsonConvert.DeserializeObject<JObject>(json);

            SchemaUtility.AssertSchemaIsValid(schema, jContainer);
        }
コード例 #25
0
        public async Task Query_DoesNotThrow()
        {
            var query = new GetWarzoneServiceRecord();

            var result = await _mockSession.Query(query);

            Assert.IsInstanceOf(typeof(WarzoneServiceRecord), result);
            Assert.AreEqual(_warzoneServiceRecord, result);
        }