pixelletter 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.1.0
data/lib/pixelletter.rb CHANGED
@@ -5,14 +5,45 @@ require 'restclient_with_cert'
5
5
  require 'yaml'
6
6
 
7
7
  module Pixelletter
8
- if File.exists?(File.join(File.dirname('../'), "CREDENTIALS"))
9
- f = File.join(File.dirname('../'), "CREDENTIALS")
10
- yml = YAML.load(open(f))
11
- ENV['EMAIL'] = yml['email']
12
- ENV['PASSWORD'] = yml['password']
13
- else
14
- ENV['EMAIL'] = nil
15
- ENV['PASSWORD'] = nil
8
+
9
+ ENDPOINT = {
10
+ :production => 'https://www.pixelletter.de/xml/index.php',
11
+ :sandbox => 'http://www.fakeweb.test'
12
+ }
13
+
14
+ def self.endpoint
15
+ if sandbox?
16
+ Pixelletter::ENDPOINT[:sandbox]
17
+ else
18
+ Pixelletter::ENDPOINT[:production]
19
+ end
20
+ end
21
+
22
+ def self.sandbox?
23
+ @@sandbox
24
+ end
25
+
26
+ def self.sandbox!
27
+ self.sandbox = true
28
+ end
29
+
30
+ def self.sandbox=(boolean)
31
+ @@sandbox = boolean
32
+ end
33
+
34
+ self.sandbox = false
35
+
36
+
37
+ def self.load_initial_values
38
+ if File.exists?(File.join(File.dirname('../'), "CREDENTIALS"))
39
+ f = File.join(File.dirname('../'), "CREDENTIALS")
40
+ yml = YAML.load(open(f))
41
+ ENV['EMAIL'] = yml['email']
42
+ ENV['PASSWORD'] = yml['password']
43
+ else
44
+ ENV['EMAIL'] = nil
45
+ ENV['PASSWORD'] = nil
46
+ end
16
47
  end
17
48
  end
18
49
 
@@ -2,20 +2,24 @@ module Pixelletter
2
2
  class Request < Base
3
3
  attr_required :email, :password, :agb, :widerrufsverzicht, :testmodus
4
4
 
5
- ENDPOINT = 'https://www.pixelletter.de/xml/index.php'
6
-
7
5
  def initialize(attributes = {})
8
6
  super
9
7
  end
10
8
 
11
- def request(order)
9
+ def request(order, file=nil)
12
10
  xml = build_xml(order)
13
11
  xml_file = File.join(File.dirname('../'), "pixml.xml")
14
12
  File.open(xml_file, 'w') { |file| file.write(xml) }
15
13
  upload = File.new(File.join(File.dirname('../'), "pixml.xml"), 'rb')
16
14
 
17
- response = handle_response do
18
- RestClient.post('https://www.pixelletter.de/xml/index.php', xml: upload)
15
+ if file
16
+ response = handle_response do
17
+ RestClient.post(endpoint, xml: upload, "uploadfile0" => file)
18
+ end
19
+ else
20
+ response = handle_response do
21
+ RestClient.post(endpoint, xml: upload)
22
+ end
19
23
  end
20
24
 
21
25
  File.delete(File.join(File.dirname('../'), "pixml.xml"))
@@ -53,5 +57,8 @@ module Pixelletter
53
57
  }
54
58
  end
55
59
 
60
+ def endpoint
61
+ Pixelletter.endpoint
62
+ end
56
63
  end
57
64
  end
@@ -22,10 +22,50 @@ describe Pixelletter do
22
22
  after do
23
23
  if File.exists?(File.join(File.dirname('../'), "CREDENTIALS.bak"))
24
24
  system("mv #{File.join(File.dirname('../'), "CREDENTIALS.bak")} #{File.join(File.dirname('../'), "CREDENTIALS")}")
25
- f = File.join(File.dirname('../'), "CREDENTIALS")
26
- yml = YAML.load(open(f))
27
- ENV['EMAIL'] = yml['email']
28
- ENV['PASSWORD'] = yml['password']
25
+ Pixelletter.load_initial_values
26
+ end
27
+ end
28
+ end
29
+
30
+ context 'without CREDENTIALS file' do
31
+ before do
32
+ if File.exists?(File.join(File.dirname('../'), "CREDENTIALS"))
33
+ system("mv #{File.join(File.dirname('../'), "CREDENTIALS")} #{File.join(File.dirname('../'), "CREDENTIALS.bak")}")
34
+ end
35
+ Pixelletter.load_initial_values
36
+ end
37
+
38
+ it "should set the correct ENV variables" do
39
+ ENV['EMAIL'].should eq(nil)
40
+ ENV['PASSWORD'].should eq(nil)
41
+ end
42
+
43
+ after do
44
+ if File.exists?(File.join(File.dirname('../'), "CREDENTIALS.bak"))
45
+ system("mv #{File.join(File.dirname('../'), "CREDENTIALS.bak")} #{File.join(File.dirname('../'), "CREDENTIALS")}")
46
+ Pixelletter.load_initial_values
47
+ end
48
+ end
49
+ end
50
+
51
+ describe 'ENDPOINT' do
52
+ it "should have a production value" do
53
+ Pixelletter.endpoint.should eq('https://www.pixelletter.de/xml/index.php')
54
+ end
55
+
56
+ it "should be possible to activate the sandbox" do
57
+ Pixelletter.sandbox?.should eq(false)
58
+ Pixelletter.sandbox!
59
+ Pixelletter.sandbox?.should eq(true)
60
+ end
61
+
62
+ context 'while sandboxing' do
63
+ before do
64
+ Pixelletter.sandbox = true
65
+ end
66
+
67
+ it "should give an empty value" do
68
+ Pixelletter.endpoint.should eq('http://www.fakeweb.test')
29
69
  end
30
70
  end
31
71
  end
@@ -2,6 +2,23 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe Pixelletter::Request do
5
+ before do
6
+ Pixelletter.load_initial_values
7
+ Pixelletter.sandbox!
8
+ xml = <<-XML
9
+ <?xml version="1.0" encoding="UTF-8"?>
10
+ <pixelletter version="1.1">
11
+ <response>
12
+ <result code="100">
13
+ <msg>Auftrag erfolgreich übermittelt.</msg>
14
+ <id>11954460</id>
15
+ </result>
16
+ </response>
17
+ </pixelletter>
18
+ XML
19
+
20
+ FakeWeb.register_uri(:post, "http://www.fakeweb.test", :body => xml)
21
+ end
5
22
 
6
23
  let :attributes do
7
24
  {
@@ -55,21 +72,11 @@ describe Pixelletter::Request do
55
72
  }
56
73
  end
57
74
 
58
- # <?xml version="1.0" encoding="UTF-8"?>
59
- # <pixelletter version="1.1">
60
- # <response>
61
- # <result code="100">
62
- # <msg>Auftrag erfolgreich übermittelt.</msg>
63
- # <id>11954460</id>
64
- # </result>
65
- # </response>
66
- # </pixelletter>
67
-
68
75
  it "should send a successful request" do
69
- # order = Pixelletter::TextOrder.new()
70
- pr = mock(Pixelletter::Request.new(attributes))
71
- pr.stub(:request).with(order).and_return({:value=>"100", :msg=>"Auftrag erfolgreich übermittelt.", :id=>"11954536"})
76
+ pr = Pixelletter::Request.new(attributes)
77
+
72
78
  response = pr.request(order)
79
+
73
80
  response[:value].should == '100'
74
81
  end
75
82
  end
@@ -89,10 +96,15 @@ describe Pixelletter::Request do
89
96
 
90
97
  it "should send a successful request" do
91
98
  pr = Pixelletter::Request.new(attributes)
92
- # pr.stub(:request).with(order).and_return({:value=>"100", :msg=>"Auftrag erfolgreich übermittelt.", :id=>"11954536"})
93
- response = pr.request(order)
94
- puts response.inspect
95
- # response[:value].should == '100'
99
+ if File.exists?(File.join('spec', 'files', 'test.pdf'))
100
+ pdf_file = File.new(File.join('spec', 'files', 'test.pdf'))
101
+ else
102
+ pdf_file = nil
103
+ end
104
+
105
+ response = pr.request(order, pdf_file)
106
+
107
+ response[:value].should == '100'
96
108
  end
97
109
  end
98
110
  end
@@ -24,6 +24,30 @@ describe Pixelletter::XMLBuilder do
24
24
  XML
25
25
  end
26
26
 
27
+ context 'with false as value' do
28
+ let :auth do
29
+ { auth: { email: 'email@email.de', password: 'password', agb: false, widerrufsverzicht: false, testmodus: true } }
30
+ end
31
+
32
+ it 'should create a valid xml with an <auth> block' do
33
+ b = Pixelletter::XMLBuilder.new
34
+ xml = b.create_xml(auth)
35
+
36
+ xml.should equal_xml(<<-XML)
37
+ <?xml version="1.0" encoding="UTF-8"?>
38
+ <pixelletter version="1.0">
39
+ <auth>
40
+ <email>email@email.de</email>
41
+ <password>password</password>
42
+ <agb>nein</agb>
43
+ <widerrufsverzicht>nein</widerrufsverzicht>
44
+ <testmodus>true</testmodus>
45
+ </auth>
46
+ </pixelletter>
47
+ XML
48
+ end
49
+ end
50
+
27
51
  let :order do
28
52
  { order:
29
53
  {
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,12 @@
1
1
  require 'simplecov'
2
- SimpleCov.start
2
+ SimpleCov.start do
3
+ add_filter ".bundle"
4
+ end
3
5
  require 'rspec'
4
6
  require 'rspec/autorun'
5
7
  require 'test_xml/spec'
6
8
  require 'pixelletter'
9
+ require 'fakeweb'
7
10
 
8
11
  RSpec.configure do |c|
9
12
  c.mock_with :rspec
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixelletter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: 3.1.4
85
+ version: 3.0.4
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 3.1.4
93
+ version: 3.0.4
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: rspec
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -203,6 +203,22 @@ dependencies:
203
203
  - - ~>
204
204
  - !ruby/object:Gem::Version
205
205
  version: 0.9.1
206
+ - !ruby/object:Gem::Dependency
207
+ name: fakeweb
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
206
222
  description: A simple gem to use the pixelletter.de API as there exists only an aweful
207
223
  PHP class yet.
208
224
  email: holger@5minutenpause.com